SpringMVC应用02

1.了解SpringMVC中文乱码问题

1.在web.xml中进行配置
在这里插入图片描述
2.参数名不一致的情况
在实际开发中有可能会有这样的问题,就是表单中input的name和spring mvc方法中的参数名不一致,这时可以使用@RequestParam()注解来解决这个问题,这个注解中有三个属性:

value:指定请求参数的名称,即表单中input的name值。
name:同value,两者只能使用一个
required:指定该参数是否是必须传入的,boolean类型。若为 true,则表示请求中所携带的参数中必须包含当前参数。若为 false,则表示有没有均可。
defaultValue:指定当前参数的默认值。如果请求中没有该参数,则当前方法参数将取该默认值。
在这里插入图片描述

2.了解SpringMVC的转发和重定向问题

spring mvc底层其实就是一个servlet,因此在spring mvc中也存在转发和重定向的概念。对于转发的页面,可以是在WEB-INF目录下的页面;而重定向的页面,是不能在WEB-INF目录下的。因为重定向相当于用户再次发出一次请求,而用户是不能直接访问WEB-INF目录下的资源的。
根据索要跳转的的资源,可以分为跳转到前端页面和跳转到其他controller
在这里插入图片描述

3.掌握SpringMVC过滤器

拦截器(interceptor)是spring mvc中提供的一种类似filter过滤器的技术,只不过拦截器只能拦截controller的请求,而filter可以过滤所有请求,其他内容大体上两者是近似的。

定一个类实现HandlerInterceptor接口,这样就创建了一个拦截器,该接口中有三个方法:
1.preHandle(request, response, Object handler):
该方法在controller中的方法执行之前执行。其返回值为 boolean,若为 true,则紧接着会执行controller方法,且会将afterCompletion()方法压栈进入入到一个专门的方法栈中等待执行。
2.postHandle(request, response, Object handler, modelAndView):
该方法在controller方法执行之后执行。controller方法若最终未被执行,则该方法不会执行。由于该方法是在controller方法执行完后执行,且该方法参数中包含 ModelAndView,所以该方法可以修改controller方法的处理结果数据,且可以修改跳转方向。
3.afterCompletion(request, response, Object handler, Exception ex):
当 preHandle()方法返回 true 时,会将该方法放到专门的方法栈中,等到对请求进行响应的所有
工作完成之后才执行该方法。即该方法是在中央调度器渲染(数据填充)了响应页面之后执行的,此时对 ModelAndView 再操作也对响应无济于事。 有点像java里面的finally语句块

编写拦截的路径以及不拦截的处理方式:
(1)在springmvc.xml文件中注册拦截器,/** 表示对所有controller拦截
(2)可以通过在springmvc的配置文件中添加exclude-mapping设置不拦截的请求
在这里插入图片描述
定义一个拦截器实现HandlerInterceptor实现对登录的拦截
在这里插入图片描述
拦截的示意图
在这里插入图片描述

4. 掌握SpringMVC重对于异常的处理

在Spring MVC中也可以进行一些异常的处理,常用的方式有三种:

1.使用spring mvc中的异常处理器 SimpleMappingExceptionResolver
2.使用自定义异常处理器
3.使用异常处理注解

首先来自定义一个异常实现HandlerExceptionResolver接口,只要有异常发生,都会自动执行接口方法resolveException()
在这里插入图片描述
接下来需要修改一下springmvc.xml配置文件,添加异常处理相关的配置:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/AD20171/article/details/106755271