public class CharEncodingFilter implements Filter{
public void destroy() { System.out.println("CharEncodingFilter");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException { System.out.println("doFilter.........");
//中文编码请求
request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8");
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("CharEncodingFilter初始化。。。。。。。");
}
}
需要在web.xml文件总进行配置,如下
<filter>
<filter-name>charFilter</filter-name>
<filter-class>News.CharEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>charFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<url-pattern>/*</url-pattern>
这是设置路径,/*指全局代码,所有该项目下所有需要设置中文编码的都经过此处filter.
下面的是servlet代码:连接数据库,调用查找方法等。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取用户名和密码
String uname=request.getParameter("userCode");
String pwd=request.getParameter("userPassword");
Users user=new Users( uname, pwd);
UserService service=new UserServiceImpl();
List<Users> list= service.selectSQL(user);
if(null!=list){
/*此处就是将session进行了过滤在另一个
filter中进行了session判断 */ request.getSession().setAttribute("user", user);
response.sendRedirect("/news/jsp/admin/admin.jsp");
}else{
response.sendRedirect("/news/jsp/error.jsp");
}
}
下面是判断session的filter,此处过滤器判断session的好处是,在客户端之间输入页面路径访问,会阻拦,只能通过登录页面登录后跳转至主页
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest rq= (HttpServletRequest)request;
HttpServletResponse rp= (HttpServletResponse)response;
Users user=(Users)rq.getSession().getAttribute("user");
if(null==user){
rp.sendRedirect("/news/jsp/error.jsp");
}else{
chain.doFilter(request, response);
}