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注解定义的控制器有如 ...
随机推荐
- 查看Linux 内核版本命令
1.Ubuntu 查看版本命令,三种方法. 1.使用 "uname -a" 2.使用 "lsb_release -a" 3.使用 "cat ...
- PHP算法之Z 字形变换
将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I RE T ...
- buff/cache内存占用过多
通过free -m 查看到 buff/cache的值比较大,导致可使用的内存有120M左右了 通过下面的命令,清除缓存 echo 1 > /proc/sys/vm/drop_caches ech ...
- 学习mysql水平分区和实践笔记
SHOW PLUGINS; sql 可以查看partition的Status 是否是ACTIVE的 使用mydatetime 进行水平分区案例: CREATE TABLE test_users ( ` ...
- css---6 选择器声明的优先级
选择器的特殊性由选择器本身的组件确定,特殊性值表述为4个部分,如 0,0,0,0一个选择器的具体特殊性如下确定: 1.对于选择器中给定的ID属性值,加 0,1,0,0 2.对于选择器中给定的各个类属性 ...
- 树形dp——cf1010D
一个点的改变如果对根节点的值不会造成任何影响,那么这个点的所有子节点的改变也不会对根节点造成影响 因为每次只改一个叶子节点,也就是一条到根的路径,可以先预处理出初始情况下的每个结点的值 分别讨论根节点 ...
- C/C++实现单向循环链表(尾指针,带头尾节点)
C语言实现单向循环链表,主要功能为空链表创建,链表初始化(头插法,尾插法),链表元素读取,按位置插入,(有序链表)按值插入,按位置删除,按值删除,清空链表,销毁链表. 单向循环链表和单向链表的区别:( ...
- js 实现 map 工具类
/* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, v ...
- socket2里面,有些函数带WSA开头,有些不带。请问有何区别?
WSASocket可以使用WinSock特有功能,比如重叠IO,用dwflags指定. WSA的A是指api,用于区别spi,因为在spi中还有wspsocket,wspaccept等... 在 ...
- AutowireCapableBeanFactory 根据名称:自动装配的BeanFactory,其实也是对BeanFactory的增强
//自动装配的Bean 工厂 public interface AutowireCapableBeanFactory extends BeanFactory { //工厂没有自动装配的Bean int ...