最近研究Spring MVC,发现他对MVC的实现和.net 有很大不同,总结如下:虽然现在都是声明式的,但是配置文件还是要了解下的。
先看图
可以看到,front controller就像一个gateway,所有的组件都和他直接交互。其他组件并不直接交互。
2. 首先,要在WEB-INF/web.xml中配置一下,告诉servlet容器,我们的servlet class是谁。并且用它映射哪些url
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
3. 其次,要在WEB-INF/web.xml配置ContextLoaderListener
告诉servlet容器我的的监听器,用于监听ServletContext
, HttpSession
, and ServletRequest等状态的变化,并且为第4步提供了前提
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
4. 配置ContextLoaderListener后,就可以在WEB-INF/web.xml中如下配置,让Servlet容器加载我们的servlet配置。
<context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/spring-servlet.xml</param-value> </context-param>
5. 然后在spring-servlet 中配置我们的controllers从哪找,ViewResolver,View路径怎么查找
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.ctrip.corp.inthotel" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
配置完成以后,我们就可以写controller代码和View了。