java吧 关注:1,293,962贴子:12,826,976

Hibernate.06 JSP Filter

只看楼主收藏回复

要求是验证用户在访问某些页面的时候,判断用户是否已经登录。
如果登录则允许访问。
否则跳转到登录页面。
ps:这是我刚完成的一章的作业。


1楼2012-09-10 21:33回复
    加油


    IP属地:北京2楼2012-09-10 21:34
    回复
      2026-01-08 22:52:49
      广告
      不感兴趣
      开通SVIP免广告
      友情帮顶



      IP属地:江苏3楼2012-09-10 21:34
      回复
        1.打开myeclipse右键新建一个web项目
        并且取名为FilterDemo
        如下图:


        4楼2012-09-10 21:37
        回复
          2.1
          新建一个登录页面(login.jsp)
          2.2
          在index.jsp页面中定向到登录页面中。
          2.3
          在WebRoot目录下面新建一个包(test)
          并且在test包目录下面添加一张test.jsp
          如下图所示:

          


          5楼2012-09-10 21:43
          回复
            3.在src目录下面新建一个包(com.bean(什么都行))
            添加一个class类(EncodingFilter)
            注意:本类是用来设置编码。
            添加一个class类(SecurityFilter(重点))
            注意:本类是用来判断,当用户在访问某些页面的时候是否已经登录(等)...
            ps:我只是用来完成判断用户是否登录。


            6楼2012-09-10 21:48
            回复



              7楼2012-09-10 21:50
              回复
                4.
                开始编码
                4.1
                EncodingFilter类implements实现接口import javax.servlet.Filter;
                在doFilter方法中设置编码.
                request.setCharacterEncoding("UTF-8");
                response.setCharacterEncoding("UTF-8");
                //放他走
                chain.doFilter(request, response);
                如下图:

                


                8楼2012-09-10 21:54
                回复
                  2026-01-08 22:46:49
                  广告
                  不感兴趣
                  开通SVIP免广告
                  加油


                  9楼2012-09-10 21:55
                  回复
                    4.2(重点)
                    EncodingFilter类implements实现接口import javax.servlet.Filter;
                    //在doFilter类中完成判断
                    //1.构建request和response变量
                    HttpServletRequest req=(HttpServletRequest)request;
                    HttpServletResponse res=(HttpServletResponse)response;
                    //2.构建session对象
                    HttpSession session = req.getSession(true);
                    //3.从session里取到用户名信息
                    String username=(String)session.getAttribute("username");
                    //4.进行判断用户是否已经登录
                    if(username==null || "".equals(username)){
                    //如果没有登录则返回到登录页面
                    res.sendRedirect("../login.jsp");
                    }else{
                    //已经登录则继续进行请求
                    chain.doFilter(req, res);
                    }


                    10楼2012-09-10 21:58
                    回复


                      IP属地:法国11楼2012-09-10 21:59
                      回复
                        如图:



                        12楼2012-09-10 22:00
                        回复
                          5.在web.xml配置文件添加filter进去
                          让它生效。
                          5.1
                          在web.xml添加如下代码
                          <!-- 使用的过滤器 -->
                          <filter>
                          <filter-name>EncodingFilter</filter-name>
                          <filter-class>com.bean.EncodingFilter</filter-class>
                          </filter>
                          <!-- 服务器把哪些请求交给过滤器处理。 -->
                          <filter-mapping>
                          <filter-name>EncodingFilter</filter-name>
                          <url-pattern>/*</url-pattern>
                          </filter-mapping>
                          <!--/表示根路径,*(星号)代表所有请求,加在一起就变成了根路径下的所有请求。
                          这样,所有的请求都会先被EncodingFilter拦截,并在请求里设置上指定的编码。 -->
                          <filter>
                          <filter-name>SecurityFilter</filter-name>
                          <filter-class>com.bean.SecurityFilter</filter-class>
                          </filter>
                          <filter-mapping>
                          <filter-name>SecurityFilter</filter-name>
                          <!--这里代表的是在test目录下面所有操作-->
                          <url-pattern>/test/*</url-pattern>
                          </filter-mapping>
                          


                          13楼2012-09-10 22:08
                          回复



                            14楼2012-09-10 22:09
                            回复
                              2026-01-08 22:40:49
                              广告
                              不感兴趣
                              开通SVIP免广告
                              5.2
                              在src目录下面新建一个包(com.servlet(放servlet的地方))
                              添加一个Servlet(LoginAction)
                              编写查询代码:
                              HttpSession session = request.getSession(true);
                              System.out.println(request.getParameter("username"));
                              if (request.getParameter("username").equals("test")) {
                              session.setAttribute("username", request.getParameter("username"));
                              request.getRequestDispatcher("test/test.jsp").forward(request, response);
                              }else{
                              request.setAttribute("logErr", "用户名不正确!");
                              request.getRequestDispatcher("login.jsp").forward(request, response);
                              }
                              ps:我这里只是判断是否登录而已。
                              因此只要用户名为test就可以了。
                              实际中应该从数据库中查询。


                              15楼2012-09-10 22:13
                              回复