springMVC小结
SpringMVC
一、概述
- SpringMVC做web开发的框架,实际是spring框架中的一个模块
- SpringMVC的使用就是基于spring的,容器的概念,SpringMVC会创建容器,
WebApplicationContext
。SpringMVC作为容器是创建和管理控制器对象的,使用@Controller
创建控制器对象 - 三层和框架的对应
- SpringMVC:界面层,接受用户请求,显示处理结果
- Spring:业务层,处理业务逻辑的,spring创建Service,Dao,工具类等对象
- MyBatis:持久层,访问数据库的,对数据增删改查
- SpringMVC底层访问依然是
Servlet-DispatcherServlet(中央调度器)
- 创建
WebApplicationContext
对象,读取配置文件,进而创建控制器对象 - 它是一个Servlet,要接受用户的请求,显示处理结果
- 创建
二、SpringMVC处理web请求
注解
@Controller
:创建控制器类的对象,接受请求,处理请求@RequestMapping
:请求映射,把请求绑定到一个方法,让这个方法处理请求value
:请求的uri地址,唯一值method
:请求的方式,使用RequestMethod
类的枚举值,例如,get请求,RequestMethod.GET
接收用户提交的参数
HttpServletRequest
,HttpServletResponse
,HttpSession
可以直接出现在处理器方法的参数位置逐个接受参数,处理器方法的形参名和请求中参数名一样。按名称对应赋值
解决请求中post方式有中文乱码,使用过滤器解决问题。
CharacterEncodingFilter
<!--注册声明过滤器,解决post请求乱码的问题--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--设置项目中使用的字符编码--> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <!--强制请求对象(HttpServletRequest)使用encoding编码的值--> <init-param> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <!--强制应答对象(HttpServletResponse)使用encoding编码的值--> <init-param> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <!-- /*:表示强制所有的请求先通过过滤器处理 --> <url-pattern>/*</url-pattern> </filter-mapping>
- 逐个接收中,请求中参数名和形参名不一样,使用
@RequestParam
解决问题- 使用java对象接收请求的参数,要求请求中参数名和属性名一样
- springmvc处理器方法的形参还可以Map,List等集合类型,数组都可以
处理器方法的返回值:表示请求的处理结果
ModelAndView
:表示数据和视图,对视图执行forwardString
:表示视图的,可以逻辑名称,完整视图路径,对视图执行forwardvoid
:返回值本身不能表示数据和视图,可以响应ajax请求对象Object
:表示数据的,响应ajax请求springmvc处理器方法返回对象,转为json响应ajax步骤
- 加入处理java到json转换的工具库:
jackson
- 在springmvc配置文件加入注解驱动
<mvc:annotation-driven>
- 在处理器方法的上面加入
@ResponseBody
- 加入处理java到json转换的工具库:
url-pattern
- 设置中央调度器的url-pattern是
/
:导致静态资源访问失败都是404,动态资源可以正常访问 第一种解决静态资源访问的方案:
- 在springmvc的配置文件中加入
<mvc:default-servlet-handler>
,<mvc:annotation-driven>
- 原理:给程序内存增加一个处理器对象,
DefaultHttpRequestHandler
,让这个对象处理静态资源的访问。
- 在springmvc的配置文件中加入
第二种处理静态资源:使用的框架中
<mvc:resources>
标签,由框架自己处理静态资源的访问
- 设置中央调度器的url-pattern是
ssm整合开发
- ssm整合有两个容器
- springmvc的容器:管理controller,视图等对象
- spring的容器:service,dao等对象
- 创建容器的方式
- 创建springmvc的容器对象:使用的中央调度器
DispatcherServlet
- 创建spring容器对象,使用监听器
ContextLoaderListener
- 创建springmvc的容器对象:使用的中央调度器
- 配置文件
- springmvc的配置文件
- spring配置文件
- mybatis主配置文件
- 数据库的属性配置文件
- ssm整合有两个容器
核心技术
- 转发和重定向
- 转发:
forward
- 重定向:
redirect
- 特点:都不和是解析器一同工作,就当项目中没有视图解析器
- 转发:
- 转发和重定向
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!