java web基础 --- URL重定向Filter
2015-12-26 20:24
507 查看
httpRequest.getRequestDispatcher("/helloWorld").forward(httpRequest, response);
服务器端转发,不改变浏览器端URL地址,常用
httpResponse.sendRedirect(uri);
浏览器端重定向,改变URL在浏览器地址栏
URLOverWriteFilter.java
package com.web1.util;
import java.io.IOException;
import javax.print.attribute.standard.ReferenceUriSchemesSupported;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet Filter implementation class URLOverWriteFilter
*/
@WebFilter("/URLOverWriteFilter")
public class URLOverWriteFilter implements Filter {
private FilterConfig config;
/**
* Default constructor.
*/
public URLOverWriteFilter() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//do something
String uri = "";
HttpServletRequest httpRequest = null;
if (request instanceof HttpServletRequest) {
httpRequest = (HttpServletRequest)request;
System.out.println("URL:" + httpRequest.getRequestURL().toString());
System.out.println("URI:" + httpRequest.getRequestURI().toString());
uri = httpRequest.getRequestURI();
uri = uri.replace("home.html", "helloWorld");
}
if (httpRequest.getRequestURI().indexOf("home.html") >= 0) {
/*if (response instanceof HttpServletResponse) {
HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.sendRedirect(uri);
}*/
httpRequest.getRequestDispatcher("/helloWorld").forward(httpRequest, response);
}
else{
//go to next Filter
chain.doFilter(request, response);
}
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
this.config = fConfig;
}
}
web.xml
按照filter-mapping的顺序
服务器端转发,不改变浏览器端URL地址,常用
httpResponse.sendRedirect(uri);
浏览器端重定向,改变URL在浏览器地址栏
URLOverWriteFilter.java
package com.web1.util;
import java.io.IOException;
import javax.print.attribute.standard.ReferenceUriSchemesSupported;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet Filter implementation class URLOverWriteFilter
*/
@WebFilter("/URLOverWriteFilter")
public class URLOverWriteFilter implements Filter {
private FilterConfig config;
/**
* Default constructor.
*/
public URLOverWriteFilter() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//do something
String uri = "";
HttpServletRequest httpRequest = null;
if (request instanceof HttpServletRequest) {
httpRequest = (HttpServletRequest)request;
System.out.println("URL:" + httpRequest.getRequestURL().toString());
System.out.println("URI:" + httpRequest.getRequestURI().toString());
uri = httpRequest.getRequestURI();
uri = uri.replace("home.html", "helloWorld");
}
if (httpRequest.getRequestURI().indexOf("home.html") >= 0) {
/*if (response instanceof HttpServletResponse) {
HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.sendRedirect(uri);
}*/
httpRequest.getRequestDispatcher("/helloWorld").forward(httpRequest, response);
}
else{
//go to next Filter
chain.doFilter(request, response);
}
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
this.config = fConfig;
}
}
web.xml
按照filter-mapping的顺序
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true" version="3.0"> <description> Hello World Servlet </description> <display-name>Hello World Servlet</display-name> <filter> <filter-name>Encode Filter</filter-name> <filter-class>com.web1.util.RequestEncodeFilter</filter-class> </filter> <filter-mapping> <filter-name>Encode Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>URLOverFilter Filter</filter-name> <filter-class>com.web1.util.URLOverWriteFilter</filter-class> </filter> <filter-mapping> <filter-name>URLOverFilter Filter</filter-name> <url-pattern>/home.html</url-pattern> </filter-mapping> <servlet> <servlet-name>helloWorld</servlet-name> <servlet-class>com.web1.hello.HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloWorld</servlet-name> <url-pattern>/helloWorld</url-pattern> </servlet-mapping> <servlet> <servlet-name>helloImage</servlet-name> <servlet-class>com.web1.hello.ImageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloImage</servlet-name> <url-pattern>/helloImage</url-pattern> </servlet-mapping> </web-app>
相关文章推荐
- struts2基础复习
- SpringMVC架构
- java.exe 和 javaw.exe 的区别
- 理解Spring框架---利用,xml,java反射简单实现Spring
- java根据IP地址获取本地定位
- Java加入背景音乐
- 大话设计模式之外观模式(Java版实现) 买股票还是买基金在此揭晓
- php eclipse 如何修改php文件创建时默认样式
- 【java基础】引用类型数组初始化中,setter和getter函数空指针问题
- Win7下用Eclipse远程连接Hadoop进行开发
- 【JAVA笔记——道】并发编程CAS算法
- java取出一组中文每个汉字的首字母 如 :中国 zg
- Java之关于Serialization
- Spring加载resource时classpath*:与classpath:的区别
- spring注入properties属性配置
- 记JAVA的二三事(1)——"==","引用"
- [Java VM 系列] GC原理学习
- java web基础 --- Filter
- MyEclipse Java Web 调试
- java中如何输入数字串,过滤掉逗号,把他们放入数组