SpringMVC学习笔记
1、严格实现MVC设计思想的框架,严格分层,减少耦合;
2、组件(红色必需)
2.1 DispatcherServlet 前端控制器
2.2 Controller 业务控制器
2.3 Handler Mapping 请求匹配器:请求转发到具体Controller
2.4 ViewResolver:控制Controller返回响应后要跳转到不同视图展示的组件
View:针对不同的视图技术(jsp、pdf、excel...)采取不同的处理的组件
每一个ViewResolver必须指定一个View
2.5 Interceptors:拦截器,面向切面技术
2.6 LocalResolver:本地化处理组件
2.7 Validate:校验组件
3、Controller实现方式(原先3之前配置方式 已经淘汰 推荐使用注解)
3.1 实现Controller接口或者继承AbstractController抽象类(传入request和response对象)
3.2 ModelAndView
3.2 用于直接跳转页面的ParameterizableViewController、UrlFilenameViewController(url名和视图名一致)
3.3 自动封装表单参数的控制器(常用):CommandController重写handle方法,参数通过属性编辑器将form参数注入实体类,有些类型如日期需要提供重写的属性编辑器才能正确转换;FormController重写onsubmit方法;
spring3之后不推荐使用 使用注解;
3.4 MultiActionController 红色参数必需
方法:public (ModelAndView|Map|String|void) actionname(HttpServletRequest request,HttpServletResponse response,HttpSession session,Object anyobj);
注意:controller中方法的的参数是按需声明,spring会帮我们自动注入,像HttpServletRequest、HttpServletResponse、HttpSession、ModelView等常见的很容易就可以注入,如果声明的是页面的参数,spring也会安例注入,但是存在数据类型转换异常的风险;
比如:一般页面的参数传到服务器端都是字符串,如果声明的是整形、浮点型、日期类型,必然要进行数据类型强转,所以也必然存在产生转换异常的风险,需要添加属性编辑器来降低这种转换风险。
4、handlerMapping
4.1 默认的ControllerClassNameHandlerMapping
4.2 常用的SimpleUrlhandlerMapping
4.3 BeanNameUrlHandlerMapping
4.4 基于注解Controller时使用的DefaultAnnotationHandlerMapping 推荐使用
5、基于注解的SpringMVC配置
5.1 使用注解 那么spring-mvc.xml需要增加context和mvc两个命名空间
5.2 注解先配置扫描,然后添加配置跳转处理InternalResourceViewResolver,然后再添加注解;
5.3 restful风格请求:先定义URl请求模板,然后通过@Pathvariable指定处理方法接收url中传递过来的参数的变量;
对于特殊格式的参数也需要属性编辑器转换;数据绑定:可以直接使用实体对象作为入参,存在数据格式转换异常的可能;
5.4 可以通过@method来处理get post等不同请求方式的请求
其他注解:@CookieValue @RequestHeader
5.5 如果返回值为void 同时方法中不使用pringwriter 那么会自动匹配requestmapping中配置的同名视图
6、转发和重定向
return "forward:index.jsp"; //转发
return "forward:user.do?method=reg5"; //转发
return "redirect:user.do?method=reg5"; //重定向
return "redirect:http://www.baidu.com"; //重定向
7、XmlViewResovler:
View:JstlView、ExcelView以及自定义View(jsperReport|Pdf|Excel)
视图链
8、拦截器链(一般所有的MVC都会实现拦截器):
实现HandlerInterceptor接口,重写三个方法:prehandler:controller之前执行,posthandler:controller之后视图生成之前,
afterCompletion释放资源
9、视图国际化:
9.1 页面引入spring标签:<% taglib uri="http://www.springframework.org/tags" prefix="spring" %>,使用标签:<spring:message code="xxxkey" /> code对应资源文件(*.properties)的Key值;
9.2 创建并编写资源文件:mess.properties,mess_zh_CN.properties,mess_en_US.properties
9.3 配置支持:<bean:id="messageSource" class="org.springframework.context.support.ResourceBunldleMessageSource">
<property name="basename" value="mess"/>
</bean>
注意id只能叫这个messageSource。
10、注入验证:JSR303 validate bean
@Valid:验证: 对于实体对象jdk提供验证接口 一般其他框架像hibernate提供验证实现
补充:SpringMVC中的 Controller是单例的 如何变成多例的呢?在Controller上加注解@Scope("prototype")
SpringMVC学习笔记的更多相关文章
- 史上最全的SpringMVC学习笔记
SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...
- 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注解定义的控制器有如 ...
- SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
- springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...
- springmvc学习笔记(19)-RESTful支持
springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...
- springMVC 学习笔记(一):springMVC 入门
springMVC 学习笔记(一):spring 入门 什么是 springMVC springMVC 是 spring 框架的一个模块,springMVC 和 spring 无需通过中间整合层进行整 ...
随机推荐
- 一个简单json数据提交实例
1.客户端编程:jsp页面 <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- Anchor和Dock的区别
Dock的Bottom,整个控件填充下半部分,控件会被横向拉长 Anchor,仅仅是控件固定在下方,位置不会发生移动,自动锚定了此控件和父容器的底部的间隔 Anchor可以确定控件的相对位置不发生变化
- [Codeforces677C]Vanya and Label(组合数学,快速幂)
题目链接:http://codeforces.com/contest/677/problem/C 题意:给一个字符和数字的映射关系,然后再给一个字符串.问有多少个其他的字符串,使得那些字符串之间相互操 ...
- mac 下 apache设置
windows下面的apache配置 apache是mac下是默认就有的,我们只需使用命令开启.暂停和重启就好了 sudo apachectl start sudo apachectl stop su ...
- Fedora20 优化体验
玩了些许天的fedora系统,到底是加深了对于linux系统的了解 为了便于大家对于fedora系统支持,我将这些天对于fedora的一些不适之处及改进的策略进行了一下小总结.便于新手对于fedora ...
- sql2005数据库转换成sql2000
第一步:在SQL2005中生成脚本文件 ① 在2005中选中要进行转换的那个数据库,鼠标“右键”选择—“属性”—“选项”:修改“兼容级别”为“SQL Server 2000 (80)”: ② ...
- jQuery点击div其他地方隐藏div
$(document).bind("click",function(e){ var target = $(e.target); ){ $("#regionlist&quo ...
- 数据来自后台非Ajax加载的联动实现方法
要实现的效果如下,通过一级标签来控制二级标签, 第一步:在Conctroller中获取数据,并且请到modle里面返回 ModelAndView model = new ModelAndView(&q ...
- Oracle 课程八之跟踪事件set event
一.Oracle跟踪文件 Oracle跟踪文件分为三种类型: 一种是后台报警日志文件,记录数据库在启动.关闭和运行期间后台进程的活动情况,如表空间创建.回滚段创建.某些alter命令.日志切换.错误消 ...
- 底部菜单栏(一) TabHost实现
需求:使用TabHost实现底部菜单栏: 效果图: 实现分析: 1.目录结构: 代码实现: 1.activity_main.xml <?xml version="1.0" e ...