一:概述:
1、springMVC做web开发的框架,实际上就spring框架中的一个板块
2、springMVC的使用就是基于spring的,容器的概念,springMVC会创建容器, webApplicationContext,springMVC作为容器是创建和管理控制器对象,使用 @Controller创建对象控制器对象
3、三层和框架的对应:①springmvc--界面层,接受用户请求,显示处理结果的
②spring--业务层,处理业务逻辑的,spring创建Service,dao,工具类对象
③Mybatis--持久层,访问数据库的,对数据增删改查
4、springMVC底层访问依然是Servlet-DispatcherServlet(中央调度器)
A创建WebApplicationContext对象,读取配置文件,进而创建控制器对象
B它是一个Servlet,要接受用户的请求,显示处理结果
二:
1、注解:
①、@Controller:创建控制器类的对象,接收参数,处理请求
②、@RequestMapping:请求映射,把请求绑定到一个方法,让这个方法处理请求
A、value:请求url值,唯一值
B、method:请求的方式,使用RequestMethod类的枚举值
2、接受用户提交的参数
①HttpServletRequest,HttpServletResponse,HttpSession可以直接出现现在处理器方法的参数位置
②逐个接受参数,处理器方法的形参名和请求中参数名一致,按名称对应赋值
③解决请求POST请求中文乱码问题---使用Filter过滤器
<!-- 注册声明过滤器-解决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> <!-- 强制请求对象(httpServletRequest)使用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等集合类型,数组都可以
3、处理器方法的返回值:表示请求的处理结果
①、ModeAndView,表示数据和视图,对试图执行forward
②、String:表示视图的,可以逻辑名称,完整的试图路径,对试图做forward
③、void:返回值本身是不能表示视图和数据。可以响应Ajax请求
④、对象Object:表示数据的,响应Ajax请求
⑤、springMVC处理器方法返回对象,转为json响应Ajax请求步骤
A.加入处理java到json的工具库:jackson
B.在springMVC配置文件中加入注解驱动<mvc:annotation-driven>
C.在处理器的方法上面加入@RequestBody
4、url-pattern
①、设置中央调度器url-pattern是"/";导致静态资源访问失败都是404,动态代理可以正常访问
②、第一种解决静态资源访问的方案:在springmvc的配置文件中加入1)<mvc:default-servlet-handler> 2)<mvc:annotation-driven>-------原理:给程序内存增加一个处理器对象,DefaultHttpRequestHandler,让这个对象处理静态资源的访问
③、第二种处理静态资源的:使用框架中的mvc:resource标签,由框架自己处理静态资源的访问
5、SSM整合开发
①、ssm整合由两个容器,1)springMVC容器:管理controller,视图对象。2)spring容器:管理service、dao对象
②、创建容器方式,1)创建springMVC的容器对象:使用中央调度器:DispatcherServlet。2)创建spring容器对象,使用监听器ContextLoaderListener
③、配置文件1)spring配置文件2)spring配置文件3)mybatis配置文件4)数据库的配置文属性件。
6、核心技术:转发和重定向
①、转发:forward
②、重定向:redirect
③、特点:都不和视图解析器一同工作,就当项目中没有视图解析器