Java Web开发中关于页面权限的控制

在java web开发中,有时会遇到这样的情况:设计一个简单的注册登录系统,用户通过登录,如果登录成功可以进入相关页面,但是如果不设置页面权限的话,用户可以直接输入登录之后的页面的地址就可以访问,这违背了开发的初衷。

     对于这个问题的解决办法,自己在网上看了下,在这里总结一下:

    

     第一种方法:request方法

              ServletActionContext.getRequest().setAttribute("Login","true");

      对于登录系统而言,用户只需登录一次之后,就可以访问这个系统中的其他页面。显然,用request是不够的。

    

     第二种方法:Session方法

             ServletActionContext.getRequest().getSession(true).setAttribute("Login","true");
      用Session方法,用户登录之后在整个会话过程都有效。

              在jsp页面,可以在jsp页面的开头写一个验证:

            <%
                 if(request.getAttribute("Login")!=null){
                       String message=(String)request.getAttribute("Login");
                       if(!message.equals("true"))
                       //如果登录标志不为true则跳转回登录页面
                       response.sendRedirect("/login.jsp");
                 }
            %>

    

    第三种方法:通过过滤器Filter实现权限验证

[java] view plain copy
  1. public void doFilter(ServletRequest request, ServletResponse response,  
  2.         FilterChain chain) throws IOException, ServletException {  
  3.     // TODO Auto-generated method stub  
  4.     HttpServletRequest req = (HttpServletRequest) request;  
  5.     HttpServletResponse res = (HttpServletResponse) response;  
  6.   
  7.     HttpSession session = req.getSession(true);  
  8.   
  9.     // 从session里取的用户名信息  
  10.     String did = (String) session.getAttribute("did");  
  11.   
  12.     // 判断如果没有取到用户信息,就跳转到登陆页面  
  13.     if (did == null || "".equals(did)) {  
  14.         // 跳转到登陆页面  
  15.         res.sendRedirect("http://" + req.getHeader("Host") + "/servletProj/login.html");  
  16.     } else {  
  17.         // 已经登陆,继续此次请求  
  18.         chain.doFilter(request, response);  
  19.     }  
  20. }  

  在web.xml文件中需要对Filter作如下配置:

[xhtml] view plain copy
  1. <!-- 如果是在某个jsp页面需要登录验证 -->    
  2.   <filter>   
  3.     <filter-name>rights</filter-name>   
  4.     <filter-class>com.pfumin.filter.RightsFilter</filter-class>   
  5.   </filter>   
  6.   
  7.   <filter-mapping>   
  8.     <filter-name>rights</filter-name>   
  9.     <url-pattern>/success.html</url-pattern>   
  10.   </filter-mapping>   
  11.   
  12. <!-- 如果是在某个目录(比如说a/目录)下的所有文件都需要登录验证 --><!--   
  13.  <filter>   
  14.     <filter-name>right</filter-name>   
  15.     <filter-class>com.pfumin.filter.RightsFilter</filter-class>   
  16.   </filter>   
  17.   
  18.   <filter-mapping>   
  19.     <filter-name>right</filter-name>   
  20.     <url-pattern>/a/**//*</url-pattern>   
  21.   </filter-mapping>   
  22.   -->  


你可能感兴趣的:(java,web开发,页面权限控制)