Spring MVC的web.xml配置详解

Spring MVC的web.xml配置详解

SpringMVC是创建java web项目时比较常用的框架,其中web.xml配置文件是更不可少的,那么首先先了解java web中的web.xml文件。

一、认识web.xml文件

1、web.xml的作用
首先java web项目中的并不是必须需要web.xml文件的。其次它主要的是用来配置欢迎页、servlet、filter、listener等以及定制servlet、JSP、Context初始化参数。

2、web.xml的模式(Schema)
web.xml的模式文件中定义了很多种的标签元素,在根标签中<web-app>中,有很多的模式文件,是由Sun公司定义的,每个都会指明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>

3.web.xml常见的标签加载顺序

context-param–> listener –> filter –> servlet

二、Spring MVC中web.xml配置

如果在Web容器中使用Spring MVC,就要进行四个方面的配置

  • 编写”(servlet-name)”-servlet.xml:这里的servlet-name是标签<servlet-name>指定的值,必须是相同的,下面例子中是springmvc-servlet.xml。

  • 添加servlet定义配置DispatcherServlet:前端处理器控制器,接受HTTP请求和转发请求的类,是分发Controller请求的,是Spring的核心要素。

  • 配置contextConfigLocation初始化参数:指定Spring IOC容器需要读取的定义了非web层的Bean(DAO/Service)的XML文件路径。可以指定多个XML文件路径,可以用逗号、冒号等来分隔。如果没有指定”contextConfigLocation”参数,则会在 /WEB-INF/下查找 “servlet-name(就是下图中必须相同的servlet-name)-servlet.xml” 这样的文件加载,也就是springmvc-servlet.xml。

  • 配置ContextLoaderListerner:Spring MVC在Web容器中的启动类,负责Spring IOC(IOC介绍)容器在Web上下文中的初始化。

(1)编写servletname-servlet.xml文件:主要是扫描包、注解、视图解析器配置

    <!-- 扫描包 spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean-->
    <context:component-scan base-package="com.controller"/>

    <!-- don't handle the static resource -->
    <mvc:default-servlet-handler />

    <!-- 注解驱动-->
    <mvc:annotation-driven />

   <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀   如:http://127.0.0.1:8080/springmvc/jsp/****.jsp-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
            id="internalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

(2)servlet配置主要是配置前端控制器DispatcherServlet:

  • 启动前端控制器DispatcherServlet
  • 配置匹配映射Mapper
 <!-- 配置前端控制器DispatcherServlet -->
 <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- 初始applicationContext.xml:applicationContext.xml配置文件也可以使用<init-param>标签在servlet标签中进行配置 -->
      <init-param>
      <!-- 配置spring文件 -->
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc-servlet.xml</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
  </servlet>

  <!-- 配置请求地址拦截url -->
  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>

关于servlet定义DispatcherServlet还需要特别注意如下图提示的细节:

这里写图片描述

(3)配置contextConfigLocation初始化参数:

<!-- 如果不配置contextConfigLocation,则会默认寻找<servlet-name>标签中定义的值,也就是默认找到WEB-INF(classpath)/springmvc-servlet.xml -->
<context-param>
    <!-- 指定spring bean的配置文件所在目录 -->
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc-servlet.xml</param-value>
</context-param>

(4)配置ContextLoaderListerner:

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

三、web.xml其他的标签

(1)标识项目的名称:

<display-name>SpringMVC</display-name>

(2)设置字符编码方式:

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

(3)欢迎页:

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

(4)错误页:

<!-- 后台程序异常错误跳转页面 -->
<error-page> 
  <exception-type>java.lang.Throwable</exception-type> 
  <location>WEB-INF/error.jsp</location> 
</error-page> 

<!-- 500跳转页面-->
<error-page> 
  <error-code>500</error-code> 
  <location>/WEB-INF/500.jsp</location> 
</error-page> 

<!-- 404跳转页面 -->
<error-page> 
  <error-code>404</error-code> 
  <location>/WEB-INF/404.jsp</location> 
</error-page>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值