RequestMapping常用注解的使用
1: @RequestMapping在方法上,标注url到方法的映射关系
2: 在类上,相当在每一个方法上添加了一块url(相当于struts2的namespace )
3: 限定请求类型post/get
springmvc架构级别的异常处理
- 自定义全局异常
1.自定义异常类实现HandlerExceptionResolver接口
2.在springMvc.xml中注册
<bean class="com.itheima.exception.MyExceptionResolver"></bean>
- 自定义异常
1继承Excetpion类覆写两个方法
2在业务中throw new 自定义类(“信息”)
3在自定义全局异常中获取自定义异常,做处理
文件上传
springmvc没有对文件上传做实现,只有接口,需要依赖第三方的fileUpload的jar包
1.导包
2.配置
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
3.提交的表单必须有 enctype=“multipart/form-data”
4.提交时使用的名字必须于接收参数的名字一致
<input type="file" name="pictureFile"/>
5,具体实现
springmvc对restFul的支持
restFul: 是url的一种风格,互联网所有的事物都是资源,要求url中没有动词,只有名词。没有参数
1.修改拦截(web.xml)
2.过滤拦截(springMVC.xml)
3.代码实现
前台的请求 注意:没有.action,没有?id=了
控制层接受参数
springMVC拦截器
自定义拦截器
实现HandlerInterceptor接口(两个重要方法)
boolean preHandle 方法 在执行controller方法之前执行,返回false 拦截 返回true放行
应用场景:登录验证,权限验证
postHandle 方法 controller方法已经执行完毕,但是ModelAndView 还没返回还可以在域中放数据,返回
afterCompletion 方法controller方法已经执行完毕,但是ModelAndView 也返回了,一般没用,可用计数,看看一次请求的时间
在springMVC中配置
<!--拦截器 -->
<mvc:interceptors>
<!--多个拦截器,顺序执行 -->
<mvc:interceptor>
<!-- /*拦截主目录下的 /**拦截所有 user/login 就拦截这个路径-->
<mvc:mapping path="/**"/>
<bean class="com.itheima.intercept.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>