入门案例的执行过程分析
-
入门案例的执行
1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象, 就会加载springmvc.xml配置文件 2. 开启了注解扫描,那么HelloController对象就会被创建 3. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解 找到执行的具体方法 4. 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件 5. Tomcat服务器渲染页面,做出响应
-
入门案例中的组件
1. 前端控制器(DispatcherServlet) 2. 处理器映射器(HandlerMapping) 3. 处理器(Handler) 4. 处理器适配器(HandlAdapter) 5. 视图解析器(View Resolver) 6. 视图(View)
-
RequestMapping注解
SpringMVC框架提供的转发和重定向
1、 forward请求转发
使用forward关键字进行请求转发*
· "forward:转发的JSP路径",不走视图解析器了,所以需要编写完整的路径*
@RequestMapping("/delete")
public String delete() throws Exception {
System.out.println("delete方法执行了...");
// return "forward:/WEB-INF/pages/success.jsp";
return "forward:/user/findAll";
2、 redirect重定向
return “redirect:/add.jsp”;
// return "redirect:/user/findAll
ResponseBody响应json数据
DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使 用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置:
1. location元素表示webapp目录下的包下的所有文件
2. mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b
<!-- 设置静态资源不过滤 -->
<mvc:resources location="/css/" mapping="/css/**"/> <!-- 样式 -->
使用@RequestBody获取请求体
1、 使用@RequestBody注解把json的字符串转换成JavaBean的对象
2、使用@ResponseBody注解把JavaBean对象转换成json字符串,直接响应
3、 json字符串和JavaBean对象互相转换的过程中,需要使用jackson的jar包
当上传文件是需要配置文件解析器对象
<!-- 配置文件解析器对象,要求id名称必须是multipartResolver -->
<bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760"/></bean>
springMvc拦截器
##拦截器概述
1. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。
2. 可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链
中的拦截器会按着定义的顺序执行。
3.拦截器和过滤器的功能比较类似,有区别
· 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。
· 拦截器是SpringMVC框架独有的
过滤器配置了/*,可以拦截任何资源。
拦截器只会对控制器中的方法进行拦截。
3. 拦截器也是AOP思想的一种实现方式
4. 想要自定义拦截器,需要实现HandlerInterceptor接口.
在springMvc.xml中配置拦截器
<mvc:interceptors>
<mvc:interceptor>
<!-- 哪些方法进行拦截 -->
<mvc:mapping path="/user/*"/>
<!-- 哪些方法不进行拦截
<mvc:exclude-mapping path=""/>--><!-- 注册拦截器对象 -->
<bean class="cn.itcast.demo1.MyInterceptor1"/>
</mvc:interceptor>
</mvc:interceptors>