ServletConfig就是web.xml文件里的Servlet的配置信息
获取ServletConfig对象:
public class SomeServlet implements Servlet{
private ServletConfig config;
public void init(ServletConfig config) throws ServletException{
this.config=config;//servlet的注册信息作为实参对config进行初始化
}
}
**获取ServletContext对象
通过ServletConfig可以获得ServletContext对象(Servlet上下文:servlet的运行环境。别名:application),一个应用中所有Servlet的上下文环境一样,即一个应用程序对应一个ServletContext。
public void service(ServletRequest req,ServletResponse res)
throws ServletException,IOException{
ServletContext sc=config.getServletContext();
//获取所有初始化参数名
Enumeration<String>names=sc.getInitParameterNames();
//遍历枚举,方式与集合中的迭代器对象Iterator类似
while(names.hasMoreElements){
String name=names.nextElement();
String value=sc.getInitParameter(name);
System.out.println(name+"="+value);
}
}
***ServletContext对象的方法
1,getInitParameterNames();//获取web.xml文件的context-param指定的上下文参数值(设置的参数一个应用里的Servlet都可以访问)
2,setAttribute();//设置域属性(一个应用中的所有servlet均可访问)
3,getAttribute();//获取域属性
4,removeAttribute();//删除域属性
5,getContextPath();//获取当前应用在Web容器中名称
6,getRealPath();//获取当前Web应用中指定文件或目录在本地文件系统中的路径,是基于盘符的路径。
<!--定义ServletContext的初始化参数-->
<context-param>
<param-name>address</param-name>
<param-value>shanghai</param-value>
</context-param>
<!--注册Servlet-->
<servlet>
<servlet-name>someservlet</servlet-name>
<servlet-calss>全限定性类名</servlet-class>
<!--定义Servlet的初始化参数-->
<init-param>
<param-name>...<param-name>
<param-value>...</param-value>
</init-param>
</servlet>
<servlet-mapping>
...
</servlet-mapping>
url-pattern的设置模式
(1)精确路径模式:请求路径必须与url-pattern的值完全相同才可被当前servlet处理。
<servlet-mapping>
<servlet-name>...</servlet-name>
<url-pattern>/aaa/bbb/ccc</url-pattern>
</servlet-mapping>
(2)通配符路径模式:该路径由精确路径部分与通配符部分组成,请求路径中只有携带了url-pattern值中的精确部分才可被当前servlet处理。
<servlet-mapping>
<servlet-name>...</servlet-name>
<!--/*与/都是全路径模式,但有区别
/*是真正的全路径模式,可以拦截所有请求,无论是动态资源请求,还是静态资源请求,均会被拦截。
/只会拦截静态资源请求,对于动态资源请求是不进行拦截的。
-->
<url-pattern>/aaa/bbb/*</url-pattern>
</servlet-mapping>
(3)后缀路径模式
<servlet-mapping>
<servlet-name>...</servlet-name>
<url-pattern>/*.some/url-pattern>
</servlet-mapping>
url-pattern 的匹配原则
(1)路径优先后缀匹配原则
(2)精确路径优先匹配原则
(3)最长路径优先匹配原则(比(2)更精确)