SpringMVC学习总结
SpringMVC部分重点组建介绍
前端处理器(DispatcherServlet):接受请求,响应结果,是SpringMVC的核心
处理映射器(HandlerMapping):根据URL去查找处理器
处理器(Handler):由程序员自己编写
处理器适配器(HandlerAdapter):把处理器包装成适配器
视图解析器(ViewResovler):视图解析,多返回的字符串,进行处理,解析成对应的页面
执行顺序
前端发送的所有请求被DispatcherServlet所拦截,然后DispatcherServlet会去寻找对应的HandlerMapping中合理的映射,返回一个Handller。
请求解析Handel,调用HandlerAdapter处理器适配器执行Hander,返回一个ModelAndViewl对象。
DispatcherServlet发出解析ModelAndView的请求,通过ViewReslover视图解析器解析,返回一个View
DispatcherServlet根据View进行视图渲染,然后渲染视图将Model数据转换为response响应传回前端。
大致流程如下图:
注解
@Controller
注解控制层,把对应的请求分发到对应的方法上
@ResquestMapping("abc")
映射路径,使用此注解的方法会被@Controller识别,当有与注解内的字符串请求传入时,执行方法体内的方法;并且由方法体返回一个字符串,经过配置文件的拼接跳转页面
/*
如果请求是abc,则执行方法体a;
通过model.addArribute()方法将name为msg,value为"SpringMVC"的值传入index.jsp前端;
这里的index.jsp是由相关的配置文件拼接而成
*/
@RequestMapping("abc")
public String a(Model model){
model.addAttribute("msg","SpringMVC");
return "index";
}
4种请求方式:get、post、delete、put;根据请求参数的不同可以拦截不同的请求,例如:
/*
加上method=RequestMethod.POST注解之后,这个方法题就只能够接受post请求,
同样,如果是GET的话,那就只能够接受get请求
*/ @RequestMapping(value = "abc",method=RequestMethod.POST)
public String a(Model model){
model.addAttribute("msg","SpringMVC");
return "index";
}
参数控制 params={"name"}
/*
当加上params={"name"}之后表示传入的参数中必须要有name,否则报错
*/
@RequestMapping(value = "abc",method=RequestMethod.POST,params={"name"})
public String a(Model model){
model.addAttribute("msg","SpringMVC");
return "index";
}
使用同名匹配原则会造成与前端的耦合,可以使用@RequestParam("指定参数名" string "自己的名字")来进行变量名的绑定,这个注解有三个变量:value,指定name属性的名称;required,指定是否必须有该参数,可以设置true和false;defaultvalue,设置默认名
@ResponBody
这是异步刷新技术,ajax
SpringMVC配置文件
Maven项目中pom.xml导入SpringMVC的jar包支持
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>
web.xml
<!--配置前端处理器DispatcherServlet-->
<servlet>
<servlet-name>springmvc01</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--配置拦截请求-->
<servlet-mapping>
<servlet-name>springmvc01</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
spring-mvc.xml
<!--配置driver-->
<mvc:annotation-driven/>
<!--静态处理-->
<mvc:default-servlet-handler/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
SpringMVC学习总结的更多相关文章
- SpringMVC学习系列-后记 解决GET请求时中文乱码的问题
SpringMVC学习系列-后记 解决GET请求时中文乱码的问题 之前项目中的web.xml中的编码设置: <filter> <filter-name>CharacterEnc ...
- 史上最全的SpringMVC学习笔记
SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...
- SpringMVC学习系列-后记 开启项目的OpenSessionInView
在系列的 SpringMVC学习系列(12) 完结篇 的示例项目中,由于当时考虑到OpenSessionInView会对性能有一定的影响,所以就没有配置项目的OpenSessionInView.在ma ...
- SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码
在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...
- SpringMvc学习心得(五)控制器产生与构建
SpringMvc学习心得(五)控制器产生与构建 标签: springspring mvc框架 2016-03-22 15:29 140人阅读 评论(0) 收藏 举报 分类: Spring(4) ...
- springmvc学习笔记--REST API的异常处理
前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...
- springmvc学习笔记---面向移动端支持REST API
前言: springmvc对注解的支持非常灵活和飘逸, 也得web编程少了以往很大一坨配置项. 另一方面移动互联网的到来, 使得REST API变得流行, 甚至成为主流. 因此我们来关注下spring ...
- SpringMVC:学习笔记(8)——文件上传
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
- springmvc学习笔记(简介及使用)
springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
- springmvc学习笔记(常用注解)
springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...
随机推荐
- hadoop系列(一)window10下hadoop安装
风闻win10不需要cygwin就能用hadoop了,赶紧试试. 去官网下载hadoop-2.8.3,然后去 https://github.com/steveloughran/winutils 下载h ...
- DLL和OCX注册
在注册DLL或者OCX的方法应该使用regsvr32.exe,使用得多了一定会觉得在cmd运行中写一长串东西很烦人吧!这里向大家介绍一种麻烦一次方便一生的方法.这个方法只要右击你想注册或者反注册的DL ...
- input输入内容成可点击状态
<!DOCTYPE html> <html> <head> <script src="//code.jquery.com/jquery-1.9.1. ...
- iOS进阶五-RunLoop
简介 RunLoop 运行循环.跑圈 RunLoop的作用主要体现在三方面: 1.保持程序持续运行 2.处理App中的各种事件(比如触摸事件.定时器事件.Selector事件) 3.节省CPU资源,提 ...
- Erlang学习记录:app demo
目录结构 │ Emakefile │ make.bat │ start.bat ├─config │ config.config │ server.app ├─ebin │ wulin_app.bea ...
- C++ SOCKET 基础编程
{ http://c.biancheng.net/socket/ }
- 概率dp——cf148D
求概率应该dp数组应该顺着求 这是由初始状态来决定递推方向的 /* 盒子里有两种颜色的球,一种是黑色另一种是白色 AB轮流去球,A先取 A每次随机摸一个球 B每次随机摸一个球,然后盒子里再丢一个球 先 ...
- 分享一些PPT模板
链接:https://pan.baidu.com/s/1ADlYzx7sWR2z0ltVt8kIAQ 提取码:tyzv
- Kafka和RabbitMQ 对比
1) Kafka成为业界大数据松耦合架构,异步,队列 特点:吞吐量高50m/s. Kafka和RabbitMQ都是MQ机制,它差异 Kafka作为大数据产品,可以作为数据源,也可以作为结果数据中转 ...
- (15)python打包
.py文件在没有安装python软件的电脑上是不能被执行的