Servlet过滤器学习记录
来源:互联网 发布:淘宝 河北邢台 羊绒 编辑:程序博客网 时间:2024/05/18 01:07
学习目标
配置一个过滤器来检查用户是否登录,若未登录则跳转到登录界面
1.首先写三个页面
1) index.jsp就一个表单,用来用户名密码接收
2) suceess.jsp登录成功
3)登录失败
2.然后写一个控制登录跳转的 Servlet
public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //取出用户名密码 String username=request.getParameter("username"); String password=request.getParameter("password"); //简单的判断处理是否为“admin”,然后跳转if("admin".equals(username) && "admin".equals(password)){//存入Session留作过滤器来判断 request.getSession().setAttribute("username", username); response.sendRedirect(request.getContextPath()+"/success.jsp");}else { response.sendRedirect(request.getContextPath()+"/failure.jsp"); } }}
3.开始写过滤器LoginFilter
public class LoginFilter implements Filter { private FilterConfig config; //用来获取过滤器的初始化参数 @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest)arg0; HttpServletResponse response=(HttpServletResponse)arg1; HttpSession session=request.getSession(); //取出配置web.xml中的初始化参数,noLogin参数则是不用过滤的页面的字符串 String noLogin=this.config.getInitParameter("noLoginPaths"); //初始化参数中也可以用来配置字符编码 String charset=this.config.getInitParameter("charset"); if(charset==null){ charset="utf-8"; } request.setCharacterEncoding(charset); if(noLogin!=null){ String[] arr=noLogin.split(";"); for(int i=0;i<arr.length;i++){ if(arr[i]==null || "".equals(arr[i])) continue; //跳过空字符串 if(request.getRequestURI().indexOf(arr[i])!=-1){ //如果初始化参数中有该页面地址,则过滤器放行,不再循环 arg2.doFilter(arg0, arg1); return; } } } if(session.getAttribute("username")!=null){ arg2.doFilter(arg0, arg1); //放行,交给Servlet处理 }else{ //不放行,跳转到登录页面 response.sendRedirect("index.jsp"); } } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub this.config=arg0;//fiter的初始化参数 }}
4.配置web.xml 这一步里面有过滤器的初始化参数的设置
<servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/servlet/LoginServlet</url-pattern> </servlet-mapping> <filter> <filter-name>LoginFilter</filter-name> <filter-class>filter.LoginFilter</filter-class> <init-param> <param-name>noLoginPaths</param-name> <param-value> index.jsp;failure.jsp;LoginServlet </param-value> </init-param> <init-param> <param-name>charset</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
完成之后输入其他一些地址测试一下,只要未登录,或者非正常跳转到success.jsp都会直接跳转到登录界面了。
0 0
- Servlet过滤器学习记录
- Servlet 过滤器 学习资料
- servlet过滤器学习笔记
- Servlet学习(四)Servlet过滤器学习
- 传智播客学习之Servlet过滤器
- AngularJS学习记录-过滤器(自定义过滤器)
- 学习记录 监听器与过滤器
- servlet学习记录
- servlet 学习记录
- JAVA WEB学习笔记-Servlet过滤器
- JSP学习笔记--Servlet过滤器
- 关于Servlet和过滤器、监听器的学习
- javaee学习之路(六)Servlet过滤器
- servlet——filter(过滤器)学习
- JavaWeb学习篇之----Servlet过滤器Filter
- 后台开发学习——Servlet过滤器
- 【Java学习20170427】Servlet过滤器和监听器
- servlet 过滤器
- hdu2266 How Many Equations Can You Find
- HTTP总结
- P1071 潜伏者
- FreeRTOS系列第6篇---FreeRTOS内核配置说明
- 调整评价函数
- Servlet过滤器学习记录
- 基于java(加eclipse)的OpenCV学习之一____环境搭建
- Android PopupWindow详解
- 胜利局面中的强制过程
- CI框架源码解析五之钩子类文件Hooks.php
- android_跑马灯
- Android Service完全解析
- 区别getElementByID,getElementsByName,getElementsByTagName
- FreeRTOS系列第7篇---Cortex-M内核使用FreeRTOS特别注意事项