Servlet实现请求过滤

    技术2022-05-19  29

    需求:当用户访问时,我们通过用户登录后才能进入系统。那在这里有问题产生了:用户不老实(不按常规出牌),首先就输入http://xxxx:xx/xxxx/index[.xxxx],如此这般,我们开发人员都知道,我们系统通常都要记录用户的状态(session),其他页面就要用到存放在session中的用户信息。这样用户访问index页面,岂不是要报程序员最头疼的nullpointexception,用户看到的当然就是页面500错误了。这样对用户的印象和体验就不乐观了,客户至上,我们也不允许出现这样的问题。

     

    上面是分析问题,下面则是解决问题。

     

    解决问题:

    解决方案:

         于是,我自然而然的想到了servlet的过滤器,通过对用户session进行判断,实现请求控制。

    具体实现:

         1、实现filter接口,代码片段:

     HttpServletRequest httpRequest = (HttpServletRequest)request; HttpServletResponse httpResponse = (HttpServletResponse)response; HttpSession session = httpRequest.getSession(); if (session.getAttribute("user") == null) { //System.out.println("用户session为空"); httpResponse.sendRedirect("login.jsp"); return; } else { filterChain.doFilter(request, response); }

    2、配置web.xml,代码片段:

    <filter> <filter-name>RequestFilter</filter-name> <filter-class>com.filter.RequestFilter</filter-class> </filter> <filter-mapping> <filter-name>RequestFilter</filter-name> <url-pattern>/index.jsp</url-pattern> </filter-mapping>

    配置完成,这样用户在未登录的情况下,访问首页,系统会自动跳转到登录页面进行登录后访问。


    最新回复(0)