通过过滤器设置中文编码,并且设置session时,通过过滤器阻拦空值session

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);
    }

猜你喜欢

转载自blog.csdn.net/javaChengXuY/article/details/81875727