Spring MVC入门
来源:互联网 发布:linux 系统启动脚本 编辑:程序博客网 时间:2024/05/29 02:47
一阶段
1、Springmvc介绍
2、入门程序
3、Springmvc架构讲解
a) 框架结构
b) 组件说明
4、Springmvc整合mybatis
5、参数绑定
a) Springmvc默认支持的类型
b) 简单数据类型
c) Pojo类型
d) Pojo包装类型
e) 自定义参数绑定
6、Springmvc和struts2的区别
二阶段
1、高级参数绑定
a) 数组类型的参数绑定
b) List类型的绑定
2、@RequestMapping注解的使用
3、Controller方法返回值
4、Springmvc中异常处理
5、图片上传处理
6、Json数据交互
7、Springmvc实现Restful
8、拦截器
1.1 Springmvc是什么?
Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来:
入门程序1.1 架构流程
1、 用户发送请求至前端控制器DispatcherServlet
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、 执行处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、 ViewReslover解析后返回具体View
10、 DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户
三、入门程序
1、框架配置
1)创建一个web工程
2)配置前端控制器DispatcherServlet
3)创建一个Springmvc的配置文件。
2、查询商品列表,使用静态数据模拟。
请求的url:list.action
创建一个Controller相当于struts2的action类。
方法一:
Controller类需要实现Controller接口
方法二:
使用注解开发Controller
四、三大组件
处理器映射器
使用bean的name属性做url映射:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
使用注解形式的处理器映射器:
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping 已过期
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping 推荐使用新版。
可以在springmvc的配置文件中配置新版的处理器映射器。
处理器适配器
支持实现Controller接口的处理器适配器
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
注解形式的处理器适配器
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 已过期
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter 推荐使用新版
可以使用<mvc:annotation-driven/>(推荐)
视图解析器
支持jsp的视图解析器
org.springframework.web.servlet.view.InternalResourceViewResolver
在springmvc的配置文件中配置视图解析器
---------------------------------
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
---------------------------------
五、ssm框架整合
1、整合的思路
dao层:
mybatis:SqlMapConfig.xml,文件中可以不做任何配置。
spring:applicationContext-dao.xml
配置数据库连接池
SqlSessionFactory
Mapper文件扫描器
Service层:
配置事务
扫描@Service注解的类
表现层:
springmvc的配置文件:
配置包扫描器:扫描@Controller注解的类
注解驱动
视图解析器
web.xml
前端控制器
配置初始化spring容器的listener
2、修改商品信息
1)在商品列表页面点击“修改”链接跳转到商品信息页面
a.需要商品id作为参数
b.接收参数,根据商品id查询数据库
c.把结果传递给jsp
2)在商品信息页面把商品信息展示出来
3)在商品页面点击修改把修改后的结果提交到后台
(1)展示商品信息
请求的url:/itemEdit
参数:id
返回值:ModelAndView
============================================
直接在方法的形参中添加即可!
1、springmvc默认支持的参数类型:
HttpServletRequest
HttpServletResponse
HttpSession
Model:相当于ModelAndView对象中的Model部分。view部分可以使用方法的返回值替代
2、简单参数类型绑定
int
string
Boolean
float
double
如果是简单数据类型,只需要在方法的形参上添加一个参数即可。类型最好使用包装数据类型例如Integer、Float
包装数据类型可以为null
要求:方法形参的名称必须和请求参数的名称一致。
如果参数名称不一致,应该改一致。
或者使用@RequestParam注解解决
name、value属性是等价的表示把那个参数映射到当前形参上。
required属性:代表此参数是必须参数。如果没有此参数会报错。
defaultValue:默认值
============================================
(2)修改商品数据
请求的url:/updateitem.action
请求的方法:post
参数:表单中的数据
key就是input控件的name属性,value:就是input控件的值
id=1&name=zhangsan&age=13
Controller中可以使用方法的形参接收。
在springmvc中可以使用pojo接收参数,要求pojo的属性和input控件的name属性一致。一般接收表单的数据推荐使用pojo接收
post请求乱码怎么办?
可以配置一个post乱码过滤器
(3)包装pojo的绑定
要求input的控件的name属性是“属性.属性”
(4)自定义类型参数绑定
如果日期类型做参数绑定时会出现“400”错误。因为日期类型绑定失败的原因。
页面提交的数据全部都是字符串。框架不知道如何转换日期类型。日期格式不固定。
需要解决日期类型的参数绑定:
方案一:后台使用String接收日期,手动将字符串转换成日期类型。
方案二:可以使用Springmvc提供的Converter实现类型转换
使用方法:
1、实现Converter接口。
2、在实现类中实现字符串到日期类型的转换。
3、在springmvc的配置文件中配置Converter。
第二阶段
1、需求:批量删除商品数据
思路:
方案一:在提交之前,使用js遍历表单中的checkbox,判断是否为选中状态,取选中的商品id,把id拼接成一个字符串,使用“,”分隔。把字符串放到一个hidden域中,随着表单的提交提交到服务端。
方案二:使用springmvc,默认支持数组的绑定。
第一步:方法的形参中需要有一个数组类型的参数。或者pojo的属性有数组类型的属性
第二步:jsp的checkbox的name属性和参数名称一致
2、需求:批量修改商品数据
第一步:需要的参数是一个pojo类型的参数,pojo中需要有一个list类型的属性。
第二步:input控件的name属性必须是itemList[0].id形式
注意:绑定list参数必须是pojo的属性,方法的形参是不能成功绑定的。
四、@RequestMapping
作用:配置url映射关系
value:默认就是value属性。属性是一个数组类型,可以配置多个url映射到一个方法上。
method:支持的http方法。post、get、put、delete。。。如果不配置此属性,支持各种方法
@RequestMapping:注解不仅可以加在方法上还可以加在Controller类上。可以出现多级目录。
窄化请求映射。
五、方法的返回值
1)ModelAndView
modelAndView.addObject("itemList",list);指定返回的页面的数据
modelAndView.setViewName("itemList"); 指定放回的页面
2)String (推荐使用)
返回普通字符串,就是页面去掉扩展名称,返回给页面数据通过Model来完成
3)返回void (使用它破会了SpringMVC的结构,不推荐使用) (不走SpringMvc 组件,所以要写 全路径)
可以使用request,setAttribut 给页面返回数据
可以使用request.getRquestDispatcher("页面名称 完整的页面路径名称").forward (request,response).返回指定的页面.
1、ModelAndView:包含模型数据和逻辑视图两部分。
2、返回String:代表逻辑视图
页面跳转:
redirect:二次请求,url地址发生变化
forward:一次请求,url地址不变。
需求:更新成功后跳转到百度首页
做redirect跳转
return "redirect:http://www.baidu.com";
// “/”是从工程名后开始的
return "redirect:/items/list.action";
forward必须是工程内部的url:
不加“/”说明是相对路径是相对于当前url来说。如果加上“/”从不包含工程名的根目录找。
3、void
需要Request和Response对象
六、图片上传
1、图片保存的位置:
1)保存到磁盘的任意目录,可以保存到工程内部的一个文件夹。然后直接通过tomcat访问图片。
2)放到工程外部。需要通过tomcat访问到目录。取目录下的文件。
2、springmvc上传文件
1)把commons-fileupload.jar、common-io.jar加到工程中
2)在springmvc的配置文件中配置多部件解析器。
3)需要在方法的形参中添加一个参数接收上传的文件。参数类型MultiPartFile,要求参数的名称和input控件的name属性一致。
4)jsp的表单中需要加一个encType属性。
3、接收到图片后的业务逻辑
1)使用方法的形参接收图片
2)生成新文件名可以使用uuid生成,取扩展名
3)把图片保存到磁盘。
4)把新文件名保存到数据库
七、发布服务
restfu形式的服务。只是一个风格,不是标准也不是协议。本质上就是http。
请求服务的url响应数据:数据格式可以是xml,json数据。传递数据都是使用json。
1、json数据交互
响应json数据。
1)需要在方法上使用@ResponseBody注解。
2)方法的返回值需要是一个pojo,就会自动转换成json数据。
3)需要把Jackson的jar包添加到工程中。作用就是实现pojo到json的转换的。springmvc默认支持。
案例:根据id查询商品数据,返回json数据格式。
接收json数据:很少使用。
一般服务端接收的数据格式:
id=1&name=zhang&age=18&address=beijing
一般ajax请求可以:需要在请求时设置Content-type
{"id":"1","name":"zhang"}
服务端接收到json转换成java对象。在参数前添加@RequestBody
2、resuful,对http的诠释。
1)资源定位
通过url定位到资源。不需要参数。
http://blog.csdn.net/beat_the_world/article/details/45621673
url中没有后缀,没有参数。
springmvc:@PathVariable注解可以从url取参数。
2)资源操作
使用http的方法实现资源的增删改查。put、delete、post、get(get:查询,post:增删改)
八、全局异常处理器
1、实现HandlerExceptionResolver接口
2、在接口的实现类中处理异常。
写日志
发邮件
发短信
展示错误页面
3、配置全局异常处理器。
系统中全局异常处理器只有一个。
Controller:是一个类
handler:handler就是Controller类中的方法
九、如果配置url拦截形式为“/”会拦截所有请求jsp除外。
可以做资源映射
十、拦截器
拦截请求,在执行handler之前先执行拦截器。一般做权限认证时使用。
1、需要实现HandlerInterceptor接口。
2、在springmvc中配置拦截器
拦截器的执行顺序是按照配置顺序执行
案例:用户登录处理
1、登录页面
展示登录页面
登录处理
1)判断用户名密码是否正确
2)如果不正确,返回登录页面
3)如果正确把用户信息保存到Session
4)展示商品列表
2、拦截器
1)判断登录状态,判断Session中是否有用户信息
2)如果有放行
3)如果没有拦截,跳转到登录页面。
4)如果判断是展示登录页面或者登录处理url直接放行。
- 【spring】spring MVC入门
- 【Spring】Spring MVC入门
- Spring MVC 入门
- Spring MVC入门
- Spring MVC 入门
- spring mvc入门
- spring mvc入门
- Spring MVC 入门
- 入门spring MVC
- Spring MVC 入门
- Spring MVC 入门 @ MultiActionController
- spring mvc入门
- Spring MVC入门
- Spring MVC 入门
- Spring MVC 入门
- Spring MVC 入门
- Spring mvc 入门
- Spring MVC 入门
- 深度优先算法解决POJ1830开关问题
- 微服务,微架构[七]之springboot异常处理
- HDU 1879 继续畅通工程
- 0016、node 之富文本的使用
- CIFAR-10数据集可视化Python版本
- Spring MVC入门
- HDU 4714
- QTP破解
- Struts2核心技术(三)
- HDU4884 TIANKENG’s rice shop
- IO流呀IO流
- KMP算法最浅显理解——一看就明白
- tree命令安装
- (四) Java多线程详解之线程池的使用