当前位置: 首页 > 工具软件 > xmlweb > 使用案例 >

web.xml配置

高森
2023-12-01

1  .原文连接

2.原文连接2

目录

1.web.xml一般配置

1. 命名空间

2. 欢迎页面配置

3. Servlet 配置

4. Filter 配置

5. Listener 配置

6.注解配置

7.Servlet 注解配置

8. Filter 注解配置

1.c的作用和用法,

2.配置和的区别


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>

  

6.注解配置

在 Servlet 3.0 版本以上,可以使用@WebServlet注解代替 web.xml 进行配置,@WebServlet的配置是一套独立的用法。


7.Servlet 注解配置

一般用@WebServlet( "/TestServlet1")即可,其中 TestServlet1 的位置可以自己起一个名字,但是需要注意不能在项目中有重名。

下面展示一下@WebServlet注解的复杂一些的用法,不做详解

@WebServlet(urlPatterns = "/TestServlet1",initParams = {
        @WebInitParam(name = "name1",value="value1"),
        @WebInitParam(name = "name2",value="value2")
}, name = "Hello")

 

8. Filter 注解配置

在 Filter 类文件的开头处写上 @WebFilter("/TestFilter")
 

1.<context-param>的作用和用法,

 

<context-param>的作用和用法:

1.<context-param>配置是是一组键值对,比如:

 <context-param>
        <param-name>home-page</param-name>
        <param-value>home.jsp</param-value>
    </context-param>

param-name是键,相当于就是参数名,param-value是值,相当于参数值

2.当服务器启动时,服务器会读取web.xml配置,当读到<listener></listener>和<context-param></context-param>这两个节点的时候,容器会将这两个节点set到ServletContext(上下文对象)中,这样我们在程序中就能通过这个上下文对象去取得我们这个配置值。

具体代码实现:

String sHomePage = getServletContext().getInitParameter("home-page");

通过上面这句代码,我们就可以取得web.xml中配置的home.jsp这个值。

说白了,他就相当于设定了一个固定值,我们可以在程序中去使用它。就这么个作用。

注:我看到很多文章都是把它和监听一起说的,写说这个配置在监听中怎么用。我要说的他并不是为了监听去设定的。程序中的所有servlet可以利用这个值,我在这里强调一下这一点,希望大家不要被误导

2.<context-param>配置和<init-param>的区别

<context-param>配置和<init-param>的区别:

<servlet>
        <servlet-name>ServletInit</servlet-name>
        <servlet-class>com.sunrain.datalk.wserver.util.servlet.ServletInit</servlet-class>

        <init-param>

                  <param-name>home-page</param-name>
                 <param-value>home.jsp</param-value>

        </init-param>
  </servlet>

1.我们可以看到<init-param>是放在一个servlet内的,所以这个参数是只针对某一个servlet而言的

所以他们的区别就有点像全局变量和和局部变量的<context-param>是针对整个项目,所有的servlet都可以取得使用,<init-param>只能是在那个servlet下面

配置,就在那个servlet里面调用
 

 类似资料: