//过滤器,设置编码
<!-- web.xml -->
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>com.v512.guestbook.AuthenticationFilter</filter-class>
<init-param>
<param-name>url</param-name>
<param-value>/admin/login.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>/admin/secure/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.v512.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
public class AuthenticationFilter implements Filter {
String url="/";
public void init(FilterConfig config) throws ServletException {
url=config.getInitParameter("url");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
//request
HttpServletRequest req =(HttpServletRequest)request;
//response
HttpServletResponse res =(HttpServletResponse)response;
//session
HttpSession session=req.getSession();
//如果不是用户,则指定跳转路径
if(session.getAttribute("guestbook.admin.username")==null){
res.sendRedirect(req.getContextPath()+url);
return ;
}
chain.doFilter(request, response);
}
public void destroy() {
}
}
public class CharacterEncodingFilter implements Filter {
//初始化
private FilterConfig config;
//编码
private String encoding = "ISO8859_1";
/**
* 初始化方法
*/
public void init(FilterConfig config) throws ServletException {
this.config = config;
//获得初始化编码参数
/**
* <init-param>
* <param-name>encoding</param-name>
* <param-value>UTF-8</param-value>
* </init-param>
*/
String s = config.getInitParameter("encoding");
//不为空这设置
if (s != null) {
encoding = s;
}
}
/**
* 过滤器方法
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//设置编码方式
request.setCharacterEncoding(encoding);
//执行下个过滤器
chain.doFilter(request, response);
}
/**
* 销毁方法
*/
public void destroy() {
config = null;
}
}
假定你的web application 名称为news,你在浏览器中输入请求路径:
http://localhost:8080/news/main/list.jsp
则执行下面向行代码后打印出如下结果:
1、 System.out.println(request.getContextPath());
打印结果:/news
2、 System.out.println(request.getServletPath());
打印结果:/main/list.jsp
3、 System.out.println(request.getRequestURI());
打印结果:/news/main/list.jsp
4、 System.out.println(request.getRealPath("/"));
打印结果: F:/Tomcat 6.0/webapps/news/test