SpringMVC
1.概述
1.SpringMVC做web开发的框架,实际是spring框架中的一个模块
2.springMVC的使用基于spring,容器的概念,springMVC会创建容器,WebApplicationContext.SpringMVC作为容器是创建和管理控制器对象的,使用@Controller创建控制器对象。
3.三层和框架的对应
- 1.SpringMVC—界面层,接收用户请求,显示处理结果
- 2.Spring—业务层,处理业务逻辑的,spring创建Service,DAO,工具类对象
- 3.MyBatis—持久层,访问数据库的,对数据增删改查
4.SpringMVC底层访问依然是Servlet-DispatcherService(中央调度器)
- 1.创建WebApplicationContext对象,读取配置文件,进而创建控制器对象
- 2.他是一个Servlet,要接收用户的请求,显示处理结果
2.SpringMVC处理Web请求
1.注解
-
1.@Controller:创建控制器类的对象,接收请求,处理请求
-
2.@RequestMapping:请求映射,把请求绑定到一个方法,让这个方法处理请求
- 1.valuue:请求的url地址,唯一值
- 2.method:请求的方式,使用RequestMethod类的枚举值,例如:get请求–RequestMethod.GET
2.接收用户提交的请求参数
- 1.HttpServletRequest,HttpServletResponse,HttpSession可以直接出现在处理器方法的参数位置
- 2.逐个接收参数,【处理器方法的形参名】和【请求中参数名】一样,按名称对应赋值。
- 3.解决请求中post方法有中文乱码,使用过滤器解决问题,CharacterEncodingFilter
- 4.逐个接收中,请求中参数名和形参名不一样,使用@RequestParam解决问题
- 5.使用java对象接收请求的参数,要求请求中参数名和属性名一样
- 6.SpringMVC处理器方法的形参还可以Map,List等集合类型,数组都可以。
3.处理器方法的返回值:表示请求的处理结果
-
1.MethodAndView,表示数据和视图,对视图执行forward
-
2.String:表示视图的,可以逻辑名称,完整视图路径。对视图执行forward
-
3.void:返回值本身不能表示数据和视图,可以响应ajax请求
-
4.对象Object:表示数据的,响应ajax请求
-
5.SpringMVC:处理器方法返回对象,转为json响应ajax步骤
- 1.加入处理java到json转换的工具库:jackson
- 2.在SpringMVC配置文件加入注解驱动mvc:annotation
- 3.在处理器方法的上面加入@ResponseBody
4.url-pattern
-
设置中央调度器的url-pattern是”/“:导致【静态资源】访问失败都是404,【动态代理】可以正常访问
-
第一种解决静态资源访问的方案:SpringMVC的配置文件中:1)mvc:default-servlet-handler、2)mvc:annotation-driven
- 原理:给程序内存中增加一个处理器对象,DefaultHttpRequestHandler,让这个对象处理静态资源的访问。
-
第二种处理静态资源
- 使用框架中的mvc:resources标签,由框架自己处理静态资源的访问
5.ssm整合开发
-
1.ssm整合有两个容器:1):SpringMVC的容器,2)Spring的容器
- 1.SpringMVC的容器:管理controller,视图等对象
- 2.Spring容器:service,dao等对象
-
2.创建容器的方式
- 1.创建SpringMVC的容器对象:使用中央调度器DispatcherServlet
- 2.创建Spring容器对象,使用监听器ContextLoaderListener
-
3.配置文件
- 1.SpringMVC的配置文件
- 2.Spring的配置文件
- 3.MyBatis主配置文件
- 4.数据库的属性配置文件
6.核心技术——转发和重定向
- 1.转发----forward
- 2.重定向—redirect
- 特点:都不和视图解析器一起工作,就当项目中没有视图解析器