过滤器
来源:互联网 发布:淘宝休闲裤背景素材 编辑:程序博客网 时间:2024/06/04 18:50
过滤器说白了就是一个继承Filter的类.
某些java代码文件运行之前如果想做统一的操作,可以通过过滤器进行实现.
比如想对每个java代码文件进行编码:
创建一个类集成Fileter类
package com.lm.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;/** * Servlet Filter implementation class EncodeFilter */public class EncodeFilter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here HttpServletRequest request2 = (HttpServletRequest) request; HttpServletResponse response2 = (HttpServletResponse) response; request2.setCharacterEncoding("utf-8"); response2.setContentType("text/html;charset=utf-8"); // pass the request along the filter chain chain.doFilter(request2, response2); } public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub }}
之后在web.xml里面进行如下配置:
<filter> <display-name>EncodeFilter</display-name> <filter-name>EncodeFilter</filter-name> <filter-class>com.lm.filter.EncodeFilter</filter-class> </filter> <filter-mapping> <filter-name>EncodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
其中/*是代表全部(每一个)的java代码文件运行之前会先从此过滤器类走一遍,进行编码.
下面是课堂的笔记(有一点乱)
Filter: 1.概念: servlet2.3版本出现的,servlet规范 servlet,listener ,filter 进行过滤的对象 通过服务器的动态资源和静态资源的请求和响应进行拦截(过滤器) 2.作用: 通过服务器的动态资源和静态资源的请求和响应进行拦截(过滤器) 3.相关api: FilterChain:过滤器链 FilterConfig:过滤器的配置 方法doFilter(request,response) 放行 3.入门使用: 3.1 定义一个类实现Filter接口重写3个 3.2 在web.xml中注册 <filter> <filter-name></filter-name> <filter-class></filter-class> </filter> <filter-mapping> <filter-name></filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 4.生命周期: init(FilterConfig config) doFilter() destroy()在web.xml里面:<filter> <filter-name>myFilter01</filter-name> <filter-class>MyFilter01</filter-class> <init-param> <param-name>ww</param-name> <param-value>test</param-value> </init-param> </filter><filter-mapping> <filter-name>myFilter01</filter-name> <url-pattern>/*</url-pattern></filter-mapping>上面的代码意思是:有一个MyFilter01的过滤器(java类),配置一个过滤器变量名称:myFilter01这个拦截器(过滤器)可以拦截所有的程序,如果运行某个Servlet类,或者是jsp等,就会拦截住,不会让其继续执行.(注意:可以有好多个拦截器,至于当运行对应的程序时,哪个拦截器会先拦截见下面的优先级高低. 配置参数init-param 获取值config.getInitParameter(name);配置文件以键值对的方式进行配置的,这样会获取到对应的值test 5. 过滤器的路径: 5.1 <url-pattern>/*</url-pattern> 拦截所有 5.2 <url-pattern>/具体映射路径(示例:指定的servlet路径或者是jsp)</url-pattern> 拦截指定的路径(完全匹配)绝对匹配 5.3 <url-pattern>*.do(拓展名)</url-pattern> 模糊匹配, 只拦截jsp文件 5.4 <url-pattern>/list.do(拓展名)</url-pattern> 5.5 <servlet-name></servlet-name> 根据servlet的名称来拦截指定的servlet 优先级高低: <url-pattern>比<servlet-name>优先级高 只有url-pattern的优先级: 按照在web.xml中的注册顺序来决定Servlet映射的路径: 1. <url-pattern>/具体名</url-pattern> 2. <url-pattern>*.do</url-pattern> 3. <url-pattern>/具体名.do</url-pattern> 6.全局编码过滤 给所有页面设置编码。 7.自动登录:login.jsp-- LoginServlet 1.获取请求参数 对密码进行处理: 数据库中的密码就是加密过的 Update user set pwd=MD5(pwd) where uuid= 1; 登录的时候得把输入的密码进行加密后去数据库查询 MD5Utils 2.调用业务逻辑(service层)登录 --- 业务逻辑调用dao层 3.登录成功:Servlet 记住密码 勾选了自动登录的框,下一次才自动登录 1.保存用户名和密码(cookie) 用户名和密码字符串拼接,逗号分割不行,换成& 把cookie的信息响应给浏览器 response.addCookie(cookie); 2.登录的状态 (session) request.getSession().setAttribute("user",user); 4. filter //如果是进入到登录页面(login.jsp或者LoginServlet), 手动登录,完善,在登录页面需要显示用户名和密码并且调用service层登录 如果是非登录页面,且状态是未登录, 直接获取cookie存储的信息, 直接调用service登录(filter做的) session存储用户的状态信息 cookie(用户信息,放置信息泄漏要加密) 登录失败,获取错误信息存储到域对象传递给当前页面进行展示(EL表达式)
阅读全文
0 0
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 背包九讲——01背包(降维+常数级优化)
- Java基础学习之Java基本语法(2)【变量的分类】
- 算法学习2
- Codeforces Round #439 (Div. 2) C. The Intriguing Obsession 组合数学
- hibernate 基本
- 过滤器
- 第四周 项目 3
- JavaWeb中的9个隐式对象
- 前缀索引
- java设计模式---单例设计模式
- c++指针类型int *和int(*)[5]的区别
- Framework学习(七)AMS家族
- 记一次投票活动的感触
- hash算法的实现原理,hashcode的实现原理