• 过滤器实例---判断用户是否登录


    1.先写一个类实现Filter接口

    实现里面的doFile方法,

      -->获取Session,判断session是否有值,

        -->如果有,调用chain.doFilter(request, response);

        -->如果没有,重定向到用户登录页面.

    具体代码如下

        public void doFilter(ServletRequest request, 
                ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            //得到HttpServletRequest对象
            HttpServletRequest requ=(HttpServletRequest) request;
            //获取session中的值
            String username = (String) requ.getSession().getAttribute("username");
            //判断session中是否有值
            if(username!=null){
                //如果有值,则继续执行
                chain.doFilter(request, response);
            }else{
                //如果没有值,那麽重定向到登录页面
                HttpServletResponse respon=(HttpServletResponse) response;//得到HttpServletResponse对象
                respon.sendRedirect("/loginFilter/login.jsp");
            }
        }

    2.建一个Servlet类继承自HttpServlet

      -->重写service方法

      -->获取到JSP页面传过来的username

      -->将获取的username设置到session中

    具体代码如下:

    public class LoginServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        protected void service(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //获取JSP传过来的username
            String username= request.getParameter("username");
            //判断username是否为空
            if(username!=null){
                //username不为空,将username设置在session中
                request.getSession().setAttribute("username", username);
                request.getRequestDispatcher("/WEB-INF/views/mainpage.jsp").forward(request, response);
            }
        }
    }

    3.web.xml中的配置

           <filter>
            <filter-name>UserInfoFilter</filter-name>
            <!-- 具体写过滤器的类的全限定名称-->
            <filter-class>com.gxxy.filter.UserInfoFilter</filter-class>
        </filter>
        
        <filter-mapping>
            <filter-name>UserInfoFilter</filter-name>
            <!-- 可以配置多个url-pattern -->
            <url-pattern>/user/*</url-pattern>
            <url-pattern>/user/hello</url-pattern>
        </filter-mapping>        

    注意:有的时候,我们并不想过滤所有的请求,比如用户登录页面并不需要过滤,所以我们在配置servlet时,注释就可以这么写

    @WebServlet("/login")//登录服务器
    @WebServlet("/user/shopcart")//购物车服务器
    @WebServlet("/user/userInfo")//用户信息服务器

    我们只需要过滤/user/*即可

  • 相关阅读:
    UVA 11995
    LA 5031
    防卫导弹
    跳马问题
    UVA 11992
    POJ 3264 Balanced Lineup
    0-1背包
    石子合并
    小技巧
    Android广播中有序和无序的区别
  • 原文地址:https://www.cnblogs.com/zhang-bo/p/6516721.html
Copyright © 2020-2023  润新知