web.xml以及结合Spring配置文件详解

Web.xml配置详解


每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了我们站台的配置设定.
今天就学习一下有关配置文件方面的点。
首先要知道XML元素不仅是大小写敏感的,而且它们还对出现在其他元素中的次序敏感。例如,XML头必须是文件中的第一项,DOCTYPE声明必须是第二项,而web- app元素必须是第三项。在web-app元素内,元素的次序也很重要。服务器不一定强制要求这种次序,但它们允许(实际上有些服务器就是这样做的)完全拒绝执行含有次序不正确的元素的Web应用。这表示使用非标准元素次序的web.xml文件是不可移植的。下面示列出的比较重要的元素:

  • Web应用图标:指出IDE和GUI工具用来表示Web应用的大图标和小图标
<icon>  
     <!-- 小图标 -->
     <small-icon>/images/app_small.gif</small-icon>  
     <!-- 大图标 -->
     <large-icon>/images/app_large.gif</large-icon>  
</icon>
  • context-param: context-param直接配置在web.xml的web-app标签中,属于上下文参数,在整个web应用中都可以使用,它是全局的,因此存放在servletContext对象中(即application对象)
<!-- 配置ContextParam全局参数 -->
<context-param>
    <param-name>contextParam</param-name>
    <param-value>admin</param-value>
</context-param>

package com.wes.controller;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class MainServlet extends HttpServlet ...{
    public MainServlet() ...{
        super();
     }
    public void init() throws ServletException ...{         
        System.out.println(*getServletContext().getInitParameter*("contextParam"));                                                   
    }
}
  • init-param servlet范围内的参数,在web.xml中配置如下:
<servlet>
    <servlet-name>MainServlet</servlet-name>
    <servlet-class>com.wes.controller.MainServlet</servlet-class>
    <init-param>
       <param-name>param1</param-name>
       <param-value>avalible in servlet init()</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>


public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //获取servlet初始化参数:
        String initParam1 = getServletConfig().getInitParameter("param1");
        //也可以直接使用this调用
        String initParam2 =this.getInitParameter("param1");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println("用户提交的数据:" + username + " , " + password);
    }
}
  • 元素welcome-file.用来定义首页列单
<welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>index.htm</welcome-file>
</welcome-file-list>
  • 定义这个web站台所有session的有效期限.单位为分钟.
<session-config>
   <session-timeout>20</session-timeout>
</session-config>
  • 定义某一个扩展名和某一MIME Type做对映.
<mime-mapping>
   <extension>doc</extension>
   <mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>
<mime-mapping>
   <extension>xls</extension>
   <mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
   <extension>ppt</extesnion>
   <mime-type>application/vnd.ms-powerpoint</mime-type>
</mime-mapping>
  • 过滤器配置:将一个名字与一个实现javaxs.servlet.Filter接口的类相关联
  <filter>
       <filter-name>setCharacterEncoding</filter-name>
       <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>
       <init-param>
           <param-name>encoding</param-name>
           <param-value>GB2312</param-value>
       </init-param>
   </filter>
   <filter-mapping>
      <filter-name>setCharacterEncoding</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  • 最重要的Servlet配置
<!-- 配置一个servlet -->
<!-- servlet的配置 -->
<servlet>
    <!-- servlet的内部名称,自定义。尽量有意义 -->
    <servlet-name>ServletDemo</servlet-name>
    <!-- servlet的类全名: 包名+简单类名 -->
    <servlet-class>lm.practice.ServletDemo</servlet-class>
</servlet>
<!-- servlet的映射配置 -->
<servlet-mapping>
    <!-- servlet的内部名称,一定要和上面的内部名称保持一致!! -->
    <servlet-name>ServletDemo</servlet-name>
    <!-- servlet的映射路径(访问servlet的名称) -->
    <url-pattern>/servlet</url-pattern>
</servlet-mapping>
  • 配置错误页面有两种:

(1).通过错误码来配置error-page

 <!--配置了当系统发生404错误时,跳转到错误处理页面NotFound.jsp-->
 <error-page>
       <error-code>404</error-code>
       <location>/NotFound.jsp</location>
 </error-page>

(2).通过异常的类型配置error-page

 <!--配置了当系统发生java.lang.NullException(即空指针异常)时,跳转到错误处理页面error.jsp-->
 <error-page>
       <exception-type>java.lang.NullException</exception-type>
       <location>/error.jsp</location>
 </error-page>

Spring 在web.xml中的配置


我们先了解一下spring mvc中的DispatcherServlet:DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。

DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:

1、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
2、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);

3、通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);

4、通过ViewResolver解析逻辑视图名到具体视图实现;

5、本地化解析;

6、渲染具体的视图等;

7、如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。

  • DispatcherServlet在web.xml中的配置
<servlet>
   <servlet-name>springDispatcherServlet</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
       <servlet-name>springDispatcherServlet</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>

load-on-startup:表示启动容器时初始化该Servlet;
url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。

⚠️:该DispatcherServlet默认使用WebApplicationContext作为上下文,Spring默认配置文件为“/WEB-INF/[servlet名字]-servlet.xml”。当然我们也可以自己进行:

<servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <!--如果在web.xml中不写任何参数配置信息,默认的路径是"/WEB-INF/applicationContext.xml,  
    在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。  
    如果是要自定义文件名可以在web.xml里加入contextConfigLocation这个context参数:  
    在<param-value> </param-value>里指定相应的xml文件名,如果有多个xml文件,可以写在一起并以“,”号分隔。  
    也可以这样applicationContext-*.xml采用通配符,比如这那个目录下有applicationContext-ibatis-base.xml,  
    applicationContext-action.xml,applicationContext-ibatis-dao.xml等文件,都会一同被载入。  
    在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。-->  
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
          classpath:spring-common-config.xml,
          classpath:spring-budget-config.xml
      </param-value>
</context-param>
<listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!--如上配置是Spring集成Web环境的通用配置;一般用于加载除Web层的Bean(如DAO、Service等),以便于与其他任何Web框架集成。
contextConfigLocation:表示用于加载Bean的配置文件;
contextClass:表示用于加载Bean的ApplicationContext实现类,默认WebApplicationContext。-->

以上就是对配置文件的一些理解,如有不对请指正,谢谢!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值