快速构建Spring+hibernate WEB应用(一)

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; } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值