SpringMVC
2021-05-31 08:46:20 0 举报
AI智能生成
springMVC笔记,细
作者其他创作
大纲/内容
概述
SpringMVC就是做Web开发的框架,实际是spring中的一个模块
SpringMVC的使用就是基于spring的,容器的概念,SpringMVC会创建容器,WebApplicationContext,SpringMVC作为容器是创建和管理对象的,使用@Controller创建控制器对象
三层和框架的对应
SpringMVC----界面层的,接受用户请求,显示处理结果的
Spring----业务层,处理业务逻辑的,spring是创建service,Dao,工具类对象
Mybatis----持久层,访问数据库的,对数据库进行增删改查
SpringMVC底层访问依旧是Servlet--DispatccherServlet(中央调度器)
1、创建 WebApplicationContext对象,读取配置文件,进而创建控制器对象
2、他是一个servlet,要接受用户请求,显示处理结果。
SpringMVC处理web请求
注解
1、 Controller:创建控制器类的对象,接受请求,处理请求。
2、@RequestMapping:请求映射,把请求绑定到一个方法,让这个方法来处理这个请求
1、value:请求的url地址,唯一值
2、method:请求的方式,使用RequestMethod类的枚举。例如RequestMethod.GET表示get请求
接受用户提交的参数
1、HttpServletRequest,HttpServletResponse和HttpSession可以直接出现在处理器方法的参数位置
2、逐个接受参数,处理器方法的形参名和请求中参数名一样。按名称对应来赋值
3、解决post请求方式乱码问题,使用过滤器解决乱码问题。characterEncodingFilter
<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>
<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>
4、逐个接收中,请求参数名和形参名不一样,使用@RequestParam解决
5、使用java对象接受请求的参数,要求请求中参数名和属性名一样。
6、SpringMVC还可以是Map,List等集合类型
处理器方法的返回值:表示请求处理结果
1.ModeAndView,表示数据和视图,对视图执行forword
2、String:表示视图,可以逻辑名称,完整试图路径,对视图执行forword
3、Void:返回值本身不能表示视图和数据,他可以响应ajax请求
4、对象Object:表示数据的,响应ajax请求
5、SpringMVC处理器方法返回对象,转为json响应ajax步骤
1、加入处理ajax到json转换的工具库:jackson
2、在springMVC配置文件中加入注解驱动的标签<mvc:annotation-driven>
3。在处理器方法的上面加入@ResponseBody
url-patten
设置中央调度器他的url-patten是“/”导致静态资源访问失败都是404动态资源可以正常访问
第一种解决静态资源访问方案:在springMVC的配置文件中加入
1)<mvc:default-servlet-handler>
2)<mvc:annotation-driven>
1)<mvc:default-servlet-handler>
2)<mvc:annotation-driven>
原理:给程序内存中增加一个处理器对象,DefaultHttpRequestHandler,让这个对象来处理静态资源的访问。
第二种处理静态资源
使用框架中的mvc:resource标签,由框架自己处理静态资源的访问
ssm整合开发
ssm整合有两个容器
(1)springmvc的容器(2)spring的容器
SpringMVC的容器来管理controller,视图等对象
spring容器管理的是service,Dao等对象
创建容器的方式
1、创建SpringMVC容器对象:使用中央调度器DispatcherServlet
2、创建Spring容器对象,使用监听器ContextLoaderListener
配置文件
1、springMVC的配置文件
2、spring的配置文件
3、mybatis的主配置文件
4、数据库的属性配置文件
核心技术
转发和重定向
转发:forward
重定向:redirect
两个关键字的特点:都不和视图解析器一同工作,就当没有视图解析器
统一异常处理
异常处理步骤
(1)
创建一个普通类,作为全局异常处理类
在类的上面加入@ControllerAdivce
在类中定义方法,方法上加入@ExceptionHandler
(2)
组件扫描器,扫描@Controller注解
<context:component-scan base-package="com.xinxian.controller">
组件扫描器,扫描@ControllerAdivce所在包名
<context:component-scan base-package="com.xinxian.handler">
声明注解驱动
<mvc:annotation-driven/>
0 条评论
下一页