今天看了org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
才知道,之前写的jsp页面代码都是通过访问jsp页面再请求后台action把结果返回给页面。
原来使用org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
可以直接访问接口再返回页面。并且进行数据初始化。(不使用这个特性也可以,纯属学习。)
配置文件:
web.xml
<web-app xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
springMVC配置:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/index.html">indexController</prop>
</props>
</property></bean>
<bean id="indexController" class="com.zhouwei.IndexController"></bean>
</beans>
applicationContext.xml
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"></property> </bean>
</beans>
controller:
public class IndexController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("-------handleRequestInternal----------");
ModelAndView mv = new ModelAndView("index","name","test");
return mv;
}
}
我访问的是index.html通过springmvc配置,请求到了indexController ,indexController实现了AbstractController的handleRequestInternal方法,从而跳转到ModelAndView(“index”,”name”,”test”);
顺便解释下 InternalResourceViewResolver
prefix 意思是ModelAndView的view中value的前面自动加上prefix 的内容,后面加上suffix内容
整个拼起来就是 /WEB-INF/index.jsp
项目目录结构如下:
简单记录下~~~每次读《Spring源码深度解析》都有新收获。