Spring MVC分发器
首先,我们将Spring ,hibernate及其依赖的jar包放在WEB-INF/lib 目录下。
这里注意:用最新的包,hibernate 3.0有汉字的bug!当hibernate包替换的时候,注意依赖包也要以其更新,否则汉字问题可能依然存在。
Spring MVC配置
要开始构建示例应用程序,请配置 Spring MVC 的 DispatcherServlet。请在 web.xml 文件中注册所有配置。清单 1 显示了如何配置 sampleBankingServlet。
清单 1. 配置 Spring MVC DispatcherServlet
<servlet>
<servlet-name>SpringDispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
配置应用程序的 URL
下一步是配置想让 SpringDispatcher处理的 URL。同样,还是要在 web.xml 中注册所有这些信息。
<servlet mapping>
<servlet name> SpringDispatcher<servlet
name>
<url pattern>*.htm</url
pattern>
</servlet mapping>
Spring MVC处理器映射
清单 2. 配置想要处理的 URL
按照如上定义的Servlet名称,web容器会在WEB-INF下寻找SpringDispatcher-servlet.xml文件作为Spring MVC的基础配置文件
显然,我们可以通过import轻松的将Spring MVC配置文件进行分解:
<import resource="classpath:gfkd/mtn/spring/user/controllor/Springmvc_user.xml"/>
如上我就将用户管理的模块分离开来了。
请求分发的Servlet的请求分发是通过SpringDispatcher-servlet中的定义进行请求转发。
使用处理器映射,你可以将web请求映射到正确的处理器上。有很多处理器映射你可以使用,例如:SimpleUrlHandlerMapping或者BeanNameUrlHandlerMapping。
前者在使用中更为强大。例子如下:
<bean id="simpleUrlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/listUser.htm">listUserController</prop>
<prop key="/insertUser.htm">insertUserContoller</prop>
</props>
</property>
</bean>
添加HandlerInterceptors
处理器映射提供了拦截器概念,当你想要为所有请求提供某种功能时,例如做某种检查,这就非常有用。
处理器映射中的拦截器必须实现org.springframework.web.servlet包中的HandlerInterceptor接口。这个接口定义了三个方法,一个在处理器执行前被调用,一个在处理器执行后被调用,另一个在整个请求处理完后调用。这三个方法提供你足够的灵活度做任何处理前和处理后的操作。
preHandle方法有一个boolean返回值。使用这个值,你可以调整执行链的行为。当返回true时,处理器执行链将继续执行,当返回false时,DispatcherServlet认为拦截器本身将处理请求(比如显示正确的视图),而不继续执行执行链中的其它拦截器和处理器。
<beans>
<beanid="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="officeHoursInterceptor"/>
</list>
</property>
<property name="mappings"> <props> <prop key="/*.form">editAccountFormController</prop> <prop key="/*.view">editAccountFormController</prop> </props> </property> </bean>
Class officeHoursInterceptor extends HandlerInterceptorAdapter
public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
{ Calendar cal = Calendar.getInstance();
int hour = cal.get(HOUR_OF_DAY);
if (openingTime <= hour < closingTime)
{return true; }
else { response.sendRedirect("http://host.com/outsideOfficeHours.html");
return false; } }
首先,我们将Spring ,hibernate及其依赖的jar包放在WEB-INF/lib 目录下。
这里注意:用最新的包,hibernate 3.0有汉字的bug!当hibernate包替换的时候,注意依赖包也要以其更新,否则汉字问题可能依然存在。
Spring MVC配置
要开始构建示例应用程序,请配置 Spring MVC 的 DispatcherServlet。请在 web.xml 文件中注册所有配置。清单 1 显示了如何配置 sampleBankingServlet。
清单 1. 配置 Spring MVC DispatcherServlet
<servlet>
<servlet-name>SpringDispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
配置应用程序的 URL
下一步是配置想让 SpringDispatcher处理的 URL。同样,还是要在 web.xml 中注册所有这些信息。
<servlet mapping>
<servlet name> SpringDispatcher<servlet
name>
<url pattern>*.htm</url
pattern>
</servlet mapping>
Spring MVC处理器映射
清单 2. 配置想要处理的 URL
按照如上定义的Servlet名称,web容器会在WEB-INF下寻找SpringDispatcher-servlet.xml文件作为Spring MVC的基础配置文件
显然,我们可以通过import轻松的将Spring MVC配置文件进行分解:
<import resource="classpath:gfkd/mtn/spring/user/controllor/Springmvc_user.xml"/>
如上我就将用户管理的模块分离开来了。
请求分发的Servlet的请求分发是通过SpringDispatcher-servlet中的定义进行请求转发。
使用处理器映射,你可以将web请求映射到正确的处理器上。有很多处理器映射你可以使用,例如:SimpleUrlHandlerMapping或者BeanNameUrlHandlerMapping。
前者在使用中更为强大。例子如下:
<bean id="simpleUrlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/listUser.htm">listUserController</prop>
<prop key="/insertUser.htm">insertUserContoller</prop>
</props>
</property>
</bean>
添加HandlerInterceptors
处理器映射提供了拦截器概念,当你想要为所有请求提供某种功能时,例如做某种检查,这就非常有用。
处理器映射中的拦截器必须实现org.springframework.web.servlet包中的HandlerInterceptor接口。这个接口定义了三个方法,一个在处理器执行前被调用,一个在处理器执行后被调用,另一个在整个请求处理完后调用。这三个方法提供你足够的灵活度做任何处理前和处理后的操作。
preHandle方法有一个boolean返回值。使用这个值,你可以调整执行链的行为。当返回true时,处理器执行链将继续执行,当返回false时,DispatcherServlet认为拦截器本身将处理请求(比如显示正确的视图),而不继续执行执行链中的其它拦截器和处理器。
<beans>
<beanid="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="officeHoursInterceptor"/>
</list>
</property>
<property name="mappings"> <props> <prop key="/*.form">editAccountFormController</prop> <prop key="/*.view">editAccountFormController</prop> </props> </property> </bean>
Class officeHoursInterceptor extends HandlerInterceptorAdapter
public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
{ Calendar cal = Calendar.getInstance();
int hour = cal.get(HOUR_OF_DAY);
if (openingTime <= hour < closingTime)
{return true; }
else { response.sendRedirect("http://host.com/outsideOfficeHours.html");
return false; } }