web.xml 配置
一般在 web 工程中都会用到 web.xml 来配置 Servlet、Filter、Listener 欢迎页面等,可以方便的开发web工程。需要知道的是 web.xml 并不是必须的,一个web 工程可以没有 web.xml 文件,只不过网站的功能复杂起来后,web.xml 有非常大用处,因此在 web 工程中创建一个 web.xml 还是非常有必要的。1. 命名空间 在 web.xml
一般在 web 工程中都会用到 web.xml 来配置 Servlet、Filter、Listener 欢迎页面等,可以方便的开发web工程。需要知道的是 web.xml 并不是必须的,一个web 工程可以没有 web.xml 文件,只不过网站的功能复杂起来后,web.xml 有非常大用处,因此在 web 工程中创建一个 web.xml 还是非常有必要的。
1. 命名空间
在 web.xml 中,使用的 web-app_4_0.xsd 文件定义的规则,需要指定这个文件的位置。
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
id="WebApp_ID" version="4.0">
</web-app>
关于命名空间这部分内容,就不在这里详细讲了,需要了解的可以看这篇博文XML 中的 xmlns、xmlns:xsi、xsi:schemaLocation
2. 欢迎页面配置
欢迎页面的配置不是很重要,了解即可。
<project...>
<welcome-file-list>
<welcome-file>wecome1.jsp</welcome-file>
<welcome-file>wecome2.jsp</welcome-file>
</welcome-file-list>
</project>
上面代码中就配置了两个欢迎页面 wecome1.jsp 和 wecome2.jsp,显示时按照配置顺序显示,如果能找到 wecome1.jsp 文件就显示该文件,如果找不到就找第二个,依次类推。
欢迎页面是用于访问 web 工程时,只给了根名,没有给出具体的页面,这时就回去访问配置的欢迎页面,如果没有配置欢迎页面,不同的应用服务器可能会有不同的行为。对于 Tomcat 来说,会默认先查找 index.html 文件,如果找到了,就将其返回给浏览器;如果没有找到,就继续查找 index.jsp 文件,如果都没有找到,那么 Tomcat 就会显示 The requested resource is not available 的页面。
欢迎页面只是在没有给出具体的访问页面时会被用到,如果指定了具体页面,只要访问的路径正确,是可以正常访问的。
3. Servlet 配置
这是我们常用的一个配置,主要使用的标签是<servlet></servlet>
为Servlet 命名和<servlet-mapping></servlet-mapping>
为 Servlet 定制 URL。
<project..>
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>D20210220.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
</project>
在 <servlet> 标签中, <servlet-name> 中设置的是为 Servlet 注册的名字,要保证该名字在 web.xml 文件中是唯一的,一般直接使用类名即可,<servlet-class> 中设置的是需要配置的 Servlet 的全类名。
在 <servlet-mapping> 中, <servlet-name> 中的名字,需要和 <servlet> 中的名字一致,<url-pattern> 为这个 Servlet 映射一个对外访问路径。
servlet 和 url-pattern 之间的关系是 一对多的关系。
4. Filter 配置
在学习了 Servlet 的配置之后,学习 Filter 的配置就很简单了。
Filter 的配置和 Servlet 的配置很相似,只是将 servlet 换成 filter 而已。
<filter>
<filter-name>Filter1</filter-name>
<filter-class>D2020128.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter1</filter-name>
<url-pattern>/TestServlet</url-pattern>
</filter-mapping>
Filter 的配置中和 Servlet 配置差别较大的地方在于 url-pattern,Servlet 的 url-pattern 中配置的路径是访问 Servlet 的路径,而 Filter 的 url-pattern 中配置的路径是访问已经存在的网络资源,如静态页面、jsp、servlet等。
filter 和 url-pattern 之间的关系是 多对多的关系。即,一个 filter 可以有多个 url-pattern(使用多个 URL 地址,都会访问同一个 FIlter),多个 filter 可以对应一个 url-pattern(多个 filter 会根据 web.xml 中配置的顺序组成 filter 链)。
因此,Filter 的 url-pattern 有一种配置是<url-pattern>/*</url-pattern>
,表示所有外部访问都需要先经过该过滤器。
Filter 应用场景:防盗链、编码过滤器
5. Listener 配置
Listener 不需要处理外界访问,所以它的配置不需要定制 URL,因此只需要配置<listener>
<listener>
<listener-class>Listener的全类名<listener-class>
</listener>
注解配置
在 Servlet 3.0 版本以上,可以使用@WebServlet
注解代替 web.xml 进行配置,@WebServlet
的配置是一套独立的用法。
Servlet 注解配置
一般用@WebServlet( "/TestServlet1")
即可,其中 TestServlet1 的位置可以自己起一个名字,但是需要注意不能在项目中有重名。
下面展示一下@WebServlet
注解的复杂一些的用法,不做详解
@WebServlet(urlPatterns = "/TestServlet1",initParams = {
@WebInitParam(name = "name1",value="value1"),
@WebInitParam(name = "name2",value="value2")
}, name = "Hello")
Filter 注解配置
在 Filter 类文件的开头处写上 @WebFilter("/TestFilter")
更多推荐
所有评论(0)