文档章节

镜子的Spring之旅 之 Spring MVC

镜子哥哥
 镜子哥哥
发布于 2016/08/09 16:30
字数 879
阅读 8
收藏 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
0
SpringMVC基础及应用-李守红

本文视频观看地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1141 视频大纲 ³SpringMVC简介和环境搭建 ³第一个SpringMVC实例 ³SpringMVC配置讲解 ³SpringM...

智慧点点
08/26
0
0
Spring、Spring Boot与Spring MVC

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

临江仙卜算子
05/08
0
2
spring boot简单实现rest服务

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

亚林瓜子
06/12
0
0
Spring 官方文档第十六章笔记(1):SpringMVC简介

Spring Reference第十六章笔记(1)Introduction to Spring Web MVC framework Spring MVC的核心是DispatcherServlet。DispatcherServlet根据配置文件的配置将请求分发给各个 Controller 。 ...

LiJIaming
2012/05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【转载】Linux升级安装GCC

https://itbilu.com/linux/management/V1vdnt9ll.html

goodman_fz
15分钟前
0
0
20.20 告警系统主脚本~20.22 告警系统监控项目

告警系统主脚本 main.sh内容 #!/bin/bash#Written by aming.# 是否发送邮件的开关export send=1# 过滤ip地址export addr=`/sbin/ifconfig |grep -A1 "ens33: "|awk '/inet/ {...

洗香香
18分钟前
0
0
07-利用思维导图梳理JavaSE-包与访问控制权限

07-利用思维导图梳理JavaSE-包与访问控制权限 主要内容 1.包的概念及使用 1.1.包的概念 1.2.包的作用 1.3.需要注意的问题 1.4.包的引用 2.系统常见包 2.1.java.lang包 2.2.java.io包 2.3.ja...

飞鱼说编程
18分钟前
0
0
【挑战剑指offer】系列02:替换空格

本系列的算法原题来自于“牛客网-剑指offer”,写这个板块,不仅仅是解决算法问题本身,更是手动提高难度、自行变式,思考更多的解决方案,以带给自己一些启发。 1. 【替换空格】原始题目 算...

LinkedBear
33分钟前
0
0
Win10内部更新:警告用户别用chrome和Firefox

简评:别和 Chrome 和 Firefox 约行不,我 Edge 明明更美、屁股更翘、更性感。。。 微软正在测试 Windows 10 的一个更新:警告用户不要安装 Chrome 和 Firefox。是测试人员发现的这个新警告,...

极光推送
45分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部