`

浅谈web.xml配置详解

    博客分类:
  • java
阅读更多

写了一年多项目了,今天来整理一下web.xml中的一些配置

首先要了解wel.xml包含了哪里东西,简单的项目来说 就是spring的配置,springMvc(servlet)的一些配置,现在很多的项目都是ssm开发,所以servlet一般都是springMvc框架,然后就是一些listener监听器,拦截器filter,

还有一些其他的包括欢迎页面,session时间,error-page页面等

 

首先我们先要知道web.xml里面的一些加载顺序

 

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

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

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

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

 

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

 

首先要讲一下load-on-startup这个标签

 

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

 

<listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>

  <!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext.xml</param-value>
  </context-param>

 看上面代码就知道了跟标签的顺序是没有关联的

这里我们将sping放到listener标签中,让它更优先加载,因为spring其实是最后加载的是排在在servlet之后的,如果那样的话,有一些filter 是需要调用配置一些bean的,这样的话那些bean就会bean实体就变成null了

 

接下来就是日志

  <listener>
    <listener-class>
      org.springframework.web.util.Log4jConfigListener
    </listener-class>
  </listener>
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
  </context-param>

 

下面要的filter是一个重点

因为在平时的项目中乱码一直都是经常存在并且让很多人很头疼的一些问题

现在的这个编码filter就可以解决post提交的一些乱码

<filter>
  <filter-name>CharacterEncodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>eccoding</param-name>
    <param-value>utf-8</param-value>
  </init-param>
  <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
  </init-param>
</filter>
  
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

在springMvc请求的时候,有时候我们会用到ResquestMethod=PUT或者是DELETE等方法,但浏览器一些只识别get,post请求,所以我们配置一个filter就ok

<filter>  
    <filter-name>HiddenHttpMethodFilter</filter-name>  
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  
</filter>  
  
<filter-mapping>  
    <filter-name>HiddenHttpMethodFilter</filter-name>  
    <url-pattern>/</url-pattern>  
</filter-mapping>

 

接下俩是springMvc servlet的配置

 <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc/springmvc.xml</param-value>
    </init-param>
    <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>&nbsp; 默认
    </init-param>
    -->
    <load-on-startup>1</load-on-startup>
  </servlet>

 

 <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

 

最后加载servlet

 

最后就是一些Session 跟一些欢迎,或者跳转的页面

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

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

 错误页面

 <error-page>
2      <error-code>404</error-code>
3      <location>/error404.jsp</location>
4  </error-page>
5  <error-page>
6      <exception-type>java.lang.Exception</exception-type>
7      <location>/exception.jsp</location>
8  </error-page>

 

 

分享到:
评论

相关推荐

    浅谈Struts框架技术.

    当用户发送请求时,ActionServlet首先拦截请求,依据struts.config.xml配置文件将请求转发给相应的Action对象。Action对象执行业务逻辑,更新Model状态,并可能调用其他JavaBean或EJB来处理更复杂的业务。执行完成后...

    浅谈SpringBoot启动那些事儿.pdf

    ### Spring Boot启动过程详解 #### 一、Spring Boot启动概览 **Spring Boot**是一个用于简化新Spring应用程序的初始设置以及依赖管理的框架。它利用默认配置的方式,减少了开发过程中的样板代码,使得开发者能够...

    浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    【Ajax技术详解】 Ajax,全称为异步JavaScript和XML,是一种在无需刷新整个网页的情况下,能够更新部分网页内容的技术。它的出现极大地提升了Web应用程序的用户体验,由Jesse James Garrett提出,谷歌通过一系列...

    浅谈基于Struts和Hibernate的J2EE应用

    【Struts框架详解】 Struts是Apache Jakarta组织下的一个开源项目,自2002年5月发布以来,它已成为Java Web应用程序开发中广泛采用的MVC框架。Struts的目标是简化Web应用的开发,通过提供一套底层支持,帮助开发者...

    浅谈Python大神都是这样处理XML文件的

    在IT领域中,XML(可扩展标记语言)是一种非常重要的数据交换格式,尤其在Web服务及配置文件管理方面被广泛采用。对于Python开发者来说,掌握如何高效地处理XML文件是一项必备技能。下面我们将详细介绍Python高手是...

    浅谈Spring Boot 属性配置和自定义属性配置

    Spring Boot 属性配置和自定义属性配置详解 在 Spring Boot 中,属性配置是一项非常重要的功能,主要用于配置项目中的各种设置,如服务器端口、数据库连接信息、自定义属性等。在本文中,我们将详细介绍 Spring ...

    浅谈Action+Service +Dao 功能

    浅谈Action+Service+Dao功能 1. Action、Service、DAO简介 Action是管理业务调度和管理跳转的,Service是管理具体的功能的,DAO只完成增删改查。总结这三者,Action像是服务员,Service是厨师,DAO是厨房的小工。...

    浅谈asp.net Forms身份验证详解

    在配置ASP.NET Forms身份验证时,我们需要修改`web.config`文件。首先,通过`&lt;authentication&gt;`元素声明身份验证模式为Forms,如以下代码所示: ```xml ~/Login.aspx" defaultUrl="~/Default.aspx" /&gt; ``` `...

    浅谈spring注解之@profile

    例如,在 Web 应用程序中,我们可以在 web.xml 文件中添加以下配置: ```xml &lt;param-name&gt;spring.profiles.default &lt;param-value&gt;dev ``` 这将设置默认的 Profile 为 dev。 @Profile注解和 XML 配置都是实现 ...

    浅谈PHP各环境下的伪静态配置

    **PHP伪静态配置详解** 在Web开发中,伪静态是一种技术,它使得动态网页的URL显示为静态页面的形式,这样不仅有利于搜索引擎优化(SEO),也能提高用户体验。本文将详细介绍在不同服务器环境中,如Apache、Nginx和...

    浅谈Java中的Filter过滤器

    **Java中的Filter过滤器详解** Java中的Filter过滤器是Servlet技术的一个重要组成部分,它允许开发者在请求到达Servlet之前以及响应返回客户端之前进行拦截处理。这种技术广泛应用于Web应用程序中,可以实现诸如...

Global site tag (gtag.js) - Google Analytics