A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2018-6-15 15:50  /  2905 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

颜林琳

Filter过滤器:
        1.作用:拦截从客户端向服务器发送的请求.(过滤器是在服务器中,在客户端向服务器发送请求时,还没到达目标资源时进行拦截)
        2.应用: 1. IP的过滤 2.敏感词过滤 3.自动登录 4.增强request的方法
        3.FilterChain:过滤链(过滤链中的过滤执行顺序和<filter-mapping>的配置顺序有关)
                doFilter(request,response); -- 放行,放行到下一个过滤器中,如果没有下一个过滤器,到达目标资源.
        4.FilterConfig:了解
                1.getFilterName()                        获取过滤器名称
                2.getInitParameter(String name)                获得初始化参数
                3.getInitParameterName(String name)        获取初始化参数名称
                4.getServletContext()                        获取ServletContext
        5.Filter配置:
                在filter的配置中若不配<url-patten>就配置<Servlet-name>进行配置根据Servlet名称拦截Servlet
                <dispatcher>的配置:
                        1.request:        默认值 (拦截请求)
                        2.forward:        转发        (拦截转发)
                        3.include:        包含
                        4.error:        错误页面跳转(全局错误页面)

基本的登录:
        Servlet中:
        1.接收参数
                request.getParameterMap();
        2.封装数据
                BeanUtils.populate(new User(),map)
        3.调用业务层处理数据
                UserService userService=new UserService();
                User existUser=userService.login(user);
        4.页面跳转
                判断用户是否存在
                    1.不存在,登录失败
                        向页面发送一个错误信息
                        request.setAttribute("msg","登录失败,用户名或密码有误!");
                        使用转发,跳回到登录页面
                        request.getRequestDispatcher("/login.jsp").forward(request, response);
                    2.存在,登录成功
                        将其值存入session中
                        request.getSession().setAttribute("existUser", existUser);
                        使用重定向到首页
                        response.sendRedirect(request.getContextPath()+"/index.jsp");
       
登录成功后再页面显示,登录的用户:
                                <c:if test="${empty existUser }">
                                                <li><a href="${pageContext.request.contextPath}/login.jsp">登录</a></li>
                                                <li><a href="register.htm">注册</a></li>
                                                </c:if>
                                <c:if test="${not empty existUser }">
                                                <li>您好,${existUser.nickname }</li>
                                                <li><a href="#">退出</a></li>
                                                </c:if>
自动登录:
        1.在页面"自动登录"的复选框,添加个name="autoLogin",value="true"
        2.在Servlet的判断登录成功后下边编写自动登录的代码
                1.记住用户名和密码:
                        获取复选框名称:
                        String autoLogin = request.getParameter("autoLogin");
                2.判断复选框是否被选中:
                        if("true".equals(autoLogin)){
                                将获取到的数据存到cookie中,携带到浏览器中
                                Cookie cookie=new Cookie("autoLogin", existUser.getUsername()+"#"+existUser.getPassword());
                               
                                cookie.setPath("/day23");
                                cookie.setMaxAge(60 * 60 * 24 * 7);
                                response.addCookie(cookie);
                                }
        3.自动登录过滤器:
                1.获取session
                2.判断session中是否有用户信息
                        1.有,放行
                        2.没有,就要到cookie中获取
                                1.cookie中没有,放行
                                2.cookie中有,到数据库中查询用户信息
                                        1.没有查询到,放行
                                        2.有,将信息存到session中,放行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马