SpringMVC(一) —— 入门
SpringMVC原理图:

步骤:
- 首先用户发送请求。——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制。
- DispatcherServlet——>HandlerMapping, HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,使用了策略模式。
- 前端控制器调用适配器去执行Handler。DispatcherServlet——>HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用。
- 处理器适配器去执行handler。HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名)。
- 前端控制器请求视图解析器去进行视图的解析。ModelAndView的逻辑视图名——> ViewResolver, ViewResolver将把逻辑视图名解析为具体的View,再次使用策略模式。
前端控制器对视图进行渲染。 View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,所以其很容易支持其他视图技术。
- 返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。(图中的连线有错,偷懒没有改过来)。
组件介绍:
- 前端控制器(DispatcherServlet):接收请求,响应结果。
处理器映射器(HandlerMapping):根据url去查找handler。
- 处理器(Handler):(这个是我们自己写的)。
处理器适配器(HandlerAdapter):要求我们按照这个规则去写。
视图解析器(ViewResolver):把逻辑视图解析成真正的视图。真正的视图=前缀+逻辑视图名+后缀
视图(View):需要用户自己开发。
一.基于注解的HelloWorld
1.导入jar包

2.在web.xml文件中配置一个前端控制器(DispatcherServlet)
web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--
默认的配置文件的地址:/WEB-INF/servlet的名字-servlet.xml,如需另外指定
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:文件名</param-value>
</init-param>
-->
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<!--
第一种:*.html,*.action 就是过滤以.xxx结尾的
第二种:/ 所有的地址都会进入这个进行解析,静态的资源,需要添加配置
第三种:/* 他就是变态,连jsp页面都进来,结果就是报错XXXXX别用
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
3.配置处理器映射器(HandlerMapping)和处理器适配器(HandlerAdapter),视图解析器(ViewResolver)
dispatcher-servlet.xml
<!-- 处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<!-- 配置ViewResolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
其实,上面我们说的处理器适配器(HandlerAdapter)和处理器映射器(HandlerMapping)在这里可以不用配置,因为SpringMVC会默认加载这些配置。

采用默认的注解驱动:<mvc:annotation-driven/>, 默认的注解驱动,里面有很多参数绑定的方法 。
用注解我们不可以一个个去扫描Handler,所以采用组件扫描的方式:
<context:component-scan base-package="com.test"></context:component-scan>
HelloWorld.java
package com.test.controller; import java.util.HashMap;
import java.util.Map; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping(value = "/hello")
public class HelloWorld {
@RequestMapping(value = "/hello")// 就是访问的路径
public ModelAndView hello() {
Map<String, String> map = new HashMap<String, String>();
map.put("name", "傻逼");
ModelAndView mv = new ModelAndView("hello", map);
return mv;
} }
至此,基本的配置就完成了。
下面再来介绍一下几个基本的注解:
- @requestMapping()——基本的url映射
- 窄化映射请求(可以在类上面定义根路径,在方法上面定义子路径),此时你访问的路径就是:根路径+子路径。
- 显示http请求的方法:@requestMapping(value="/user",method="{RequestMethod.POST}")。限制后的出错信息:

2.@Controller
方法返回值的讨论:
- 返回ModelAndView:返回一个逻辑视图名和数据放在request中。
- 返回String:
- 返回一个逻辑视图名。
- 重定向:return "redirect:路径"
@RequestMapping(value = "/index")
public String index() {
return "redirect:hello";
} - 请求转发:return "forward:路径"。类比Servlet中的request.getRequestDispatcher("/WEB-INF/jsp/xxx.jsp").forward(request, response);
- 返回void:(此时用法和servlet一样)
public void test_void(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
request.getParameter("");
request.getRequestDispatcher("").forward(request, response);
}
SpringMVC(一) —— 入门的更多相关文章
- SpringMVC从入门到精通之第四章
第一个知识点:@Controller注解,用于标识这个类是一个后端控制器(类似struts中的action),主要作用就是接受页面的参数,转发页面.中间的业务逻辑是调用业务类处理的这个就是MVC设计模 ...
- SpringMVC基础入门
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...
- SpringMVC简单入门
SpringMVC简单入门 与大家分享一下最近对SpringMVC的学习,希望本文章能对大家有所帮助. 首先什么是SpringMVC? Spring 为展现层提供的基于MVC设计理念的优秀的Web框架 ...
- SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
- SpringMVC 快速入门
SpringMVC 快速入门 SpringMVC 简介 SpringMVC是 Spring为展示层提供的基于Web MVC设计模式的请求驱动类型的轻量级Web框架,它的功能和Struts2一样.但比S ...
- SpringMVC之入门程序
SpringMVC之入门程序——使用浏览器展示商品数据 springMVC执行流程(图片来源:https://www.jianshu.com/p/8a20c547e245) 1.创建pojo(商品实体 ...
- SpringMVC框架入门配置 IDEA下搭建Maven项目(zz)
SpringMVC框架入门配置 IDEA下搭建Maven项目 这个不错哦 http://www.cnblogs.com/qixiaoyizhan/p/5819392.html
- 一起学SpringMVC之入门篇
本文属于SpringMVC的入门篇,属于基础知识,仅供学习分享使用,如有不足之处,还请指正. 什么是SpringMVC ? SpringMVC是一个基于Spring的MVC框架,继承了Spring的优 ...
- springmvc快速入门(注解版本)
1)springmvc快速入门(传统版) 步一:创建springmvc-day02这么一个web应用 步二:导入springioc,springweb和springmvc相关的jar包 ------- ...
- springmvc快速入门(XML版本)
1)springmvc快速入门(传统版) 步一:创建springmvc-day01这么一个web应用 步二:导入springioc,springweb , springmvc相关的jar包 步三:在/ ...
随机推荐
- Python3.5入门学习记录-模块
模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用. 简单地说,模块就是一个保存了 ...
- c#窗体的传值方法
了解了窗体的显示相关知识,接着总结一下窗体的传值方法: .通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; ...
- $(document).ready(function(){})和window.onload=function(){}的比较
这两个函数想必每个前端开发者都不会很陌生,但是很了解用法的人估计就比较少了,博主也是最近才开始注意到这两个函数的区别. 首先$(document).ready(function(){})等同于$(). ...
- OpenCV——CvMatchShapes函数
功能:根据计算比较两张图像Hu不变距(函数返回值代表相似度大小,完全相同的图像返回值是0,返回值最大是1) double cvMatchShapes(const void* object1, cons ...
- MVC(Model View Controller)框架
MVC框架 同义词 MVC一般指MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一 ...
- 我的开源框架之TAB控件
需求 (1)支持iframe.html.json格式的tab内容远程请求 (2)支持动态添加tab (3)支持远程加载完成监听,支持tab激活事件监听 (4)支持reload tab内容[如果是远程加 ...
- 深入了解三种针对文件(JSON、XML与INI)的配置源
深入了解三种针对文件(JSON.XML与INI)的配置源 物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonCon ...
- OpenCV图片类cv::Mat和QImage之间进行转换(好多相关文章)
在使用Qt和OpenCV混合编程时,我们有时需要在两种图片类cv::Mat和QImage之间进行转换,下面的代码参考了网上这个帖子: //##### cv::Mat ---> QImage ## ...
- C# Environment类_获取程序所在机器信息
一.属性 CommandLine 获取该进程的命令行.CurrentDirectory 获取或设置当前工作目录的完全限定路径.ExitCode 获取或设置进程的退出代码.HasShutdownSta ...
- 【Xamarin挖墙脚系列:开始使用Xamari4.0系列产品开发IOS】
一直沉默在Xamarin3.0系列版本上,升级到4.0之后,感觉有些变化.还得适应下. 1 build.host 代理消失了,成了SSH客户端登录.所以,Mac设备需要打开运行远程登录. 2 在Wi ...