linux spring mvc tomcat配置,Spring MVC配置详解

一、Spring MVC处理流程

1.Spring MVC将所有请求都交由DispatchServlet进行处理。

2.DispatchServlet获取HandlerMapping(处理映射器),然后找到对应的HandlerBean处理Controller请求,并返回一个ModelAndView对象。

3.DispatchServlet查询一个或多个ViewResolver视图解析器对象, 并把视图渲染返回给前端。

二、相关配置

首先配置web.xml,我们根据组件启动顺序:全局参数、Listener监听器、Filter过滤器、Servlet、的顺序配置。

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">

contextConfigLocation

classpath*:applicationContext.xml

org.springframework.web.context.ContextLoaderListener

openSessionInterceptor

org.springframework.orm.hibernate5.support.OpenSessionInViewFilter

openSessionInterceptor

/*

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

encodingFilter

/*

context

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath*:/spring-mvc.xml

context

/

我们首先配置了org.springframework.web.context.ContextLoaderListener的Context监听器,我们以Tomcat为例:

1、他启动的时候会去读取配置文件web.xml,首先读两个节点: 和 ,然后创建一个ServletContext,整个web项目将共享这个Context。(意味着,我们这个项目将以spring MVC的context方式启动)

2.容器将的内容以键值对的形式交给Listener,配置中,我们配置了contextConfigLocation,也就是springmvc配置文件的位置,作为启动springContext的配置文件,这个值在容器启动的时候监听器执行contextInitialized方法可以拿到,然后 sc.getInitParameter(CONFIG_LOCATION_PARAM)获得配置文件路径,再根据配置文件路径初始化容器。(Spring源码如下)

1 String configLocationParam =sc.getInitParameter(CONFIG_LOCATION_PARAM);2 if (configLocationParam != null) {3 wac.setConfigLocation(configLocationParam);4 }

其中,ConfigLocationPraram是常量

1 public static final String CONFIG_LOCATION_PARAM = "contextConfigLocation";

3.接下来是两个过滤器,分别是openSessionInterceptor为了给每个请求绑定HibernateSession的,在GetCurrentSession的时候可以由Spring进行统一管理,无需手动干扰,另外一个是字符集过滤器,将请求的编码统一。

4.最后是DispatchServlet调度器,他是SpringMVC的核心,他拦截了所有请求,并将请求统一管理。注意:拦截路径必须写成/,不能写成/*,因为“/*”意为拦截所有请求,只要是请求一律拦截,而“/”意为将DispatcherServlet作为default Servlet(默认是org.apache.catalina.servlets.DefaultServlet),所有其他路径映射未匹配情况下才会交由它处理。而由于隐式映射的关系,使得 .jsp 扩展名被映射到静态资源进而被执行。

例如配置成“/*”执行过程中遇到的:

902207b0479c93df7c12bca6dafaeebc.png

配置成“/*”他将拦截所有请求,当返回视图路径资源时,请求资源的请求被当成了servlet给拦截了,进而想要执行对应的Controller,发现没有对应的视图,但是根本不存在导致404错误。

接下来配置springMVC配置文件

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/tool"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd">

这是spring mvc配置文件,因为我们使用注解方式开发,所以要使用扫描包,扫描注解,其实默认就是扫描注解的,所以可以直接写成:

第二个是视图解析器,他将配合控制器使用:

控制器代码如下:

@Controller

public class LoginController{

@Resource

private UserService userService;

@RequestMapping("/index.do")

public String index(){

return "index";

}

}

@Controller注解说明这是一个控制器Bean,他会被HandlerMapping管理到,

@RequestMapping注解,声明了servlet的访问路径,里面有多个属性:

value:指定请求的实际地址

method:  指定请求方式,GET、POST、PUT、DELETE等;(默认Get请求)

consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

params: ��定request中必须包含某些参数值是,才让该方法处理。

headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

最后返回的“index字符串将会和视图解析器的前缀和后缀进行拼接形成新的路径”:即/WEB-INF/pages/index.jsp;

请求的时候只要http://地址:端口/项目名/实际的RequestMapping名称即可,如:http:localhost:8080/springDemo/index.do

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在linux里面运行ncl,NCL基础讲解(二)——NCL安装与运行

NCL基础讲解(二)——NCL安装与运行兰溪之水2015-11-04上一期已经给大家简单介绍了NCL的基本情况,既然NCL在科学数据分析和可视化方面有那么多优点,那还等什么,让我们一起“用”起来吧!这一期给大家介绍NCL的安装与运行。关于NCL的…

C#值类型和引用类型的不同

1 C#中有两种类型: 值类型和引用类型: 值类型的变量直接包含他们的数据,引用类型存储对他们的数据的引用,后者称为对象: 简单说:值类型直接存储其值,引用类型存储对值得引用.引用类型分为引用和引用的对象。2…

linux malloc命令,减少 curl 中内存分配操作(malloc)

今天我在 libcurl 内部又做了一个小改动,使其做更少的 malloc。这一次,泛型链表函数被转换成更少的 malloc (这才是链表函数应有的方式,真的)。研究 malloc几周前我开始研究内存分配。这很容易,因为多年前我们 curl 中就已经有内存…

flume linux 命令,flume启动命令 · Mr.Deng’s Blog

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?突然发现拖了很久的flume启动命令了,今天就简单讲讲flume的启动命令吧。如何启动flumeflume目录以上是安装flume的目录,flume的启动主要是在…

stm32 IAP + APP ==双剑合一

(扩展-IAP主要用于产品出厂后应用程序的更新作用,上一篇博文详细的对IAP 升级程序做了详细的分析http://blog.csdn.net/yx_l128125/article/details/12992773,考虑到出厂时要先烧写IAP 再烧写APP应用程序要烧写2次增加工人劳动力基础上写了“…

花旗linux 内核 如何调试,揭秘首个运行在Linux平台的核心银行系统

上个星期社区进行了一场直播,关于“新一代核心银行系统解决方案CBOD”——首个运行在Linux平台的核心银行系统。国外上线Linux核心系统的银行已经不少,例如花旗银行在主机系统上装载了Linux系统,处理所有信用卡交易和认证交易,但国…

360发布穿戴设备“儿童卫士”手环

10月29日下午消息,360今日召开发布会发布“儿童卫士”手环,可随时定位孩子位置,并具备安全区域预警、通话连接等功能。这款手环售价199元,将于12月开始销售。 据360透露,儿童卫士具备三大功能: 一、随时定位…

layout_gravity 和 gravity

LinearLayout有两个非常相似的属性: android:gravity与android:layout_gravity。 他们的区别在于: android:gravity 属性是对该view中内容的限定.比如一个button 上面的text. 你可以设置该text 相对于view的靠左,靠右等位置&…

如何用Jquery做图片展示效果

一. 前言 到底用JQuery做出怎样的展示效果? 让我们先来看一下!网页加载时,如图所示: 二.本人思路 这个效果初学者看起来好像有点复杂,其实不太难,关键是理清思路,从后端的数据库中找出我们要展示的图档,将…

linux版本的redis bin,Linux下安装Redis4.0版本(简便方法)

Redis介绍:Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化RDB和AOF,可以将内存中的数据保存在磁盘中,重启的…

win7创建虚拟无线网络

如何用WIN7建立无线热点,供没有无线网的我们在家里轻松使 如何用WIN7建立无线热点,供没有无线网的我们在家里轻松使用,不过你家得有宽带吧!《转》来源: 董昱的日志开启windows 7的隐藏功能:虚拟WiFi和SoftA…

OpenCV图像分割-watershed

转自:Tiger & Pi http://blog.163.com/my_645/blog/static/369785222013310619742/Watershed就是传说中的分水岭算法, 它将一幅图像看成是一块有湖泊和山川组成的地形。 图像灰度值大的像素对应海拔高的山地, 灰度值低的像素对应于海拔低…

MyEclipse下安装MyBatis Generator代码反向生成工具

在http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/下载 features/plugins/里面所有的jar包,新建一个mybatis-generator文件夹,把features跟plugins都丢到mybatis-generator文件夹中,把mybatis-generato…

linux的rootkit工具包,免费Linux杀毒软件Anti-Virus分享

ClamAVClamAV是一个免费的、开源的、通用的Linux系统杀毒工具包。它被用于检测木马,病毒,恶意软件和其他恶意威胁。是邮件网关扫描软件的标准;它支持几乎所有的邮件文件格式。它的主要功能有:它是跨平台的,适用于Linux、Windows和…