文档章节

镜子的Spring之旅 之 Spring MVC

镜子哥哥
 镜子哥哥
发布于 2016/08/09 16:30
字数 879
阅读 8
收藏 0
点赞 0
评论 0

Spring MVC

基于模型-视图-控制器(Model-View-Controller)实现,该web框架用于构建灵活和松耦合的web应用程序。

spring mvc过程

图上的标注很详细,下面是个人理解:

1.请求进入DispatcherServlet(SpringMVC的前端控制器);2.由其查询一个或多个处理器映射(根据请求所携带的url信息决策);3.将请求发送给对应控制器;4.控制器完成逻辑处理后产生模型(model,一些需返回给用户并在浏览器上显示的信息),格式化后标示出用于渲染的视图名称 ;5.使用视图解析器将逻辑视图匹配到一个特定的视图;6.请求通过视图实现。

搭建SpringMVC

1.配置DispatcherServlet

将下列servlet加入web.xml

<servlet>
  <servlet-name>yourName</servlet-name>
  <servlet-class>
org.springframwork.web.servlet.DispatcherServlet
  </servlet-class>
  <load-on-startup>1</load-on-startup>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath: servlet-context.xml</param-value>
  </init-param>
</servlet>

注:默认情况下Dispatcher在加载时会从一个基于这个Servlet名字的xml文件(youName-servlet.xml)中加载Spring应用上下文,可以像上文那样配置路径。

** 2.匹配DispatcherServlet**

<serlevt-mapping>
  <servlet-name>yourName</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

注:通过将Dispatcher映射到/,声明它会作为默认的servlet并且会处理所有请求(包括对静态资源的)。也可用mvc:resources建立一个服务于静态资源的服务器。

在servlet-context.xml中加入

<mvc:resources mapping=”/resources/**” location=”/resources/” />

属性mapping代表路径必须以/resourses开始,也包含了其所有子类,location表明了提供服务的文件位置,

3.配置处理器映射

Spring自带多个处理器映射:

BeanNameUrlHandlerMapping, ControllerBeanNameHandlerMapping, ControllerClassNameHandlerMapping, DefaultAnnotationHandlerMapping, SimpleUrlHandlerMapping.

创建处理器映射,通常只需在Spring中配置一个Bean。如果没有找到,Dispatcher将创建 并使用BeanNameUrlHandlerMapping 和 DefaultAnnotationHandlerMapping。 恰好主要使用基于注解的控制器类,后者就满足需求了。

在servlet-context.xml中配置

<mvc:annotation-driven />

** 4.定义控制器**

Class前加注解 @Controller 声明该类为控制器类,

方法前加注解 @RequestMapping({“/”, ”/home”}) 指明该方法处理页面”/“或者”/home”路劲请求。 需在 servlet-context.xml中配置自动扫描

<context:component-scan base-package=”com/example/controller”/>

5.测试控制器

Junit测试,此步可略,主要妨出错。

6.解析视图

Spring自带多个视图解析器,以InternalResourceView 为例,它通过为逻辑视图名称添加前缀和后缀来确定Web应用程序中模板的路径。

假设已经将所有的jsp放在”/WEB-INF/views“目录下,可在sevlet-context中配置

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/"/>
    <property name="suffix" value=".jsp"></property>
</bean>

可通过添加<property name= ”viewClass” value= " "/> 引入其他视图支持。

注:之前使用过的一套框架使用的视图解析器为FreeMarker的,感觉现在比较流行于是搜了下http://my.oschina.net/HuifengWang/blog/300461#comment-list,这里解释的还不错。别的视图解析器网上细节很多,此处就不表了。

7.定义视图

就是写网页,与后端处理对应。

8.完成Spring应用上下文

将Spring mvc与Spring其它文件整合

在web.xml里加入

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

applicationContext.xml的文件位置就可以有两种默认实现:

  • 第一种:直接将之放到/WEB-INF下,之在web.xml中声明一个listener;

  • 第二种:将之放到classpath下,但是此时要在web.xml中加入<context-param>,用它来指明你的applicationContext.xml的位置以供web容器来加载

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath: root-context.xml</param-value>
</context-param>

© 著作权归作者所有

共有 人打赏支持
镜子哥哥
粉丝 1
博文 19
码字总数 14425
作品 0
广州
Spring MVC 到 Spring BOOT的简化之路

背景 从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷。但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的朋友能深刻体会到这一痛苦。因为...

临江仙卜算子 ⋅ 05/09 ⋅ 0

Spring、Spring Boot与Spring MVC

总论 Spring框架就像一个家族,有众多衍生产品例如boot、security、jpa等等。但他们的基础都是Spring的ioc和aop。ioc提供了依赖注入的容器,aop解决了面向横切面的编程;然后在此二者的基础上...

临江仙卜算子 ⋅ 05/08 ⋅ 2

spring boot简单实现rest服务

问题 最开始我是想使用Spring MVC搭建一个简单的REST服务,去官网看了看教程,现在Spring胆越来越大了,需要我集成一个maven的父项目,我并不愿意继承Spring的父项目。然后,就开始下面的探索...

亚林瓜子 ⋅ 06/12 ⋅ 0

spring mvc 配置失效了?

版本:spring 3.0以上 项目中有两个spring的配置xml,如下 项目中的web.xml web.xml的配置如下: 1、ContextLoaderListener加载applicationContext-service-database.xml 2、DispatcherServl...

听柳 ⋅ 05/31 ⋅ 0

Spring Boot干货系列: (四)开发Web应用之Thymeleaf篇

        前言   Web开发是我们平时开发中至关重要的,这里就来介绍一下Spring Boot对Web开发的支持。   正文   Spring Boot提供了spring-boot-starter-web为Web开发予以支持,s...

后端编程嘟 ⋅ 2017/03/13 ⋅ 0

项目中SpringMVC、Spring和Struts的区别讲解

导读:近期做到的项目中,用到的框架师SSM(SpringMVC+Spring+Mybatis),那么在这之前用过SSH,这里主要是区分一下SpringMVC和Struts,但是由于SpringMVC和Spring真的也挺容易迷糊的,所以,...

yiguang_820的博客 ⋅ 2017/12/11 ⋅ 0

Spring MVC集成Spring Data Reids和Spring Session实现Session共享

说明:Spring MVC中集成Spring Data Redis和Spring Session时版本是一个坑点,比如最新版本的Spring Data Redis已经不包含Jedis了,需要自行引入。且最新版本的2.0.1会与Spring MVC 4.1.4有冲...

easonjim ⋅ 2017/11/10 ⋅ 0

【问题解决】SSM-@Transactional注解事务无效探讨

Spring SpringMVC MyBatis框架中-@Transactional注解事务无效解决方法 SpringMVC-Spring-MyBatis框架 数据库:SQL SERVER 2008 以前都是用的MySQL数据库,没有出现这个问题,现在换成sql ser...

qq_26525215 ⋅ 2017/08/21 ⋅ 0

Spring MVC温故而知新 – 从零开始

Spring MVC简介 Spring MVC是一款基于MVC架构模式的轻量级Web框架,目的是将Web开发模块化,对整体架构进行解耦。 Spring MVC有一下优点: 作为Spring框架的一部分,拥有Spring的优点(IOC,A...

Java工程师-Distance ⋅ 05/18 ⋅ 0

Spring MVC 之基本配置和请求流程

Spring MVC 基本配置项 SpringMVC是目前Web程序和前端数据交互的框架,包括文件上传,静态资源下载,api接口数据返回等,主要是配置一个spring-mvc.xml的配置文件,这个配置文件是给org.spr...

满小茂 ⋅ 2016/07/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会

摘要: 一、数据中台之道 6月8日,上海云栖大会进入了第二天的议程,数据中台专场论坛座无虚席,数据中台总架构师邓中华女士向在场的观众介绍了数据中台的衍生发展之道。 基于OneID、OneData...

阿里云云栖社区 ⋅ 23分钟前 ⋅ 0

Ubuntu部署django问题汇总

使用Anaconda3的Python3.6的pip安装UWSGI报错 原因是gcc版本不兼容,安装4.7并修改gccsudo apt-get install gcc-4.7sudo mv /usr/bin/gcc /usr/bin/gcc.baksudo ln -s /usr/bin/gcc-4.......

wuyaSama ⋅ 26分钟前 ⋅ 0

从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会

摘要: 一、数据中台之道 6月8日,上海云栖大会进入了第二天的议程,数据中台专场论坛座无虚席,数据中台总架构师邓中华女士向在场的观众介绍了数据中台的衍生发展之道。 基于OneID、OneData...

猫耳m ⋅ 26分钟前 ⋅ 0

Docker减肥小记

如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察 如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无用的镜像、容器、网络和数据卷… 1、查看...

寰宇01 ⋅ 37分钟前 ⋅ 0

微信小程序中如何使用WebSocket实现长连接(含完整源码)

本文由腾讯云技术团队原创,感谢作者的分享。 1、前言 微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架、组件以及 API,在这个平台上面的想象空间很大。腾讯云研究了一...

JackJiang- ⋅ 45分钟前 ⋅ 0

定制库到Maven本地资源库

1.如果只有定制库的JAR文件 下载链接如下:pdf.jar 2.使用命令转换成Maven本地资源 mvn install:install-file -Dfile=/Users/manager/Downloads/clj-pdf-2.2.33.jar -DgroupId=clj-pdf -Dar......

年少爱追梦 ⋅ 49分钟前 ⋅ 0

高仿springmvc之xuchen-mvc

package org.mvc.framework.servlet; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.......

徐志 ⋅ 51分钟前 ⋅ 0

关于自定义URLStreamHandler的一次踩坑

关于自定义URLStreamHandler的一次踩坑 20180625 lambo init 说明 一般自定义实现url的协议解析.方案为实现URLStreamHandler.实现其 openConnection 就可以了, 如果我们执行 new URL("xx://...

林小宝 ⋅ 52分钟前 ⋅ 0

【SM2证书】利用BC的X509v3CertificateBuilder组装X509国密证书

演示证书文件 链接: https://pan.baidu.com/s/1ijHNnMQJj7jzW-jXEVd6Gg 密码: vfva 所需jar包 <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk15on --> <dependenc......

小帅帅丶 ⋅ 53分钟前 ⋅ 0

用Calendar 实现 计算 一段时间的毫秒值

Calendar c=Calendar.getInstance();c.add(Calendar.MONTH, -1);int lastMonthMaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH)......

岸芷汀兰 ⋅ 57分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部