• springmvc配置文件


     1.springmvc 接受请求访问的流程如下所示:

    即:

    DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。 
    但是,我们在搭建SpringMVC框架时,往往总是把DispatcherServlet的配置文件放错位置。网上有的说:springDispatcherServletMVC-servlet.xml(暂且命名这么一个springDispatcherServletMVC的dispatchservlet配置文件)应该放在WEB-INF下面(与web.xml放一起);有的说:应该直接把springDispatcherServletMVC-servlet.xml放在src文件夹下面;有的说:在java resources下面新建一个config的resource folder,把配置文件都放在这个资源文件夹下面。那么到底哪种是正确的呢? 
    
    答案是:这个要根据web.xml中DispatcherServlet的配置声明有关系。
    

      

    关于url-pattern的配置
    url-pattern配置有三种:
    1.*.do 访问以.do结尾的由DispatcherServlet进行解析.
    
    /(斜杠) 所有访问的地址都由DispatcherServlet进行解析,对于静态的文件解析需要配置,不让DispatcherServlet进行解析.
    注意:使用此种方式可以实现 RESTful风格的url.
    /* 这样配置不对,使用这种配置,最终要转发到一个jsp页面时,仍然会由DispatcherServlet进行解析,但是不能根据这个jsp页面找到handler所以会报错.
    
    
    注意:当你配置了Spring MVC,同样还是需要在web.xml中配置ContextLoaderListener监听器的,虽然Spring MVC是Spring的一个模块,可以做到无缝整合,但是他们的配置是独立的.
    

    springmvc的配置文件一般都是在web.xml里面指定位置的。其实,springmvc的配置文件有默认位置。因此,存在两种配置方式:

    (1)采用指定位置配置方式,即在web.xml配置文件中指定springmvc配置文件的位置。

    当web.xml中DispatcherServlet配置声明中,已经明确DispatcherServlet前端控制器配置文件的位置时,则必须将前端控制器的配置文件放在src下面,不能放在webcontent(webapp)下了,当然,在src的各级子文件夹中也是可以的。一般放在java resources下面,或者在resources下新建一个config的文件夹专门用来存放配置文件,把配置文件都放在这个资源文件夹下面。这种方式也是用的最多的一种。
    文件结构如下: 
    <!-- springmvc 前端控制器 -->
        <servlet>
            <servlet-name>dispatcherSerlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <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>dispatcherSerlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    

     上面代码中,明确了contextConfigLocation的地址为:classpath:(即在classess文件夹下面),而且命名为springmvc.xml(或者其他名称都可以),指定配置文件位置时,这个配置文件的名字可以随便取。 

    (2)采用默认位置配置方式

    当web.xml中DispatcherServlet配置声明中,没有明确DispatcherServlet前端控制器配置文件的位置时,则系统默认DispatcherServlet前端控制器配置文件放在WEB-INF文件夹下。

    文档结构如下:

     

    <!--  Spring MVC 的Servlet,它将加载WEB-INF/springDispatcherServlet-servlet.xml 的配置文件,以启动Spring MVC模块-->    
        <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>*.do</url-pattern>
        </servlet-mapping> 

    上面代码声明了一个命名为springDispatcherServlet的前端控制器(DispatcherServlet),并且没有指定该servlet配置文件的路径,那么系统将以默认名字springDispatcherServlet-servlet.xml在默认路径/WEB-INF下寻找它,位置不正确,名字不正确,都会报错。(这种命名是规定好的,前端控制器的名字-servlet这种形式。)

     下面是spring-servlet.xml的配置

     1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:context="http://www.springframework.org/schema/context"
     4        xmlns:mvc="http://www.springframework.org/schema/mvc"
     5        xmlns:p="http://www.springframework.org/schema/p"
     6        xmlns:websocket="http://www.springframework.org/schema/websocket"
     7        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     8        xsi:schemaLocation="http://www.springframework.org/schema/beans
     9        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    10        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    11        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
    12        http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd">
    13     <!-- <mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。它提供了数据绑定支持,读取json的支持 -->
    14     <mvc:annotation-driven />  
    15     
    16     <!-- 设置自动注入bean的扫描范围,use-default-filters默认为true,会扫描所有的java类进行注入 ,-->    
    17     <!-- Use-dafault-filters=”false”的情况下:<context:exclude-filter>指定的不扫描,<context:include-filter>指定的扫描 -->
    18     <!-- springmvc和application文件都需要配置,但mvc文件只扫描controller类,application扫描不是controller类 -->    
    19     <context:component-scan base-package="mytest.*" use-default-filters="false">
    20         <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
    21     </context:component-scan>
    22     
    23     <!-- 文件上传功能需该配置 -->
    24     <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">
    25     <property name="defaultEncoding" value="UTF-8"/>
    26     </bean>
    27     
    28     <!-- ResourceBundleThemeSource是ThemeSource接口默认实现类-->
    29     <bean class="org.springframework.ui.context.support.ResourceBundleThemeSource" id="themeSource"/>
    30     
    31     <!-- 用于实现用户所选的主题,以Cookie的方式存放在客户端的机器上-->
    32     <bean class="org.springframework.web.servlet.theme.CookieThemeResolver" id="themeResolver" p:cookieName="theme" p:defaultThemeName="standard"/>
    33     
    34     <!-- 由于web.xml文件中进行了请求拦截
    35         <servlet-mapping> 
    36             <servlet-name>dispatcher</servlet-name> 
    37             <url-pattern>/</url-pattern> 
    38         </servlet-mapping> 
    39     这样会影响到静态资源文件的获取,mvc:resources的作用是帮你分类完成获取静态资源的责任
    40     -->
    41     <mvc:resources mapping="/resources/**" location="/WEB-INF/resources/" />
    42     
    43     <!-- 配置使用 SimpleMappingExceptionResolver 来映射异常 -->
    44     <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" >
    45     
    46     <!-- 定义默认的异常处理页面 -->  
    47     <property name="defaultErrorView" value="error"/> 
    48          <!-- 配置异常的属性值为ex,那么在错误页面中可以通过 ${exception} 来获取异常的信息如果不配置这个属性,它的默认值为exception-->
    49         <property name="exceptionAttribute" value="exception"></property>
    50         <property name="exceptionMappings">
    51             <props>
    52             <!-- 映射特殊异常对应error.jsp这个页面 -->
    53                 <prop key=".DataAccessException">error</prop>
    54                 <prop key=".NoSuchRequestHandlingMethodException">error</prop>
    55                 <prop key=".TypeMismatchException">error</prop>
    56                 <prop key=".MissingServletRequestParameterException">error</prop>
    57             </props>
    58         </property>
    59     </bean>
    60     
    61     <!-- 配置jsp视图解析器 -->
    62     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="jspViewResolver">
    63         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    64         <property name="prefix" value=""/>
    65         <property name="suffix" value=".jsp"/>
    66     </bean>
    67 </beans>

    参考链接:

    https://blog.csdn.net/qq_36324685/article/details/79928766

    https://www.jianshu.com/p/9575e95a4eda

    https://www.jianshu.com/p/6587555a7123

    https://blog.csdn.net/zwl18210851801/article/details/78489021

    http://www.cnblogs.com/ioufev/p/9950768.html

    https://blog.csdn.net/sinat_25318461/article/details/60962122

    https://www.cnblogs.com/Jason-Xiang/p/6544188.html

  • 相关阅读:
    Nginx常用命令
    Nginx进程模型
    华为联运游戏或应用审核驳回:使用花币充值时,对支付延时处理不当,导致商品不到账
    使用Data Ability读取系统设置项
    100个HarmonyOS 2.0开发者Beta公测名额,限时认领!
    【有奖活动】HarmonyOS开发者创新大赛颁奖典礼丨见证星星之火燃爆盛夏
    你其实可以更快!用Toolkit拖拽式编码方法帮你快速提升开发效率
    真机调试设备不够?华为AGConnect云调试帮你忙
    华为后台某应用商品展示价格币种随其他应用配置而变化
    HMS Core.Sparkle影音娱乐创新沙龙邀您参加
  • 原文地址:https://www.cnblogs.com/alice-cj/p/10424049.html
Copyright © 2020-2023  润新知