在配置springmvc的时候,我们可以把所有配置配置到springmvc的xml文件中, 也可以分多个 Spring 的配置文件, 然后使用 import 节点导入其他的配置文件。

但是,通常情况下, 类似于数据源, 事务, 整合其他框架都是放在 Spring 的配置文件中(而不是放在 SpringMVC 的配置文件中),实际上应该放入 Spring 配置文件对应的 IOC 容器中的还有 Service 和 Dao。

一、

配置spring配置文件的本质是单独加入Spring 的 IOC 容器,来管理数据源,Service,Dao这些“属于spring自身”的bean,而让springmvc的IOC容器专心管理Controller,视图解析器 等属于springmvc自己的内容。

那么如何在springmvc项目中配置spring的配置文件呢,只需在web.xml文件中做如下配置本质就是配置启动 Spring IOC 容器的 ContextLoaderListener,

其中的spring-context.xml就是spring的配置文件,也可看作是它的IOC容器。配置文件中主要配置扫描serivce,dao的包,数据源信息,事务等。

<!-- 配置启动 Spring IOC 容器的 Listener -->
    <!-- needed for ContextLoaderListener -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-context.xml</param-value>
    </context-param>

<!-- Bootstraps the root web application context before servlet initialization -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

二、

下面是web.xml中对springmvc的配置,其中的springmvc.xml就是springmvc的配置文件,也可看作是它的IOC容器。开始说的把Service 和 Dao,数据源都可以放这里,只不过有些臃肿。一般情况下我们只在该文件中配置扫描Controller的包,视图解析器等。

<servlet>
        <servlet-name>springDispatcherServlet</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>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

补充:JS、CSS、Image静态资源的访问

JS等静态文件夹位置放在webapp下面

第一种:

如果springDispatcherServlet 配置的拦截路径不是上面的"/",而是*.do或*.action等有后缀的路径,这样dispatchservlet 只拦截*.do或*.action的url. 并不拦截css,js等静态资源

让SpringMVC只拦截动态请求,js、css、img等静态资源不经过Spring,直接让Web容器处理,静态资源不走Spring,也不走拦截器,性能当然是比较好的。

第二种:

如果springDispatcherServlet配置的拦截路径就是是上面的"/",拦截所有的请求url,静态资源不再由Tomcat处理,所以必须在SpringMVC中再次配置

<mvc:resources mapping="/images/**" location="/images/"/>
 <mvc:resources mapping="/js/**" location="/js/"/>
 <mvc:resources mapping="/css/**" location="/css/"/>

让SpringMVC把static静态资源也处理了。显然,让SpringMVC处理静态资源的性能没有Tomcat直接处理比较高。

第三种:

如果springDispatcherServlet配置的拦截路径就是是上面的"/",可以不用第二种方法,

去掉 <mvc:resources mapping="/static/**" location="/static/" />,不做静态资源请求的映射。

在web.xml里增加如下配置:

<servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/static/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

  <!--   spring mvc配置   -->
<servlet>
<servlet-name>springweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springweb-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springweb</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>

激活Tomcat的defaultServlet来处理静态文件。这样 SpringMVC不再响应静态资源。

补充:对springmvc项目,如果想直接访问 jsp页面,而不是通过控制器指定页面名字的方式访问,需让jsp页面别放到WEB-INF下即可。WEB-INF/是资源目录, 客户端不能直接访问

放到WEB-INF下的jsp页面需要通过控制器指定页面路径(不包括后缀名.jsp)的方式访问

没放在WEB-INF下的jsp页面可以直接通过url路径访问(需全路径包含后缀名.jsp),也可以通过控制器指定页面路径(不包括后缀名.jsp)的方式访问

如:直接访问http://th5.yihu365.com:81/page/thridGh/index.jsp

或通过控制器指定页面名称访问,http://th5.yihu365.com:81/yihudaojia/intoGHPage_V2?sign=8688CFF9B5A430AE005FD61329A002A9&partner=yixinxinxikeji&thirdPartId=1181&phone=15588886666

通过控制器访问view,可以携带后台处理的数据如 model.addAttribute("SID", SID); 直接访问则不可以,因为没有后台。

spring和springmvc配置分离的更多相关文章

  1. Spring,SpringMvc配置常见的坑,注解的使用注意事项,applicationContext.xml和spring.mvc.xml配置注意事项,spring中的事务失效,事务不回滚原因

    1.Spring中的applicationContext.xml配置错误导致的异常 异常信息: org.apache.ibatis.binding.BindingException: Invalid ...

  2. Spring和SpringMVC配置中父子WebApplicationContext的关系

    一.前言 有这么一个故事:一辆装满石头的板车,一根绳子系着,起初绳子没有拉直,拉绳的人以为很轻,等真的绷直了才发现自己的力气根本不够~人往往喜欢得过且过,但是有些东西真的是绕不过的,所以现在必须努力的 ...

  3. Spring、springmvc配置

    首先把三个文件copy到resources目录下: 然后把这两个文件copy到WEB-INF下: 在datasource.properties中增加: db.driverLocation=C:\\Us ...

  4. 杂谈spring、springMVC

    一.背景 目前项目组都在用SSM(spring+springMVC+mybatis)开发项目 大家基本都停留在框架的基本使用阶段,对框架的职责并不清晰,导致配置文件出现了不少问题 在这简单讲解一下sp ...

  5. SSM ( Spring 、 SpringMVC 和 Mybatis )配置详解

    使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ...

  6. SpringMVC+Spring+mybatis项目从零开始--Spring mybatis mysql配置实现

    上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mysql等相关配置. 1.    外部架包依赖引入 外部依赖包引入 ...

  7. 【Spring】SpringMVC非注解配置的两种方式

    目录结构: contents structure [+] SpringMVC是什么 Spring MVC的设计原理 SpringMVC配置的第一种方式 1,复制Jar包 2,Web.xml文件 3,M ...

  8. Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置

    用过 Spring Boot 的小伙伴都知道,我们只需要在项目中引入 spring-boot-starter-web 依赖,SpringMVC 的一整套东西就会自动给我们配置好,但是,真实的项目环境比 ...

  9. 配置struts2+spring,springmvc

    Struts2+Spring整合 一.spring负责注入,struts2负责它自己的工作.这样不是很符合spring作为ioc容器的全部功能,不推荐. 二.spring负责全部bean和struts ...

随机推荐

  1. centos安装VirtualBox增强包VBoxGuestAdditions

    1.如果你的CentOS 版本早于 6,那么需要在 /etc/grub.conf 中添加一行 divider=10,以将这个参数传递给核心,以减少 idle CPU load.   2.#yum up ...

  2. SQLI DUMB SERIES-12

    (1)检测闭合方式:在username上输入" admin" " 说明输入的username后还有双引号和括号 方法一: (2)通过其他途径知道用户名即可.如 输入&qu ...

  3. spring boot 1.4 整合 mybatis druid

    http://www.jianshu.com/p/cef49ad91ba9spring boot 1.4 整合 mybatis druid

  4. LeetCode - X of a Kind in a Deck of Cards

    In a deck of cards, each card has an integer written on it. Return true if and only if you can choos ...

  5. Actifio CDS 2TB MDisk limits

    **** updated 7 Aug 2016 - reformatted and corrected out of date info *** Background Depending on you ...

  6. 搭建自己的Docker registry(五)

    弄了一天,在网上查了很多资料,感觉都好复杂好复杂,一步一步踩坑踩出来就好了. 服务器:阿里云(香港) 环境:CentOS Linux release 7.4.1708 (Core) Docker:1. ...

  7. laravel whereNotIn where子查詢

    子查詢寫法 $stores = Stores::select('id','name')->whereNotIn('id', function ($query) use($id){ $query- ...

  8. asp.net:mv4 FileResult在IE8中下载不显示文件名和扩展名而显示Action方法名了!

    IE8下,用户点击下载文件,会发现文件类型失丢的问题,解决方案如下: //IE8下载时,只显示action的名字,没有文件名和后缀 @仰止网Simba //return File(bufferbyte ...

  9. mongodb集群配置分片集群

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

  10. C风格字符串和C++string对象的相互转化

    一.C风格的字符串转化为C++的string对象 C++中,string 类能够自动将C 风格的字符串转换成string 对象   #include <iostream> #include ...