Spring MVC学习笔记(二) 视图解析器 web请求六个阶段
2015-04-22 14:11:15
"解析视图" "spring-mvc.xml配置"
return "返回的视图名";
http://www.ibm.com/developerworks/cn/java/j-lo-springview/ 开发 Spring 自定义视图和视图解析器(很好的一篇文章)
看一下完整的配置:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"> </property> <property name="suffix" value=".jsp"> </property> </bean>
InternalResourceViewResolver 内部资源视图解析器;
prefix 前缀; suffix 后缀;
@Controller处理器方法,返回的"视图名" ~~~~~~~~~ return "text";那么我们访问的就是: /WEB-INF/jsp/text.jsp
spring mvc处理过程,一个web请求所需经理的六个阶段:
- 请求会被Spring MVC的 前端请求分发起(Dispatcher) 拦截.该拦截器是一个Servlet,需要在web.xml中配置,所有符合 配置的URL样式的访问请求,将都会被该拦截器拦截.Spring提供了默认的分发器org.springframework.web.servlet.DispatcherServlet,您也可以根据需要决定是否需要定制自己的分发器.
1 <servlet> 2 <servlet-name>springmvc</servlet-name> 3 <servlet-class> 4 org.springframework.web.servlet.DispatcherServlet 5 </servlet-class> 6 <init-param> 7 <param-name>contextConfigLocation</param-name> 8 <param-value>classpath:spring-mvc.xml</param-value> 9 </init-param> 10 <load-on-startup>1</load-on-startup> 11 </servlet> 12 <servlet-mapping> 13 <servlet-name>springmvc</servlet-name> 14 <url-pattern>*.form</url-pattern> 15 </servlet-mapping>
- 在接受到web访问请求后,"分发器"会根据开发人员在"spring配置文件------spring-mvc.xml"或"代码中的注解(Annotation)----------@Controller",来查找合适的控制器.
1 spring-mvc.xml
<mvc:interceptors> 2 <!--第一个拦截器--> 3 <mvc:interceptor> 4 <mvc:mapping path="/spring/*"/> 5 <mvc:exclude-mapping path="/login/*"/> 6 <bean class="com.tarena.interceptor.SomeInterceptor"/> 7 </mvc:interceptor>1 1 @Controller 2 2 @RequestMapping("/spring") 3 3 public class HelloController{ 4 4 @RequestMapping("/hello.form") 5 5 public String execute() throws Exception { 6 6 System.out.println("执行HelloController"); 7 7 return "hello"; 8 8 } 9 9 }
- 分发器在查找到合适的控制器后,将请求交给该控制器处理(基本都是 类方法) .
-
通常,控制器(处理方法) 会调用相应"服务类"来处理业务逻辑,在将请求处理后,"控制器"需返回处理后的"结果数据模型"(Model),以及下一个需要显示的"视图名" .
- 在"控制器"处理结束返回模型和试图名之后,Spring会依次调用Spring容器所注册的"视图解析器",来查找符合条件的视图 .
- 在获得Spring视图后,Spring会根据该视图的配置信息,显示该视图.
不要说话