spring和springmvc配置分离
在配置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配置分离的更多相关文章
- Spring,SpringMvc配置常见的坑,注解的使用注意事项,applicationContext.xml和spring.mvc.xml配置注意事项,spring中的事务失效,事务不回滚原因
1.Spring中的applicationContext.xml配置错误导致的异常 异常信息: org.apache.ibatis.binding.BindingException: Invalid ...
- Spring和SpringMVC配置中父子WebApplicationContext的关系
一.前言 有这么一个故事:一辆装满石头的板车,一根绳子系着,起初绳子没有拉直,拉绳的人以为很轻,等真的绷直了才发现自己的力气根本不够~人往往喜欢得过且过,但是有些东西真的是绕不过的,所以现在必须努力的 ...
- Spring、springmvc配置
首先把三个文件copy到resources目录下: 然后把这两个文件copy到WEB-INF下: 在datasource.properties中增加: db.driverLocation=C:\\Us ...
- 杂谈spring、springMVC
一.背景 目前项目组都在用SSM(spring+springMVC+mybatis)开发项目 大家基本都停留在框架的基本使用阶段,对框架的职责并不清晰,导致配置文件出现了不少问题 在这简单讲解一下sp ...
- SSM ( Spring 、 SpringMVC 和 Mybatis )配置详解
使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ...
- SpringMVC+Spring+mybatis项目从零开始--Spring mybatis mysql配置实现
上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mysql等相关配置. 1. 外部架包依赖引入 外部依赖包引入 ...
- 【Spring】SpringMVC非注解配置的两种方式
目录结构: contents structure [+] SpringMVC是什么 Spring MVC的设计原理 SpringMVC配置的第一种方式 1,复制Jar包 2,Web.xml文件 3,M ...
- Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置
用过 Spring Boot 的小伙伴都知道,我们只需要在项目中引入 spring-boot-starter-web 依赖,SpringMVC 的一整套东西就会自动给我们配置好,但是,真实的项目环境比 ...
- 配置struts2+spring,springmvc
Struts2+Spring整合 一.spring负责注入,struts2负责它自己的工作.这样不是很符合spring作为ioc容器的全部功能,不推荐. 二.spring负责全部bean和struts ...
随机推荐
- ggplot2 multiply graphs on one figure
library(ggplot2)library(grid)grid.newpage()pushViewport(viewport(layout = grid.layout(1,2)))vplayout ...
- 词频统计V2.5
一.前言 作业具体要求见[https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/922].一开始用JAVA写了个词频统计,然而没想出输入格式 ...
- ubuntu yolov2 训练自己的数据集
项目需求+锻炼自己,尝试用yolov2跑自己的数据集,中间遇到了很多问题,记下来防止忘记 一.数据集 首先发现由于物体特殊没有合适的现成的数据集使用,所以只好自己标注,为了减少工作量,先用opencv ...
- spring--多人开发,模块化配置
需要在配置文件中配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...
- centos7使用snmp
一.安装snmp net-snmp :服务端 net-snmp-utils:客户端工具集 二.启动 systemctl start snmpd 三.修改配置文件(完整的配置文件如下) com ...
- istream不是std的成员
如果报错信息为:istream不是std的成员,那么有两种可能 1.没有包含iostream库文件 2.#ifndef 和#endif使用错误,致使包含的iostream的头文件没有被主函数包含
- 黄聪:什么是XSS攻击
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中.比如这些代码包括HTML代码和客户端脚本.攻击者利用XSS漏洞旁路掉访问控制——例如同源 ...
- *浅解嵌入式中的BootLoader
本文只作为本人学习过程中的记录及时不时的突发奇想偶记.鄙人菜鸟一只,文中如有错误或疏漏,若读者肯不吝赐教,在下感激零涕.文章一直不断更新中 一.何为Bootloader 在嵌入式系统中,Bootloa ...
- 如何修改element.style内联样式;
如何修改element.style内联样式: 我们在写前面 web页面样式的时候,会发现有些时候,我们怎么修改 style里面的值,页面上的样式都不会修改,当你用工具查看时,会发现里面会有 eleme ...
- Android 梯形进度条、下载进度条;
额,Gif有点卡: 梯形.矩形.圆角.背景色.前景色.进度条中的文字都可以改: <?xml version="1.0" encoding="utf-8"? ...