JSP网站开发基础总结《九》(转)
Spring Boot 配置过滤器Filter及控制多个Filter的执行顺序
1、实现javax.servlet包下的Filter接口
2、@Component和@Order(可选,有多个过滤器时可添加)注解,@Order用于控制过滤器的级别,值越小级别越高
3、过滤的业务逻辑写在doFilter()方法中。
https://blog.csdn.net/wanping321/article/details/81559477
创建多个过滤器时,如果有两个以上过滤器的过滤规则相同,那么这些过滤器的执行顺序如何呢?
答案是根据我们在web.xml中声明的先后顺序进行执行,也就是先声明的先执行,后声明的后执行。
本篇属于附加篇,在之前的总结中给大家提到过一个关于登录状态验证的效果,当时是通过Session对象完成的,今天我查了一下,JSP为我们封装了一个用于过滤用的过滤器类Filter,通过它我们就可以非常轻松的完成之前的那个功能了,而且可以在很多地方使用,非常实用。废话不多说,下面开始简单为大家介绍一下JSP提供的过滤器类。
1、过滤器简介:
过滤器是什么?过滤器就是根据过滤规则对过滤源进行过滤,然后得到过滤结果。Web过滤器的是什么呢?首先Web过滤器的过滤源是用户的各种请求,过滤规则是开发人员实现制定好的,过滤结果是响应。如何理解呢?大家应该都有这样的经历,当我们想下载一个资源时,如果没有登录,这是系统就会弹出登录窗口强制我们登录;而当我们已经登录后,我们单击下载时,便不会出现强制我们登录的页面。这便是今天我们要一起学习的Web拦截器知识。
2、过滤器的工作原理:

3、过滤器的生命周期:

过滤器的初始化,我们将我们的工程添加到Tomcat后,当启动Tomcat后,系统便立即会调用过滤器的init()方法,也就是我们的工程一旦部署,我们在项目的添加的过滤器便立刻开始工作。当我们关闭Tomcat时,我们的过滤器会调用destroy()方法,结束我们的过滤监听。
4、探究过滤器的工作原理:
a、创建过滤器对象类:
public class firstFilter implements Filter {
public void destroy() {
System.out.println("Destory-----first");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain arg) throws IOException, ServletException {
System.out.println("start-----first");
arg.doFilter(request, response);//没有该方法,页面将一直处于加载状态。
System.out.println("end-----first");
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("Init-----first");
}
}
该类需要实现javax.servlet.Filter接口:

b、web.xml文件声明:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 过滤器对象声明 -->
<filter>
<filter-name>firstFilter</filter-name><!-- 过滤器名 -->
<filter-class>cn.imcook.filter.firstFilter</filter-class><!-- 指定我们新建的过滤器对象的地址 -->
</filter>
<!-- 过滤规则声明 -->
<filter-mapping>
<filter-name>firstFilter</filter-name><!-- 指定规则对于的过滤器对象 -->
<url-pattern>/*</url-pattern><!-- *:代表所有的请求 -->
<dispatcher>REQUEST</dispatcher><!-- 该处有四个值可选,默认是REQUEST -->
</filter-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
这样一行行写代码,很不方便,myeclipse为我们提供了窗口化操作,请看下面的步骤:
打开我们的web.xml文件,点击Design,进入窗口操作界面:

点击左侧的Filter,先添加一个过滤器对象:

然后再点击Filter,添加该过滤器的规则声明(Filter Mapping):

5、启动Tomcat,在地址浏览器地址栏输入我们的工程名(例如:http://localhost:8080/HelloWord/index.jsp),观察myeclipse控制台的输出。
·
以上便是我们对Filter生命周期的探究。
6、过滤重定向:
在这里我们只需要在我们创建的Filter类中稍作修改就可以完成了,那如何修改呢?我只需要在我们的doFilter()方法中添加一个重定向就可以了。
public class loginFilter implements Filter {
public void destroy() {
System.out.println("Destroy");
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
System.out.println("start-----doFilter");
//arg2.doFilter(arg0, arg1);
//重定向
HttpServletRequest requst = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
response.sendRedirect(requst.getContextPath()+"/Login.jsp");
System.out.println("end------doFilter");
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("Init");
}
}
对于JSP中关于过滤器的知识,就先为大家总结到这里,如果你对过滤器知识很感兴趣,请持续关注博客。下一篇:对个过滤器执行顺序
JSP网站开发基础总结《九》(转)的更多相关文章
- JSP网站开发基础总结《二》
有了上一篇的学习,我相信大家对于JSP一定有了一定的认识,从今天开始我们真正开启JSP模式,如果你有HTML的基础,那学起JSP来也就方便了很多了,首先JSP做为网站开发语言,它与HTML有很多相似的 ...
- JSP网站开发基础总结《一》
经过JAVASE的学习相信大家对JAVA已经不再陌生,那么JAVA都可以干什么呢?做算法.应用程序.网站开发都可以,从今天开始为大家奉上JAVAEE之JSP动态网站开发基础总结. 既然是动态网站开发, ...
- JSP网站开发基础总结《八》
JSP的学习总结到本篇已经八篇了,内容比较多,但都是实战,本篇最后为大家介绍一个小效果:百度分页.就是当我们遍历的数据对象较多时,这时我们就会看到了这个效果了,那他是如何实现的呢?下面我们就一起学习一 ...
- JSP网站开发基础总结《九》
本篇属于附加篇,在之前的总结中给大家提到过一个关于登录状态验证的效果,当时是通过Session对象完成的,今天我查了一下,JSP为我们封装了一个用于过滤用的过滤器类Filter,通过它我们就可以非常轻 ...
- JSP网站开发基础总结《十二》
前两篇已经简单为大家介绍了一下,有关Filter接口的知识,本篇就让我们以一个登录小功能,来具体实现一下过滤器的作用,便于大家掌握.具体为大家介绍一下如何使用Filter对访问进行过滤,及如何防止中文 ...
- JSP网站开发基础总结《四》
经过前几篇的摸爬滚打,下面我们就开始我们真正的数据库操作了,本篇重点在于如何在网站端编写数据库操作语句,内容不多,就是我们常见的增删改查. 0.数据库对象创建: 在JAVASE基础知识总结时,就为大家 ...
- JSP网站开发基础总结《十三》
继上一篇为大家补充过滤器类后,本篇为大家简单介绍一下如何实现验证码效果.验证码的作用是什么呢?1.防止恶意注册2.防止恶意提交3.防止盗取账户等等,总的来说验证码的存在就是为了,防止非人为的操作,不过 ...
- JSP网站开发基础总结《七》
按照计划本篇将为大家总结搜索功能的两种实现:确定搜索与模糊搜索.所谓精确搜索便是指,根据用户的输入的搜索内容,在数据库中寻找具有一一对应的关系的数据,一般都是用户在数据库中的主键值.而模糊搜索,是一种 ...
- JSP网站开发基础总结《六》
对于本篇需要总结的内容,量估计有点大,大家好好看哈,绝对全是干货,代码的已经运行测试,不存在问题,大家可以参考学习,下面开始本篇的内容. 1.添加数据到数据库: 如何用户在JSP页面的填写的信息输入到 ...
随机推荐
- 基于visual Studio2013解决C语言竞赛题之1065二维排序
题目 解决代码及点评 /* 功能:二维数组排序.设有4×5的数组M,通过排序使 M[1][1]≤M[1][2]≤...≤M[1][5]≤M[2][1]≤M[2][2]≤...≤ ...
- Fedora 17 下安装codeblocks
Fedora 17 下安装codeblocks: 1.直接从yum源安装: sudo yum install codeblocks 2.源码安装 ...
- 单选按钮易忽略的Group属性
Group就其意思就是一组的意思.就是说用于选择多个控件组合,选了TRUE后,你就可以为这组新建一个变量.把一组控件当一个控件来使用.例如多个单选按钮用group属性,这样你就可以用一个变量来管理这些 ...
- (5/9)*(f-32)与5*(f-32)/9
今天在Linux下用c语言写个小程序玩玩,主要就是根据华氏温度计算摄氏温度.公式是:摄氏度=(5/9)*(华氏度-32) 代码很简单~ #include<stdio.h> main() { ...
- .net面试题大全(有答案)
在网上找来的,希望对大家有所帮助. 1 (1)面向对象的语言具有__继承性_性._封装性_性._多态性 性. (2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或 ...
- webdynpro 下拉列表控件
现在界面上添加下拉列表的控件DropDownByKey 在context中创建新的node,和属性DP 返回界面,绑定DP到控件DropDownByKey的SelectedKey 初始方法中代码如下: ...
- Swift编程语言学习3.1排列
Swift 语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储同样类型的数据.字典尽管无序存储同样类型数据值可是须要由独有的标识符引用和寻址(就是键值对). Swift 语言里的数 ...
- php网站共享session方法(相同一级域名)
这段时间做web开发使用的是php语言 要实现从主站进入子站时无需再登录(如已登录) 使用memcache实现 方法如下 修改php.ini如下 添加 extension=php_memcache.d ...
- Swift - 自定义单元格实现微信聊天界面
1,下面是一个放微信聊天界面的消息展示列表,实现的功能有: (1)消息可以是文本消息也可以是图片消息 (2)消息背景为气泡状图片,同时消息气泡可根据内容自适应大小 (3)每条消息旁边有头像,在左边表示 ...
- Java网络编程-对象编解码方案、优劣对照
书籍推荐: 实例代码 :http://download.csdn.net/detail/jiangtao_st/7677503 watermark/2/text/aHR0cDovL2Jsb2cuY ...