过滤器Filter的使用(以登录为例子)
2017-05-22 16:02
483 查看
使用过滤器步骤:
(1)在web.xml文件中添加过滤器(以下例子是过滤多个请求)
(2)过滤器类
注:这个主要的作用是将过滤前的地址记录下来,登录成功之后跳转到过滤前的页面
(3)登录页面的form表单代码
(4)登录表单提交后通过action跳到控制层,并根据情况跳到不同的地方
(1)在web.xml文件中添加过滤器(以下例子是过滤多个请求)
<!-- 用户登录过滤 --> <filter> <filter-name>loginFilter</filter-name> <filter-class>com.learning.filter.loginFilter</filter-class> </filter> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/classes/classesPageInfo.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/note/notePageInfo.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/ask/asksPageInfo.do</url-pattern> </filter-mapping>
(2)过滤器类
package com.learning.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class loginFilter implements Filter{ private String encoding; @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; HttpSession session = request.getSession(); String loginName = (String) session.getAttribute("loginName"); //判断当前用户是否已经登录,若未登录跳到登录页面 if (loginName == null || loginName=="") { String goUrl = request.getRequestURL().toString() + "?" +request.getQueryString().toString(); session.setAttribute("goUrl", goUrl); request.getRequestDispatcher("/user/log.jsp").forward(request, response); return ; } else { filterChain.doFilter(req, resp); } } @Override public void init(FilterConfig filterConfig) throws ServletException { encoding = "utf-8"; } }
注:这个主要的作用是将过滤前的地址记录下来,登录成功之后跳转到过滤前的页面
String goUrl = request.getRequestURL().toString() + "?"+request.getQueryString().toString(); session.setAttribute("goUrl", goUrl);
(3)登录页面的form表单代码
<form action="<%=path%>person/dologin.do" name="loginform" accept-charset="utf-8" id="login_form" class="loginForm" method="post"> <input type="hidden" name="did" value="0" /> <input type="hidden" name="to" value="log" /> <div class="uinArea" id="uinArea"> <label class="input-tips" for="u">账号:</label> <div class="inputOuter" id="uArea"> <input type="text" id="u" name="username" class="inputstyle" /> </div> </div> <div class="pwdArea" id="pwdArea"> <label class="input-tips" for="p">密码:</label> <div class="inputOuter" id="pArea"> <input type="password" id="p" name="password" class="inputstyle" /> </div> </div> <div style="padding-left:50px;margin-top:20px;"> <input type="submit" value="登 录" style="width:150px;" class="button_blue" /> </div> </form>
(4)登录表单提交后通过action跳到控制层,并根据情况跳到不同的地方
// 用户登录 @RequestMapping("/dologin.do") public String doLogin(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { Map param = new HashMap(); param.put("loginName", username); param.put("loginPwd", password); // 判断用户是否存在 User user = personServiceImpl.findUserInfo(param); session.setAttribute("loginName", user.getLoginName()); session.setAttribute("userPower", user.getUserPower()); String goUrl = (String) session.getAttribute("goUrl"); if (goUrl != null) { return "redirect:" + goUrl; } return "redirect:/mainpage/tomainpage.do"; }
相关文章推荐
- JAVAWEB开发之Servlet Filter(过滤器)详解包括post和get编码过滤器、URL访问权限控制、自动登录。以及装饰模式的使用
- Revit API 开发 (3): 一个使用过滤器(filter)的例子
- 过滤器[登录+编码]filter在程序中的使用
- 过滤器[登录+编码]filter在程序中的使用
- 基于Filter的简单登录过滤器
- Filter-过滤器的使用详解
- 使用Servlet过滤器实现用户登录验证
- 使用Servlet过滤器实现用户登录验证
- filter[过滤器]的使用大全
- filter[过滤器]使用大全
- android使用输入过滤器InputFilter约束用户输入
- QueryFilter.SubFields的使用例子
- servlet过滤器Filter入门(转,有自己的例子)
- 通用的用户登录过滤器(SessionFilter)
- 设置不使用缓存的过滤器(ClearCacheFilter)
- 最简单使用的配置登录拦截器(过滤器)的方法(SSH)
- 使用Filter进行 过滤非法登录用户
- 使用过滤器(Filter)Hibernate Session 延时加载 (一对多关系)
- 使用cppwebbrowser自动填入账号和密码并且登录的简单例子
- 使用过滤器--为登录模块提供安全保护