1、开发步骤
- 新建web maven工程
- 加入依赖
spring-webmvc依赖,间接把spring的依赖都加入到项目
jsp,servlet依赖 - 配置中央调度器: 在web.xml中注册springmvc框架的核心对象:DispatcherServlet
DispatcherServlet叫做中央调度器,是一个servlet,它的父类是继承HttpServlet
DispatcherServlet页叫做前端控制器(front controller)
DispatcherServlet负责接收用户提交的请求,调用其它的控制器对象,并把请求的处理结果显示给用户 - 创建一个发起请求的页面 index.jsp
- 创建控制器(处理器)类
1)在类的上面加入@Controller注解,创建对象,并放入到springmvc容器中
2)在类中的方法上面加入@RequestMapping注解。请求映射,把指定的请求交给给方法处理,(value="/some.do") - 创建一个作为结果的jsp,显示请求的处理结果。
- 创建springmvc的配置文件(spring的配置文件一样)
1)声明组件扫描器, 指定@Contorller注解所在的包名
2)声明视图解析器。帮助处理视图的。
2、执行流程
- 浏览器提交请求到中央调度器
- 中央调度器将请求转给处理器映射器
- 处理器映射器会根据请求,找到处理该请求的处理器,并将其封装为处理器执行链后,返回给中央调度器
- 中央调度器根据处理执行链中的处理器,找到能够执行该处理器的处理器适配器
- 处理器设配器调用执行处理器
- 处理器将处理结果及要跳转的视图封装到一个对象ModelAndView中,并将其返回给处理器适配器
- 处理器适配器直接将结果返回给中央调度器
- 中央调度器调用视图解析器,将 ModelAndView 中的视图名称封装为视图对象
- 视图解析器将封装了的视图对象返回给中央调度器
- 中央调度器调用视图对象,让其自己进行渲染,即进行数据填充,形成响应对象
- 中央调度器响应浏览器。
3、注解
1、处理器方法注解
@RequestMapping(value="/some.do",method=RequestMethod.POST)
2、处理器方法参数
HttpServletRequest
HttpServletResponse
HttpSession
请求中所携带的请求参数
逐个参数接收
请求参数名(index.jsp中参数)与该请求处理方法的参数名相同
若不同,可在方法参数名前添加注释:@RequestParam(“请求参数名”)
对象参数接收
要求对象中的属性名需要和请求参数名相同
处理中文乱码
在web.xml中注册字符集过滤器
3、处理器方法返回值
ModelAndView
Ajax异步响应时,会多余,不用该对象
String
字符串可以指定逻辑视图名,通过视图解析器转化为物理视图地址
void
针对Ajax异步响应
自定义类型对象
返回对象,需要使用@ResponseBody注解,将转换后的JSON数据放入到响应体中
导入Jackson的jar包,声明注解驱动
4、请求重定向和转发
forward:表示转发,实现 request.getRequestDispatcher(“xx.jsp”).forward()
不和视图解析器一同工作,就当作项目中,没有视图解析器,
setViewName(“forward:视图的完整路径”)
redirect:表示重定向,实现 response.sendRedirect(“xxx.jsp”)
setViewName(“redirect:视图的完整路径”)
注意:对于请求转发的页面,可以是WEB-INF中页面;而重定向的页面,是不能为WEB-INF中的。因为重定向相当于用户再次发出一次请求,而用户是不能直接访问 WEB-INF 中资
源的
5、异常处理
采用aop思想
@ExcepHandler 方法上
@ControllerAdvice 类上
6、拦截器(面试)
preHandler 预处理方法
注册拦截器
拦截器和过滤器的区别
- 过滤器是servlet中的对象, 拦截器是框架中的对象
- 过滤器实现Filter接口的对象, 拦截器是实现HandlerInterceptor
- 过滤器是用来设置request,response的参数,属性的,侧重对数据过滤的。 拦截器是用来验证请求的,能截断请求。
- 过滤器是在拦截器之前先执行的。
- 过滤器是tomcat服务器创建的对象 拦截器是springmvc容器中创建的对象
- 过滤器是一个执行时间点。 拦截器有三个执行时间点
- 过滤器可以处理jsp,js,html等等 拦截器是侧重拦截对Controller的对象。 如果你的请求不能被DispatcherServlet接收, 这个请求不会执行拦截器内容
- .拦截器拦截普通类方法执行,过滤器过滤servlet请求响应
7、知识框图
8、ssm的开发步骤
SSM: SpringMVC + Spring + MyBatis.
SpringMVC:视图层,界面层,负责接收请求,显示处理结果的。
Spring:业务层,管理service,dao,工具类对象的。
MyBatis:持久层, 访问数据库的
用户发起请求–SpringMVC接收–Spring中的Service对象–MyBatis处理数据
SSM整合也叫做SSI (IBatis也就是mybatis的前身), 整合中有容器。
1.第一个容器SpringMVC容器, 管理Controller控制器对象的。
2.第二个容器Spring容器,管理Service,Dao,工具类对象的
我们要做的把使用的对象交给合适的容器创建,管理。 把Controller还有web开发的相关对象
交给springmvc容器, 这些web用的对象写在springmvc配置文件中
service,dao对象定义在spring的配置文件中,让spring管理这些对象。
springmvc容器和spring容器是有关系的,关系已经确定好了
springmvc容器是spring容器的子容器, 类似java中的继承。 子可以访问父的内容
在子容器中的Controller可以访问父容器中的Service对象, 就可以实现controller使用service对象
- 使用springdb的mysql库, 表使用student(id auto_increment, name, age)
- 新建maven web项目,加入依赖 springmvc,spring,mybatis三个框架的依赖,jackson依赖,mysql驱动,druid连接池 jsp,servlet依赖
- 写web.xml
1)注册DispatcherServlet :1.创建springmvc容器对象,才能创建Controller类对象。2.创建的是Servlet,才能接受用户的请求。
2)注册spring的监听器:ContextLoaderListener:创建spring的容器对象,才能创建service,dao等对象。
3)注册字符集过滤器,解决post请求乱码的问题 - 创建包, Controller包, service ,dao,实体类包名创建好
- 写springmvc,spring,mybatis的配置文件
1)springmvc配置文件
2)spring配置文件
3)mybatis主配置文件
4)数据库的属性配置文件 - 写代码, dao接口和mapper文件, service和实现类,controller, 实体类。
- 写jsp页面