Servlet初始配置 监听器和过滤器
ServletContext:application范围内的参数
此所设定的参
数,在JSP网页中可以使用下列方法来取得:
${initParam.param0},
<%=application.getInitParameter("param0") %><br/>
若在Servlet可以使用下列方法来获得:
String param_name=getServletContext().getInitParameter("param0")
=this.getServletConfig().getServletContext().getInitParameter("param0")
=application.getInitParameter("param0");
使用上下文初始化参数:
1
2
3
4
5
6
7
8
|
<context-param> <param-name>param_name</param-name> <param-value>avalible during application</param-value> </context-param> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-configuration/*.xml</param-value> </context-param> |
<wiz_tmp_tag class="wiz-block-scroll">
部署在同一容器中的多个Web项目,要配置不同的webAppRootKey,web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为“webapp.root”
1
2
3
4
5
6
7
8
9
|
< context-param > < param-name >webAppRootKey</ param-name > < param-value > business.root </ param-value > </ context-param > <!—public-base应用路径 --> < context-param > < param-name >webAppRootKey</ param-name > < param-value > pubbase.root</ param-value > </ context-param > |
在web.xml中该Servlet的定义标记中,比如:
servlet范围内的参数,只能在servlet的init()方法中取得(或者通过注解配置在对应的类上:@WebServlet("/MyServlet")
System.out.println(this.getInitParameter("param1")=this.getServletConfig().getInitParameter(name));
1
2
3
4
5
6
7
8
|
<servlet> <servlet-name>TimeServlet</servlet-name> <servlet- class >com.allanlxf.servlet.basic.TimeServlet</servlet- class > <init-param> <param-name>param1</param-name> <param-value>avalible in servlet init()</param-value> </init-param> <load-on-startup> 0 </load-on-startup> //标记容器是否在启动的时候就加载这个servlet,执行init()方法,初始化参数</servlet> |
配置监听器:(启动Web容器时,自动装配ApplicationContext、log4j的配置信息。)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
< context-param > < param-name >contextConfigLocation</ param-name > < param-value >/WEB-INF/spring-configuration/*.xml</ param-value > </ context-param > < context-param > < param-name >log4jConfigLocation</ param-name > < param-value >WEB-INF/log4j.properties</ param-value > </ context-param > < context-param > < param-name >log4jRefreshInterval</ param-name > < param-value >6000</ param-value > </ context-param > <!-- Spring的log4j监听器 --> < listener > < listener-class >org.springframework.web.util.Log4jConfigListener</ listener-class > </ listener > < listener > < listener-class >org.springframework.web.context.ContextLoaderListener</ listener-class > </ listener > <!-- 与CAS Single Sign Out Filter配合,注销登录信息 --> < listener > < listener-class >com.yonyou.mcloud.cas.client.session.SingleSignOutHttpSessionListener</ listener-class > </ listener > |
配置过滤器:
Filter可认为是Servle的一种“加强版”,主要用于对用户请求request进行预处理,也可以对Response进行后处理,是个典型的处理链。使用Filter的完整流程是:Filter对用户请求进行预处理,接着将请求HttpServletRequest交给Servlet进行处理并生成响应,最后Filter再对服务器响应HttpServletResponse进行后处理。Filter与Servlet具有完全相同的生命周期,且Filter也可以通过<init-param>来配置初始化参数,获取Filter的初始化参数则使用FilterConfig的getInitParameter()。
换种说法,Servlet里有request和response两个对象,Filter能够在一个request到达Servlet之前预处理request,也可以在离开Servlet时处理response,Filter其实是一个Servlet链。以下是Filter的一些常见应用场合,创建一个过滤器,实现Filter接口。重新init(), doFilter(), destroy().
注解的方式配置:@WebFilter(filterName="FirstFilter",urlPatterns={"/index.jsp"},initParams={WWebInitParam(name="mood",value="awake")})
urlPatterns:哪些URL可以过滤,默认“/*”
initParams: 初始化哪些参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
<!--****************************过滤器配置*********************************--> <!-- 字符集过滤器 --> < filter > < filter-name >CharacterEncodingFilter</ filter-name > < filter-class >org.springframework.web.filter.CharacterEncodingFilter</ filter-class > < init-param > < param-name >encoding</ param-name > < param-value >UTF-8</ param-value > </ init-param > < init-param > < param-name >forceEncoding</ param-name > < param-value >true</ param-value > </ init-param > </ filter > <!-- 单点登出过滤器 --> < filter > < filter-name >CAS Single Sign Out Filter</ filter-name > < filter-class >com.yonyou.mcloud.cas.client.session.SingleSignOutFilter</ filter-class > </ filter > <!-- 认证过滤器 --> < filter > < filter-name >CAS Authentication Filter</ filter-name > < filter-class >com.yonyou.mcloud.cas.client.authentication.ExpandAuthenticationFilter</ filter-class > < init-param > < param-name >casServerLoginUrl</ param-name > < param-value >https://dev.yonyou.com:443/sso-server/login</ param-value > </ init-param > < init-param > <!--这里的server是服务端的IP --> < param-name >serverName</ param-name > < param-value >http://10.1.215.40:80</ param-value > </ init-param > </ filter > <!-- 验证ST/PT过滤器 --> < filter > < filter-name >CAS Validation Filter</ filter-name > < filter-class >org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</ filter-class > < init-param > < param-name >casServerUrlPrefix</ param-name > < param-value >https://dev.yonyou.com:443/sso-server</ param-value > </ init-param > < init-param > < param-name >serverName</ param-name > < param-value >http://10.1.215.40:80</ param-value > </ init-param > < init-param > < param-name >proxyCallbackUrl</ param-name > < param-value >https://dev.yonyou.com:443/business/proxyCallback</ param-value > </ init-param > < init-param > < param-name >proxyReceptorUrl</ param-name > < param-value >/proxyCallback</ param-value > </ init-param > < init-param > < param-name >proxyGrantingTicketStorageClass</ param-name > < param-value >com.yonyou.mcloud.cas.client.proxy.MemcachedBackedProxyGrantingTicketStorageImpl</ param-value > </ init-param > <!-- 解决中文问题 --> < init-param > < param-name >encoding</ param-name > < param-value >UTF-8</ param-value > </ init-param > </ filter > < filter > < filter-name >CAS HttpServletRequest Wrapper Filter</ filter-name > < filter-class >org.jasig.cas.client.util.HttpServletRequestWrapperFilter</ filter-class > </ filter > < filter > < filter-name >CAS Assertion Thread Local Filter</ filter-name > < filter-class >org.jasig.cas.client.util.AssertionThreadLocalFilter</ filter-class > </ filter > < filter > < filter-name >NoCache Filter</ filter-name > < filter-class >com.yonyou.mcloud.cas.client.authentication.NoCacheFilter</ filter-class > </ filter > <!--****************************映射关系配置********************************--> < filter-mapping > < filter-name >CharacterEncodingFilter</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > < filter-mapping > < filter-name >NoCache Filter</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > < filter-mapping > < filter-name >CAS Single Sign Out Filter</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > < filter-mapping > < filter-name >CAS Validation Filter</ filter-name > < url-pattern >/proxyCallback</ url-pattern > </ filter-mapping > < filter-mapping > < filter-name >CAS Authentication Filter</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > < filter-mapping > < filter-name >CAS Validation Filter</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > < filter-mapping > < filter-name >CAS HttpServletRequest Wrapper Filter</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > < filter-mapping > < filter-name >CAS Assertion Thread Local Filter</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > |
配置失效时间:
1
2
3
|
< session-config > < session-timeout >120</ session-timeout > </ session-config > |
1
2
3
|
< welcome-file-list > < welcome-file >index.html</ welcome-file > </ welcome-file-list ></ span >
|
Servlet初始配置 监听器和过滤器的更多相关文章
- J2EE监听器和过滤器基础
Servlet程序由Servlet,Filter和Listener组成,其中监听器用来监听Servlet容器上下文. 监听器通常分三类:基于Servlet上下文的ServletContex监听,基于会 ...
- Servlet过滤器和监听器知识总结(转)
Servlet过滤器和监听器知识总结(转) Servlet过滤器是 Servlet 程序的一种特殊用法,主要用来完成一些通用的操作,如编码的过滤.判断用户的登录状态.过滤器使得Servlet开发者能 ...
- Servlet过滤器和监听器知识总结
Servlet过滤器是 Servlet 程序的一种特殊用法,主要用来完成一些通用的操作,如编码的过滤.判断用户的登录状态.过滤器使得Servlet开发者能够在客户端请求到达 Servlet资源之前被截 ...
- solr英文使用的基本分词器和过滤器配置
solr英文应用的基本分词器和过滤器配置 英文应用分词器和过滤器一般配置顺序 索引(index): 1:空格 WhitespaceTokenizer 2:过滤词(停用词,如:on.of.a.an ...
- day58——模板继承、组件、自定义标签和过滤器、inclusion_tag、静态文件配置、url别名和反向解析、url命名空间
day58 模板相关 模板继承(母版继承) 1. 创建一个xx.html页面(作为母版,其他页面来继承它使用) 2. 在母版中定义block块(可以定义多个,整个页面任意位置) {% block co ...
- Spring Boot2(七):拦截器和过滤器
一.前言 过滤器和拦截器两者都具有AOP的切面思想,关于aop切面,可以看上一篇文章.过滤器filter和拦截器interceptor都属于面向切面编程的具体实现. 二.过滤器 过滤器工作原理 从上图 ...
- strits2初始配置总结
**************************************************************************************************** ...
- Spring拦截器和过滤器
什么是拦截器 拦截器(Interceptor): 用于在某个方法被访问之前进行拦截,然后在方法执行之前或之后加入某些操作,其实就是AOP的一种实现策略.它通过动态拦截Action调用的对象,允许开发者 ...
- 面试题:struts 拦截器和过滤器
拦截器和过滤器的区别 过滤器是servlet规范中的一部分,任何java web工程都可以使用. 拦截器是struts2框架自己的,只有使用了struts2框架的工程才能用. 过滤器在url-patt ...
随机推荐
- LL(1)语法分析器 //c++实现
#include<iostream> #include<string> #include<map> #include<vector> #include& ...
- 扰动函数和拉链法模拟HashMap的存储结构
HashMap是Map接口下面的子孙,它对外是K,V结构存储的,而内部也着自己的存储结构,它的get操作是O(1)的时间复杂度,可以说是非常快的找到目录,而添加时,也是O(1),所以在键值存储里,它成 ...
- jpaRepository findById()数据库有数据却为null
oracle中的char类型用空格自动将字段补成指定的长度, 而varchar2类型不会.大部分情况下设计表字段类型都是varchar2,今天被char坑了一次, findById()始终为空..
- NFV产品如何才能走向规模商用
作者简介:王晔,烽火通信科技股份有限公司ICT网络产品线NFV产品总监,高级工程师,研究方向为SDN\NFV\MEC\AI\光通信. 自2013年AT&T率先提出DOMAIN 2.0网络转型计 ...
- codevs——1228 苹果树
1228 苹果树 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 在卡卡的房子外面,有一棵 ...
- 将世界坐标转成NGUI坐标
将世界坐标转成NGUI坐标,这个中间须要一个屏幕坐标,可參考例如以下代码: /// <summary> /// 将世界坐标转成UI坐标 /// </summary> /// & ...
- libxml/HTMLparser.h file not found
在导入asihttprequest包时出问题导入了libxml2.dylib.可是却提示libxml/HTMLparser.h file not found. 这是由于你的开发环境默认的路径无法找到这 ...
- TListView使用方法1(转)
ListView1.Items 为标准 Tlistitems类 ListView1.Items (1)赋值 with ListView1.Items.Add do begin Caption:=cap ...
- U盘 文件被隐藏解决办法
原地址:http://www.deyi.com/thread-351635-1-1.html 方法:运行cmd( 在任意目录都行)单个文件 :attrib c:\"要修改的文件夹名字&quo ...
- Qt浅谈之二十一log调试日志
一.简单介绍 近期因调试code时,想了解程序的流程,但苦于没有一个简易的日志记录,不停使用qDebug打印输出,而终于提交代码时得去多次删除信息打印,有时还会出现新改动的代码分不清是哪些部分.而使用 ...