精华内容
下载资源
问答
  • 2019-04-08 19:37:46

    一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程。web.xml主要用来配置Filter、Listener、Servlet等。但是web.xml并不是必须的,一个web工程可以没有web.xml文件。

    1 web.xml工作过程

    1 启动一个web项目时,容器(如tomcat)会去读web.xml,读取<listener>监听器和<context-param>两个结点

    2 然后容器创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文

    3 容器将<context-param></context-param>转换为键值对,并交给servletContext

    4 容器创建<listener>中的类实例,创建监听器

    5 在监听器中有contextInitialized(ServletContextEventargs)初始化方法,在这个方法中获得ServletContext=ServletContextEvent.getServletContext();context-param的值=ServletContext.getInitParameter("context-param的键")

    6 得到这个context-param的值后,就可以做一些操作了,注意,这个时候web项目还没有完全启动成功,换句话说,这个时候对<context-param>中的键值得操作,将在web项目完全启动以前被执行

    举例:可以在项目启动之前就打开数据库,那么就可以在<context-param>中设置数据库的连接方式,在监听类中初始化数据库的连接

    2 常用配置详解

    2.1 servlet-mapping

    <servlet>
     	<servlet-name>DispatcherServlet</servlet-name>
     	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     	<init-param>
     		<param-name>contextConfigLocation</param-name>
     		<param-value>classpath:spring/SpringMVC.xml</param-value>
     	</init-param>
     		<!-- 配置springmvc什么时候启动,参数必须为整数 -->
    		<!-- 如果为0或者大于0,则springMVC随着容器启动而启动 -->
    		<!-- 如果小于0,则在第一次请求进来的时候启动 -->
    		<load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
     	<servlet-name>DispatcherServlet</servlet-name>
     	<url-pattern>*.action</url-pattern>
     </servlet-mapping>

    由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成

     <servlet>元素用于注册Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。

    <servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径

    2.2 init-param

    <init-param>
     		<param-name>contextConfigLocation</param-name>
     		<param-value>classpath:spring/SpringMVC.xml</param-value>
     	</init-param>
     		<!-- 配置springmvc什么时候启动,参数必须为整数 -->
    		<!-- 如果为0或者大于0,则springMVC随着容器启动而启动 -->
    		<!-- 如果小于0,则在第一次请求进来的时候启动 -->
    		<load-on-startup>1</load-on-startup>

    web应用启动时,启动springmvc配置

    如果WEB应用启动时就需要启动某个框架程序,那么可以把框架程序的启动代码放到一个Servlet的init方法中,并为这个Servlet配置</load-on-startup>。这样的话,当WEB应用启动时,框架也将随之启动。例如我们以后将要学习到的struts框架采用的就是这种启动方式。

    2.3 filter过滤器

    <!-- 配置过滤器,解决post的乱码问题 -->
    	<filter>
    		<filter-name>encoding</filter-name>	
    		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>encoding</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>

     

    更多相关内容
  • web项目中web.xml作用

    千次阅读 2018-04-27 10:53:00
    每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗?  一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。  web.xml文件是用来初始化配置信息:...

    每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 
        一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 
    web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。

    当web工程没用到这些时,你可以不用web.xml文件来配置你的Application。

    每个xml文件都有定义它书写规则的Schema文件,也就是说javaEE的定义web.xml所对应的xml Schema文件中定义了多少种标签元素,web.xml中就可以出现它所定义的标签元素,也就具备哪些特定的功能。web.xml的模式文件是由Sun 公司定义的,每个web.xml文件的根元素为<web-app>中,必须标明这个web.xml使用的是哪个模式文件。如:

    <?xml version="1.0" encoding="UTF-8"?> 
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    </web-app> 

        web.xml的模式文件中定义的标签并不是定死的,模式文件也是可以改变的,一般来说,随着web.mxl模式文件的版本升级,里面定义的功能会越来越复杂,标签元素的种类肯定也会越来越多。

    web.xml常用的一些标签元素及其功能: 

    1、指定欢迎页面。

    例如: 

    <welcome-file-list> 
      <welcome-file-list> 
        <welcome-file>index.jsp</welcome-file> 
        <welcome-file>index1.jsp</welcome-file> 
      </welcome-file-list> 
    PS:指定了2个欢迎页面,显示时按顺序从第一个找起,如果第一个存在,就显示第一个,后面的不起作用。如果第一个不存在,就找第二个,以此类推。 

    关于欢迎页面: 
        访问一个网站时,默认看到的第一个页面就叫欢迎页,一般情况下是由首页来充当欢迎页的。一般情况下,我们会在web.xml中指定欢迎页。但 web.xml并不是一个Web的必要文件,没有web.xml,网站仍然是可以正常工作的。只不过网站的功能复杂起来后,web.xml的确有非常大用处,所以,默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件。

    2、命名与定制URL。

        我们可以为Servlet和JSP文件命名并定制URL,其中定制URL是依赖命名的,命名必须在定制URL前。下面拿serlet来举例: 

    (1)、为Servlet命名: 
    <servlet> 
        <servlet-name>servlet1</servlet-name> 
        <servlet-class>org.whatisjava.TestServlet</servlet-class> 
    </servlet> 
    
    (2)、为Servlet定制URL、 
    <servlet-mapping> 
        <servlet-name>servlet1</servlet-name> 
        <url-pattern>*.do</url-pattern> 
    </servlet-mapping>

    3、定制初始化参数。

        可以定制servlet、JSP、Context的初始化参数,然后可以再servlet、JSP、Context中获取这些参数值。 
    下面用servlet来举例: 

    <servlet> 
        <servlet-name>servlet1</servlet-name> 
        <servlet-class>org.whatisjava.TestServlet</servlet-class> 
        <init-param> 
              <param-name>userName</param-name> 
              <param-value>Daniel</param-value> 
        </init-param> 
        <init-param> 
              <param-name>E-mail</param-name> 
              <param-value>125485762@qq.com</param-value> 
        </init-param> 
    </servlet> 
    经过上面的配置,在servlet中能够调用getServletConfig().getInitParameter("param1")获得参数名对应的值。 

    4、指定错误处理页面。

    可以通过“异常类型”或“错误码”来指定错误处理页面。 

    <error-page> 
        <error-code>404</error-code> 
        <location>/error404.jsp</location> 
    </error-page> 
    ----------------------------- 
    <error-page> 
        <exception-type>java.lang.Exception<exception-type> 
        <location>/exception.jsp<location> 
    </error-page> 

    5、设置过滤器。

    比如设置一个编码过滤器,过滤所有资源 

    <filter> 
        <filter-name>XXXCharaSetFilter</filter-name> 
        <filter-class>net.test.CharSetFilter</filter-class> 
    </filter> 
    <filter-mapping> 
        <filter-name>XXXCharaSetFilter</filter-name> 
        <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    6、设置监听器。

    <listener> 
    <listener-class>net.test.XXXLisenet</listener-class> 
    </listener> 
    

    7、设置会话(Session)过期时间。

    其中时间以分钟为单位,假如设置60分钟超时: 

    <session-config> 
    <session-timeout>60</session-timeout> 
    </session-config>


    除了这些标签元素之外,还可以往web.xml中添加很多标签元素,由于不常用省略。

    转载于:https://my.oschina.net/ChinaHaoYuFei/blog/1802043

    展开全文
  • Java web web.xml详解

    万次阅读 2021-04-13 11:32:34
    1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点。 2、紧急着,容创建一个ServletContext(servlet上下文),这个...一、Web.xml作用? 作...

    1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点。 

    2、紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。 

    3、容器将<context-param>转换为键值对,并交给servletContext。 

    4、容器创建<listener>中的类实例,创建监听器。 

    一、Web.xml的作用?

    作用是用来初始化配置信息的。

    比如:Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。

    二、Web.xml是每个J2EE工程所必需的吗?

    当你的工程不需要上述配置时,就不需要web.xml来配置你的Application。

    三、节点元素Load-on-startup

    Load-on-startup 元素在web应用启动的时候指定了servlet被加载的顺序,它的值必须是一个整数。如果它的值是一个负整数或是这个元素不存在,那么容器会在该servlet被调用的时候,加载这个servlet 。如果值是正整数或零,容器在配置的时候就加载并初始化这个servlet,容器必须保证值小的先被加载。如果值相等,容器可以自动选择先加载谁。  

    在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是: 

    标记容器是否在启动的时候就加载这个servlet。 

    当值为0或者大于0时,表示容器在应用启动时就加载这个servlet; 

    当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。 

    正数的值越小,启动该servlet的优先级越高。 

    四、加载顺序

    首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:ServletContext -> listener -> filter -> servlet

            同时还存在着这样一种配置节:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么 context-param 配置节是不是应该写在 listener 配置节前呢?实际上 context-param 配置节可写在任意位置,因此真正的加载顺序为:context-param -> listener -> filter -> servlet

            对于某类配置节而言,与它们出现的顺序是有关的。以 filter 为例,web.xml 中当然可以定义多个 filter,与 filter 相关的一个配置节是 filter-mapping,这里一定要注意,对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节而言,filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义。web 容器启动时初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的。

            servlet 同 filter 类似,此处不再赘述。

           由此,可以看出,web.xml 的加载顺序是:ServletContext -> context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。

    五、常用标签及其功能

    1. Schema文件

    每个xml文件都有定义它书写规则的Schema文件,也就是说javaEE的定义web.xml所对应的xml Schema文件中定义了多少种标签元素,web.xml中就可以出现它所定义的标签元素,也就具备哪些特定的功能。web.xml的模式文件是由Sun 公司定义的,每个web.xml文件的根元素为<web-app>中,必须标明这个web.xml使用的是哪个模式文件。如: 

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee"  --命名空间,类似包名,因为xml的标签可自定义,需要命名空间来区分
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" --xml遵循的标签规范
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    <a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\" "="">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" --用来定义xmlschema的地址,也就是xml书写时需要遵循的语法,两部分组成,前面部分就是命名空间的名字,后面是xsd(xmlschema)的地址
    >
    </web-app>

       web.xml的模式文件中定义的标签并不是定死的,模式文件也是可以改变的,一般来说,随着web.mxl模式文件的版本升级,里面定义的功能会越来越复杂,标签元素的种类肯定也会越来越多,但有些不是很常用的,我们只需记住一些常用的并知道怎么配置就可以了。 

    2. 关于欢迎页面

    访问一个网站时,默认看到的第一个页面就叫欢迎页,一般情况下是由首页来充当欢迎页的。一般情况下,我们会在web.xml中指定欢迎页。但 web.xml并不是一个Web的必要文件,没有web.xml,网站仍然是可以正常工作的。只不过网站的功能复杂起来后,web.xml的确有非常大用处,所以,默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件。

    指定欢迎页面,例如: 

        <welcome-file-list>
         <welcome-file>index.jsp</welcome-file> 
         <welcome-file>index1.jsp</welcome-file> 
       </welcome-file-list>

    PS:在用户访问Web应用时,如果仅给出Web应用的根访问URL,没有指定具体的文件名,容器会调用<weblcome-file- list> 元素里指定的文件清单。<welcome-file-list>里允许有多个<welcome-file>元 素,每个元素代表一个文件。显示时按顺序从第一个找起,如果第一个存在,就显示第一个,后面的不起作用。如果第一个不存在,就找第二个,以此类推,如果所有文件都不存在,则抛出404错误。

     

    3. 命名与定制URL。我们可以为Servlet和JSP文件命名并定制URL,其中定制URL是依赖命名的,命名必须在定制URL前。下面拿servlet来举例: 

    (1)、为Servlet命名:

    <servlet> 
         <servlet-name>servlet1</servlet-name> 
         <servlet-class>org.whatisjava.TestServlet</servlet-class> 
    </servlet>

    (2) 、为 Servlet 定制 URL 、  

    <servlet-mapping> 
         <servlet-name>servlet1</servlet-name> 
         <url-pattern>*.do</url-pattern> 
    </servlet-mapping>

    4. 详解web.xml

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd"> 
    <web-app> 
    <display-name>Sample Application</display-name> 
    <description>This is a sample application</description>
    <!-- 在此设定的参数,可以在servlet中用 getServletContext().getInitParameter("my_param") 来取得 -->
    <context-param>	<!-- 用来设定web站台的环境参数 -->
        <param-name>my_param</param-name>
        <param-value>hello</param-value>
    </context-param>
    <filter> 
    <!–过滤器名,可以随便取,当web应用中有多个过滤器时不允许重名.–> 
    <filter-name>SampleFilter</filter-name> 
    <!–具体的过滤器的类的完整的包名+类名。注意:不能写错了。否则容器不能正确的实例化过滤器–> 
    <filter-class>mypack.SampleFilter</filter-class> 
    <init-param> 
    <!– 参数名 –> 
    <param-name>initParam1</param-name> 
    <!– 参数值 –> 
    <param-value>2</param-value> 
    </init-param> 
    </filter> 
    <!– Define the SampleFilter Mapping –> 
    <filter-mapping> 
    <!–过滤器名,注意要和上面的<filter-name>里的名字一样。–> 
    <filter-name>SampleFilter</filter-name> 
    <!– 指定过滤器负责过滤的URL。这里指定了*.jsp表示在访问任何一个jsp页面时都会先使用mypack.SampleFilter过滤器进行过滤。如果写成login.jsp.则只有在访问login.jsp时才会调用该过滤器进行过滤。–> 
    <url-pattern>*.jsp</url-pattern> 
    </filter-mapping> 
    <servlet> 
    <!– Servlet名字,可以随便取,有多个Servlet时不允许重名–> 
    <servlet-name>SampleServlet</servlet-name> 
    <!–指定实现这个Servlet的类。完整的包名+类名–> 
    <servlet-class>mypack.SampleServlet</servlet-class> 
    <!–定义Servlet的初始化参数(包括参数名和参数值)一个<servlet>元素里可以有多个<init-param>元素。在Servlet类中通过ServletConfig类的来访问这些参数。 
    –> 
    <init-param> 
    <!– 参数名 –> 
    <param-name>initParam1</param-name> 
    <!– 参数值 –> 
    <param-value>2</param-value> 
    </init-param> 
    <!–指定当前Web应用启动时装载Servlet的次序。当这个数>=0时,容器会按数值从小到大依次加载。如果数值<0或没有指定,容器将载Web客户首次访问这个Servlet时加载。–> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <!– Define the SampleServlet Mapping –> 
    <servlet-mapping> 
    <!–必须和<servlet>里的<servlet-name>内容一样–> 
    <servlet-name>SampleServlet</servlet-name> 
    <!–指定访问这个Servlet的URL。这里给出的是对于整个Web应用的相对URL路径。–> 
    <url-pattern>/sample</url-pattern> 
    </servlet-mapping> 
    <session-config> 
    <!–设 定HttpSession的生命周期。这里以分钟计算。下面的设定指明Session在最长不活动时间为10分钟。过了这个时间,Servlet容器将它 作为无效处理。注意这里和程序里指定的计数单位不同,程序里是以秒为单位。<session-config>只有<session- timeout>这个元素–> 
    <session-timeout>10</session-timeout> 
    </session-config> 
    <!— 配置会话侦听器,class表示一个HttpSessionListener或 HttpSessionActivationListener 或 HttpSessionAttributeListener或 HttpSessionBindingListener的实现类。该节点允许多个 –> 
    <listener> 
    <listener-class>com.cn.SessionListenerImpl</listener-class> 
    </listener> 
    <!– 在 用户访问Web应用时,如果仅给出Web应用的根访问URL,没有指定具体的文件名,容器会调用<weblcome-file- list> 元素里指定的文件清单。<welcome-file-list>里允许有多个<welcome-file>元 素,每个元素代表一个文件。容器会先找第一文文件件是否存在,如果存在这把这个文件返回个客户,不再进行其他文件的查找。如果不存在则找第二个文件,依次 类推。如果所有文件都不存在,则跑出404错误–> 
    <welcome-file-list> 
    <welcome-file>login.jsp</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    </welcome-file-list> 
    <!– 设置Web应用引用的自定义标签库。下面的代码定义了一个/mytaglib标签库,它对应的TLD文件为/WEB-INF/mytaglib.tld –> 
    <taglib> 
    <taglib-uri>/mytaglib</taglib-uri> 
    <taglib-location>/WEB-INF/mytaglib.tld</taglib-location> 
    </taglib> 
    <!– 如果Web应用访问了由Servlet容器管理的某个JNDI Resource必须在这里声明对JNDI Resource的引用 –> 
    <resource-ref> 
    <!– 对应用资源的说明 –> 
    <description>DB Connection</description> 
    <!– 指定所引用资源的JNDI名字 –> 
    <res-ref-name>jdbc/sampleDb</res-ref-name> 
    <!– 指定所引用资源的类名字 –> 
    <res-type>javax.sql.DataSource</res-type> 
    <!– 指定管理所引用资源的Manager, 它有两个可选值:Container和Application.Container表示由容器来创建和管理Resource,Application表示由Web应用来管理和创建Resource –> 
    <res-auth>Container</res-auth> 
    </resource-ref> 
    <security-constraint> 
    <web-resource-collection> 
    <!– 这个名字是必须的,由工具使用,别的地方不使用 –> 
    <web-resource-name>my application</web-resource-name> 
    <!– 指定要受约束的资源,至少有一个。可以有多个. –> 
    <uri-pattern>/*</uri-pattern> 
    <!– 描 述了度可与URL模式指定的资源哪些方法是受约束的,如果没有<http-method>元素,表示任何角色的人都无法访问任何http的方 法  。这里放置了GET方法,表示只有GET方法是受约束的。其他任何角色的人可以访问POST和其他的方法。但不能访问GET方法。–> 
    <http-method>GET</http-method> 
    </web-resource-collection> 
    <!– 如果没有<auth-constraint>表示所有角色都能访问GET方法,如果是<auth-constraint/>表示任何角色都不能访问GET方法 –> 
    <auth-constraint> 
    <!– 可选的。表示哪些角色能够在指定的资源上调用受约束的方法。这里表示只有拥有Admin和Member角色的人能够访问GET方法 
    <security-role>>里的<role-name>值一样 –> 
    <role-name>Admin</role-name> 
    <role-name>Member</role-name> 
    </auth-constraint> 
    </security-constraint> 
    <!– 将指定的角色映射到web.xml里 –> 
    <security-role> 
    <description>The role that is required to log into the my Application 
    </description> 
    <!– 以下的角色和tomcat-users.xml里的<tomcat-users>里的<role rolename=""/>里的rolename属性值对应 –> 
    <role-name>Guest</role-name> 
    <role-name>Admin</role-name> 
    <role-name>Member</role-name> 
    </security-role> 
    <!– 如果要想进行认证,必须有<login-config>–> 
    <login-config> 
    <!– 认证方式。有4种:BASIC:基本。 DIGEST:摘要。CLIENT-CERT:客户证书(能提供最高强度的认证)。FORM:表单 –> 
    <auth-method>FORM</auth-method> 
    <realm-name> 
    Tomcat Servet Configuraton Form-Based Authentication Area 
    </realm-name> 
    <form-login-config> 
    <form-login-page>/login.jsp</form-login-page> 
    <form-error-page>/error.jsp</form-error-page> 
    </form-login-config> 
    </login-config>
    <error-page> <!-- 用来处理错误代码或异常的页面,有三个子元素: -->
        <error-code>404</error-code> <!-- 指定错误代码 -->
        <exception-type>java.lang.Exception</exception-type> <!-- 指定一个JAVA异常类型 -->
        <location>/error404.jsp</location> <!-- 指定在web站台内的相关资源路径 -->
    </error-page>
    <mime-mapping>		<!-- 定义某一个扩展名和某一个MIME Type做对映,包含两个节点 -->
        <extension>doc</extension>	<!-- 扩展名的名称 -->
        <mime-type>application/vnd.ms-word</mime-type>	<!-- MIME格式 -->
    </mime-mapping> 
    <mime-mapping>
        <extension>xls</extension>
        <mime-type>application/vnd.ms-excel</mime-type>
    </mime-mapping>
    </web-app>

     

    展开全文
  • 关于Tomcat的web.xml文件配置一些总结

    万次阅读 2018-09-13 16:32:38
    web.xml文件称为部署描述文件(Deployment Descriptor,简称DD文件),该文件可以覆盖Servelt中的标识设置,所以总结一下该文件的标签元素以及作用(一个工程不是必须要有web.xml文件)。 0x01 web.xml文件加载过程 ...

    0x00 前言

    在JSP中,我们可以使用web.xml来定义Servlet,web.xml文件称为部署描述文件(Deployment Descriptor,简称DD文件),该文件可以覆盖Servelt中的标识设置,所以总结一下该文件的标签元素以及作用(一个工程不是必须要有web.xml文件)。

    0x01 web.xml文件加载过程

    <context-param>-> <listener> -> <filter> -> <servlet>
    

    同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用

    0x02 web.xml文件元素

    2.1 模式文件

    web.xml的模式文件是由Sun公司定义的,每一个web.xml文件的根元素中都标明.xml使用哪个模式文件,其他元素放在中。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee                       http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
    

    2.2 指定欢迎页面

    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>login.html</welcome-file>  
    </welcome-file-list> 
    

    这里指定两个欢迎页面,按顺序从第一个找起,如果第一个存在,访问第一个,否则,访问第二个。

    2.3 给Servlet命名

        <servlet>
            <servlet-name>jsp</servlet-name>
            <servlet-class>demo.JspServlet</servlet-class>
        </servlet>
    

    将demo包下的JspServlet类命名为jsp.

    2.4 给Servlet定制URL

    <servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>hello.do</url-pattern> 
    </servlet-mapping>
    

    通过在浏览器输入localhost:8080/hello.do就能匹配到该名为jsp的Servlet(上例就可以通过jsp匹配到JspServlet)。

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    

    任何扩展名为.do(文件名和路径任意)的url请求都会匹配

    localhost:8080/demo.do
    localhost:8080/hello.do
    

    2.5 定制初始化参数

    可以定制servlet、JSP、Context的初始化参数,然后可以在servlet、JSP、Context中获取这些参数值

        <servlet>
            <servlet-name>name01</servlet-name>
            <servlet-class>demo.DefaultServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <init-param>
                <param-name>listings</param-name>
                <param-value>false</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
    • servlet 配置Servlet
    • servlet-name 定义Servlet的名字
    • servlet-class 指定实现这个servlet的类
    • init-param 定义Servlet的初始化参数和参数值,可有多个init-param
    • load-on-startup 指定当Web应用启动时,装载Servlet的次序
    • 当值为正数或零时,Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet

    经过上面的配置,在Servlet中就能通过调用getServletConfig().getInitParameter("param1")获得参数名对应的值。

    2.6 指定错误处理页面

    “错误码”来指定错误处理页面

    <error-page> 
    <error-code>404</error-code> 
    <location>/error.jsp</location> 
    </error-page> 
    

     “异常类型”来指定错误处理页面

    <error-page> 
    <exception-type>java.lang.Exception<exception-type> 
    <location>/exception.jsp<location> 
    </error-page> 
    

    2.7 配置session的有效时间

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    

    这里默认是30分钟

    2.8 mime-type映射

    <mime-mapping>
        <extension>zip</extension>
        <mime-type>application/zip</mime-type>
    </mime-mapping>
    

    避免在浏览器直接打开

    2.9 设置监听器

    <listener> 
        <listener-class>demo.demoLisenet</listener-class> 
    </listener> 
    

    2.10 设置过滤器

    设置一个编码过滤器,过滤所有资源

    <filter> 
    <filter-name>XCharaSetFilter</filter-name> 
    <filter-class>demo.CharSetFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>XCharaSetFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    

    2.11 定义了WEB应用的名字

    <display-name>Test</display-name>
    

    2.12 声明WEB应用的描述信息

    <description>This is a test Page</description>
    

    2.13 声明应用范围内的初始化参数

    <context-param>
        <param-name>web</param-name>
        <param-value>log4</param-value>
    </context-param>
    

    取得值得方法:

    ServletContext app =ServletContextEvent.getServletContext();    
    context-paramValue= app.getInitParameter("web");
    
    • context-paramValue context-param的值
    • web context-param的键,上面定义的

    0x03 小结

    XML文档的样式与内容分离,可以帮我们快速寻找并提取有用的数据信息,所以学一些关于XML的配置还有很有用的,这里的只是通过在网上收集,还有Tomcat中默认的web.xml文件中一些常见的元素,以后要用到时再查阅资料。

    展开全文
  • web.xml 配置

    千次阅读 2021-03-03 08:08:43
    需要知道的是 web.xml 并不是必须的,一个web 工程可以没有 web.xml 文件,只不过网站的功能复杂起来后,web.xml 有非常大用处,因此在 web 工程中创建一个 web.xml 还是非常有必要的。 1. 命名空间   在 web.xml ...
  • web.xml文件的作用

    千次阅读 2018-09-11 16:10:47
    每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗?  一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。  web.xml文件是用来初始化配置信息:...
  • maven web项目中的web.xml的版本如何更改 问题 因web.xml的版本太低不支持el表达式的问题(maven3.6版本通过底层的maven web插件生成的最终的web.xml文件版本只是2.3,存在问题:不支持el表达式,起码要2.5+,现在...
  • web.xml配置文件详解

    千次阅读 2020-05-14 10:34:26
    web.xml配置文件详解 web.xml表头文件详解: xml的版本和解码方式: <?xml version="1.0" encoding="UTF-8"?> servlet版本,固定写死: <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
  • Spring MVC的web.xml配置详解

    千次阅读 2017-11-10 17:08:50
    Spring MVC的web.xml配置详解SpringMVC是创建java web...一、认识web.xml文件1、web.xml作用 首先java web项目中的并不是必须需要web.xml文件的。其次它主要的是用来配置欢迎页、servlet、filter、listener等以及定
  • 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。  那什么时候需要,什么时候可以不需要呢?  要想回答上面的问题,得先了解web.xml文件使用来干什么的。web.xml文件是用来配置:...
  • 在之前的《使用jsp作为视图模板&常规部署》章节有过一个实践,需要启动类继承自SpringBootServletInitializer方可正常部署至常规tomcat下,其主要能够起到web.xml作用。下面通过源码简单解析为何其能够替代web.xml...
  • web.xml文件是什么?有什么用?--详解

    万次阅读 多人点赞 2018-10-08 10:41:31
    前言:一般的web工程中都会用到web.xmlweb.xml主要用来配置,可以方便的开发web工程。web.xml主要用来配置Filter、Listener、Servlet等。但是要说明的是web.xml并不是必须的,一个web工程可以没有web.xml文件。 1...
  • SpringBoot之web.xml文件

    千次阅读 2021-02-23 20:52:41
    web.xml作用 还记得我们在写Java Web的时候吗,那个时候需要Web工程都需要在WEB-INF下,放置一个web.xml文件,其大概格式如下: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" ...
  • 详解Spring项目中的web.xml配置文件

    万次阅读 多人点赞 2020-10-13 17:21:47
    SpringMVC是创建java web项目时比较常用的框架,其中web.xml配置文件是更不可少的,那么首先先了解java web中的web.xml文件。web.xml的学名叫做部署描述文件(DD),它不是Spring所特有的,而是在...1、web.xml作用
  • web项目生成web.xml的两种方式

    千次阅读 2021-02-28 11:10:36
    下边介绍三种方式生成web.xml文件。一、maven项目情况:(STS版)直接生成web项目:1.创建maven项目,并找到web项目 2.输入项目名和项目id,生成目录如下右图 3.发现头疼的地方来了,有了web.xml文件但是只...
  • web.xml中配置web监听器

    千次阅读 2020-10-23 16:02:26
    web.xml中配置web监听器 在web.xml配置监听器,格式如下: <listener> <listener-class>类全名</listener-class> </listener> 例子: <listener> <listener-class>...
  • WEB-INF/web.xml泄露漏洞及其利用

    千次阅读 2021-08-10 18:52:36
    在了解WEB-INF/web.xml泄露之前,我们先要知道,web.xml是一个什么样的文件,以及它的泄露会出现哪些问题。 咱们先来看看WEB-INF这个文件夹 WEB-INF主要包含以下内容: /WEB-INF/web.xmlWeb应用程
  • java web工程web.xml配置详解

    万次阅读 多人点赞 2018-09-06 11:20:01
    Web.xml详解: 1.web.xml加载过程(步骤) 首先简单讲一下,web.xml的加载过程。当启动一个WEB项目时,容器包括(JBoss、Tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目...
  • web.xml里配置Servlet

    千次阅读 2021-11-14 16:24:01
    <!-- 配置一个servlet --> <!-- servlet的配置 --> <servlet> <!-- servlet的内部名称,自定义。尽量有意义 --> <servlet-name>ServletDemo<...lm.practice.ServletDem.
  • Tomcat的conf文件夹中的web.xml文件作用

    千次阅读 2017-07-14 15:21:51
    和每个应用的WEB-INF下的web.xml协同工作 分析一下所有的 Context 共享的 web.xml 文件,其中定义的默认配置项主要有: ² Servlet:配置 Servlet、JSP、SSI、CGI 引擎; ² session 配置:控制会话时间; ² ...
  • web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...
  • 关于spring boot的web.xml

    万次阅读 2019-07-09 00:34:58
    spring boot项目为什么没有web.xml servlet3.0规范中,可以通过java配置(注解等)代替web.xml,spring boot就是使用java代替了web.xml。 其中javax.servlet.ServletContainerInitializer负责web容器启动阶段被回...
  • web.xml没有了?
  • 找不到web.xml了,怎么办?

    千次阅读 2020-09-16 17:34:46
    找不到web.xml了,怎么办? 新建java web项目后发现没有web.xml配置文件,该怎么解决呢? 原因:新建时直接完成了 那么,怎么做呢?其实很简单,下面是俩种方法,分别是新建时添加和新建完成后添加 1)、新建时 新建...
  • 遇到一个问题web.xml is missing and is set to true。  发现是缺失了web.xml。也不知道是为什么没有自动生成。于是手动生成了一个。错误消失。 再来看web.xml的配置,借鉴了一个很好的博客...
  • web.xml中配置ContextLoaderListener的作用

    千次阅读 2019-06-12 21:39:19
    ContextLoaderListener的配置 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener<...java web应用,在web.xml中经常能看到上述的配置,它的作用是什么...
  • 二、再看web.xml中的配置情况。 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="...
  • [Struts2] 配置文件struts.xmlweb.xml详解

    万次阅读 多人点赞 2014-11-04 21:31:52
    配置文件struts.xmlweb.xml。 其实要s
  • 百度前,我只想知道"原项目中如何添加web.xml",百度后,我知道"原项目中添加web.xml和建项目时注意勾选create web.xml", 求知欲,让我知全,并想及时记起笔记分享经历(>ω・* )ノ   分享一下,我找到的解决...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,493,433
精华内容 597,373
关键字:

web.xml作用