SpringMVC简单配置

来源:互联网 发布:义乌淘宝摄影师招聘 编辑:程序博客网 时间:2024/06/14 01:20

 

SpringMVC的基本配置及VC流程,万变不离其中,整个操作的流程还是一样的

1:页面客户端向服务器发送一个http请求,而请求被前段控制器DispatcherServlet拦截;

这时需要在web-xml中配置DispatcherServlet分发器

[html] view plain copy
  1. <web-app>  
  2.   
  3. <!—定义前端控制器-->  
  4.   
  5. <servlet>  
  6.   
  7.          <!--设置Servlet的名称-->  
  8.   
  9.          <servlet-name>dispatcherExample</servlet-name>  
  10.   
  11.          <!—设置servlet的类名 -->  
  12.   
  13.          <servlet-class>org.springframework.web.servlet.DispatherServlet</servlet-class>      
  14.   
  15.    </init-param>  
  16.   
  17. </servlet>  
  18.   
  19. <!—设置Servlet访问方式-->  
  20.   
  21. <servlet-mapping>  
  22.   
  23.          <servlet-name>dispatcherExample</servlet-name>  
  24.   
  25.          <!—制定拦截所有的.do结尾的请求-->  
  26.   
  27. <url-pattern>*.do</url-pattern>  
  28.   
  29. </servlet-mapping>  
  30.   
  31. <!—设定Bean定义文件的位置和名称-->  
  32.   
  33. <context-param>  
  34.   
  35.          <param-name> contextConfigLocation</param-name>  
  36.   
  37.          <param-value>/WEB-INF/applicationContext.xml</param-value>  
  38.   
  39. </context-param>  
  40.   
  41. <!--配置servlet监听器-->  
  42.   
  43. <listener-class>  
  44.   
  45.          org.springframework.web.context.ContextLoaderListener  
  46.   
  47. </listener-class>  
  48.   
  49. </web-app>  


 DispatcherServlet加载包含Web组件的bean(控制器,视图解析器,处理器映射等),ContextLoaderListener则加载应用中其他的bean(中间层,数据层等)

2: 前端控制器去寻找恰当的处理器映射来处理这次请求;

这时候需要在applicationContext.xml中配置一个处理器映射(最常用的处理器映射有两个:BeanNameUrlHandlerMappingSimpleUrlHandlerMapping 这两个处理器映射都继承自AbstractHandlerMapping类)

SpringMvc默认的处理器映射是BeanNameUrlHandlerMapping

[html] view plain copy
  1. <beans>  
  2.   
  3.          <!—指定使用BeanNameUrlHandlerMapping完成映射 -->  
  4.   
  5.          <bean id=”urlHandlerMapping”    
  6.   
  7. class=”org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping”/>  
  8.   
  9.    <!—将请求映射到Controller实例上,此处使用的是SimpleController实例 -->  
  10.   
  11.          <bean name=”/login.do”   
  12.   
  13. class=”org.springframework.web.servlet.mvc.SimpleFormController” >  
  14.   
  15.                    <!—定义访问界面-->  
  16.   
  17. <property name=”formView”><value>login</value></property>  
  18.   
  19.                    <!—登陆成功后-->  
  20.   
  21.                    <property name=”successView”><value>loginSuccess</value></property>  
  22.   
  23.                    <!—处理类类名-->  
  24.   
  25.                    <property name=”commandName”><value>LoginControl</value></property>  
  26.   
  27. <!—处理类位置-->  
  28.   
  29. <property name=”commandClass”><value>com.spring.LoginControl</value></property>  
  30.   
  31. </bean>  
  32.   
  33. </beans>  


例:在applicationContext.xml中配置一个SimpleUrlHandlerMapping处理器映射

[html] view plain copy
  1. <beans>  
  2.   
  3.          <!—指定使用的SimpleUrlHandlerMapping映射处理器-->  
  4.   
  5.          <bean                      
  6.   
  7. id=”SimpleUrlHandlerMapping” class=“org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”>”  
  8.   
  9.          <property name=”mapping”>  
  10.   
  11.                    <!—配置URL映射-->  
  12.   
  13.                   <props>  
  14.   
  15.                             <prop key=”/login.do”>loginControl</prop>  
  16.   
  17.                    <props>  
  18.   
  19. </property>  
  20.   
  21. </bean>  
  22.   
  23. <bean>  
  24.   
  25.          <!—创建Bean实例 -->  
  26.   
  27.          <bean id=”loginControl” class=”com.spring.LoginControl”/>  
  28.   
  29. </bean>  
  30.   
  31. </beans>  


 

3:DispactherServlet根据处理器映射(handler Mapping)来选择并决定将请求发送给对应的控制器(Spring的控制器的架构基础是org.springframework.Controller接口)

实现代码:

Public interface LoginControl  {

         //处理请求并返回一个ModelAndView对象给DIspatcherServlet

         ModeAndView handlerRequestHttpServletReques request,HttpServletResponse responsethrows Exception;

}

4:控制器处理完成后,将包含数据名称或视图对象及模型属性的ModelAndView对象返回给DispatcherServlet,前端控制器通过查询viewResolver对象从控制器返回的逻辑视图名解析成为一个具体的视图实现;

Spring视图处理器的两个重要的类是ViewResolverView

ViewResolver是通过视图名称来解析视图的,它提供了可从视图名称到实际视图的映射

View处理请求的准备工作,并将该请求提交给某种具体的视图技术

例:当以JSP作为视图层技术的时候,可以使用UrlBasedViewResolvers(此视图解析器可以讲视图名解析为URL,同时将请求传递给RequestDispatcher以显示视图)

<bean id=”viewResolver”

class=”org.springframework.web.servler.view. UrlBasedViewResolvers”>

         <property name=”prefix” value=”/WEB-INF/pages/”/>

         <property name=”suffix” value=”.jsp”/>

</bean>                                                                                    

 

5:如果前端控制器没有找到对应的视图则或抛出异常并交由异常处理解析器(HandlerExceptionResolver)处理。

 

如何发生异常,则将发生的异常交由HanderExceptionResolverder来处理(通过实现唯一的接口方法resolverException),从而给框架使用者一个处理异常的机会。

ModelAndView resolverException(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex)

当发生异常的时候,SpringMVC将调用resolverException()方法,并转到相应的视图,将异常报告页面反馈给用户,如需要使用异常处理,需要在Dispatcher文件Config.xml中进行配置,

[html] view plain copy
  1. <!—配置异常处理 -->  
  2.   
  3. <bean id=”execeptionResolver”   
  4.   
  5. class=”org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>  
  6.   
  7. <!—指定类名 -->  
  8.   
  9.          <propeprty name=”defaultErrorView”>  
  10.   
  11.          <!—配置默认的异常提示界面-->  
  12.   
  13.          <property name=”defaultErrorView”>  
  14.   
  15.                    <value>failure</value>  
  16.   
  17.          </property>  
  18.   
  19.          <!--指定可能抛出的异常-->  
  20.   
  21.          <property name=”exceptionMappings”>  
  22.   
  23.          <props>  
  24.   
  25.                             <prop key=”java.sql.SQLException”>DBerror</prop>  
  26.   
  27.                             <prop key=”java.lang.RuntimeException”>RuntimeError</prop>   
  28.   
  29.                    </props>  
  30.   
  31.          </property>  
  32.   
  33. </bean>  

0 0
原创粉丝点击