JavaWeb 之Servlet 干货详解(二)
让我们续上篇继续来详解吧,话不多说,上货~~
Servlet
一.url-pattern设置
<url-pattern>某个servlet在浏览器的访问路径(路径映射)</url-pattern>
一个Servlet可以设置多个url-pattern
url-pattern配置方式共有三种:
- 完全路径匹配 :只有浏览器访问路径和我们设置的路径完全相同时,才能访问。
格式:以 / 开始
例如: /ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6
- 目录匹配 :只要浏览器的访问路径中的目录 和 我们设置的路径中的目录 完全相同,就能访问。
格式:以 / 开始 需要以 * 结束
例如: /* (所有) ,/aaa/* (aaa目录下的所有) ,/aaa/bbb/*
- 扩展名匹配 :只要浏览器访问路径中的扩展名 和 我们设置路径中的扩展名 完全相同,就能访问。
格式:不能以 / 开始 以 * 开始的. 例如: *.do , *.action 、*.jsp 、*.jpg
<servlet>
<servlet-name>Demo1Servlet</servlet-name>
<servlet-class>com.czxy.demo1.web.servlet.Demo1Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo1Servlet</servlet-name>
<url-pattern>/hehe/d1</url-pattern>
<url-pattern>/xixi/*</url-pattern>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
- 缺省路径 /
通常情况访问 html页面时,首先从当前web项目的web.xml文件寻找匹配路径,如果如果没有找到,再从tomcat默认的web.xml匹配,将使用缺省servlet
tomcat获得匹配路径时,优先级顺序:完全匹配 > 目录匹配 > 扩展名匹配 > 缺省匹配
优先级:
任何请求路径,都会进行如下的四个匹配
if(完全路径匹配){
}else if(目录匹配){
}else if(扩展名匹配){
}else{
缺省匹配
}
Http://localhost:8080/javaweb_day04_1/hehe/d1 完全路径匹配
http://localhost:8080/javaweb_day04_1/xixi/nihao 目录匹配
http:// localhost:8080/javaweb_day04_1/hehe/nihao.do 扩展名匹配
http:// localhost:8080/javaweb_day04_1/login.html 缺省匹配
http:// localhost:8080/javaweb_day04_1/007.jpg 缺省匹配
tomcat自带的一个缺省Servlet。
缺省servlet:帮我将资源找到,写出到响应体中。
特殊:如果资源找不到
练习:
二.ServletConfig对象
一个Servlet有一个ServletConfig对象,相当于某个servlet的身份证
方法名 |
返回值类型 |
描述 |
getInitParameter(name) |
String |
获得Servlet的初始化参数的 |
getServletContext() |
ServletContext |
获得ServletContext上下文对象的引用 |
getServletName() |
String |
获得Servlet在web.xml中配置的name的值。 及<servlet-name>标签配置内容。 |
某个Servlet是有初始化参数的:
<servlet>
<servlet-name>Demo2Servlet</servlet-name>
<servlet-class>com.czxy.demo1.web.servlet.Demo2Servlet</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet>
public String run1(){
String value = getServletConfig().getInitParameter("encoding");
String name = getServletConfig().getServletName();
return null;
}
看完恭喜你,又知道了一点点!!!
你知道的越多,不知道的越多!
~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!
注: 如果本篇有需要改进的地方或错误,欢迎大神们指定一二~~