l35767166171 2013-01-17 20:46
浏览 488
已采纳

web项目 不允许没登录的进入系统页面

开发web项目的时候,要设置已经登录的用户才能进入系统,不运行直接通过页面的地址直接访问,那该怎么做?请大家支支招....

  • 写回答

10条回答 默认 最新

  • shuaijie506 2013-01-18 08:06
    关注

    你可以在系统中使用Filter技术。
    Filter 技术是servlet 2.3 新增加的功能。servlet2.3是sun公司于2000年10月发布的,使用它可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response.换种说法,filter其实是一个“servlet chaining“(servlet 链).
    [b]一个filter 包括:[/b]
    1. 在servlet被调用之前截获;
    2. 在servlet被调用之前检查servlet request;
    3. 根据需要修改request头和request数据;
    4. 根据需要修改response头和response数据;
    5. 在servlet被调用之后截获.
    你能够配置一个filter 到一个或多个servlet;单个servlet或servlet组能够被多个filter 使用。几个实用的filter 包括:用户辨认filter,日志filter,审核filter,加密filter,符号filter,能改变xml内容的XSLT filter等。
    一个filter必须实现javax.servlet.Filter。

    下面给出我项目中的未登录过滤的代码:

    [code="java"]
    public class CheckLoginFilter implements Filter
    {

    public void init(FilterConfig arg0) throws ServletException {
    }
    
    public void doFilter(ServletRequest arg0, 
            ServletResponse arg1, 
            FilterChain arg2) 
            throws IOException, ServletException {
    
        HttpServletRequest request = (HttpServletRequest)arg0;
        HttpServletResponse response = (HttpServletResponse) arg1;
        User user = (User)request.getSession().getAttribute("loginUser");
        if(user==null){
            response.sendRedirect(request.getContextPath()+"/common/noSessionPage.jsp");  //返回重新登录界面
            return;
        }
        arg2.doFilter(arg0,arg1);
    }
    

    }
    [/code]

    web.xml
    [code="xml"]

    <filter>
      <description>登录验证拦截</description>
      <filter-name>loginCheckFilter</filter-name>
      <filter-class>com.xxx.auth.CheckLoginFilter</filter-class>
     </filter>
    
    <filter-mapping>
        <filter-name>loginCheckFilter</filter-name>
        <url-pattern>/sys/*</url-pattern>
    </filter-mapping>
    
    <filter-mapping>
        <filter-name>loginCheckFilter</filter-name>
        <url-pattern>/pub/*</url-pattern>
    </filter-mapping>
    

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)