SpringMVC简单配置
2016-07-19 15:50
330 查看
SpringMVC的基本配置及VC流程,万变不离其中,整个操作的流程还是一样的
1:页面客户端向服务器发送一个http请求,而请求被前段控制器DispatcherServlet拦截;
这时需要在web-xml中配置DispatcherServlet分发器
[html] view
plain copy
<web-app>
<!—定义前端控制器-->
<servlet>
<!--设置Servlet的名称-->
<servlet-name>dispatcherExample</servlet-name>
<!—设置servlet的类名 -->
<servlet-class>org.springframework.web.servlet.DispatherServlet</servlet-class>
</init-param>
</servlet>
<!—设置Servlet访问方式-->
<servlet-mapping>
<servlet-name>dispatcherExample</servlet-name>
<!—制定拦截所有的.do结尾的请求-->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!—设定Bean定义文件的位置和名称-->
<context-param>
<param-name> contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<!--配置servlet监听器-->
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</web-app>
DispatcherServlet加载包含Web组件的bean(控制器,视图解析器,处理器映射等),ContextLoaderListener则加载应用中其他的bean(中间层,数据层等)
2: 前端控制器去寻找恰当的处理器映射来处理这次请求;
这时候需要在applicationContext.xml中配置一个处理器映射(最常用的处理器映射有两个:BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping 这两个处理器映射都继承自AbstractHandlerMapping类)
SpringMvc默认的处理器映射是BeanNameUrlHandlerMapping
[html] view
plain copy
<beans>
<!—指定使用BeanNameUrlHandlerMapping完成映射 -->
<bean id=”urlHandlerMapping”
class=”org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping”/>
<!—将请求映射到Controller实例上,此处使用的是SimpleController实例 -->
<bean name=”/login.do”
class=”org.springframework.web.servlet.mvc.SimpleFormController” >
<!—定义访问界面-->
<property name=”formView”><value>login</value></property>
<!—登陆成功后-->
<property name=”successView”><value>loginSuccess</value></property>
<!—处理类类名-->
<property name=”commandName”><value>LoginControl</value></property>
<!—处理类位置-->
<property name=”commandClass”><value>com.spring.LoginControl</value></property>
</bean>
</beans>
例:在applicationContext.xml中配置一个SimpleUrlHandlerMapping处理器映射
[html] view
plain copy
<beans>
<!—指定使用的SimpleUrlHandlerMapping映射处理器-->
<bean
id=”SimpleUrlHandlerMapping” class=“org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”>”
<property name=”mapping”>
<!—配置URL映射-->
<props>
<prop key=”/login.do”>loginControl</prop>
<props>
</property>
</bean>
<bean>
<!—创建Bean实例 -->
<bean id=”loginControl” class=”com.spring.LoginControl”/>
</bean>
</beans>
3:DispactherServlet根据处理器映射(handler
Mapping)来选择并决定将请求发送给对应的控制器(Spring的控制器的架构基础是org.springframework.Controller接口)
实现代码:
Public interface LoginControl {
//处理请求并返回一个ModelAndView对象给DIspatcherServlet
ModeAndView handlerRequest(HttpServletReques
request,HttpServletResponse response)throws Exception;
}
4:控制器处理完成后,将包含数据名称或视图对象及模型属性的ModelAndView对象返回给DispatcherServlet,前端控制器通过查询viewResolver对象从控制器返回的逻辑视图名解析成为一个具体的视图实现;
Spring视图处理器的两个重要的类是ViewResolver和View
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
<!—配置异常处理 -->
<bean id=”execeptionResolver”
class=”org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>
<!—指定类名 -->
<propeprty name=”defaultErrorView”>
<!—配置默认的异常提示界面-->
<property name=”defaultErrorView”>
<value>failure</value>
</property>
<!--指定可能抛出的异常-->
<property name=”exceptionMappings”>
<props>
<prop key=”java.sql.SQLException”>DBerror</prop>
<prop key=”java.lang.RuntimeException”>RuntimeError</prop>
</props>
</property>
</bean>
1:页面客户端向服务器发送一个http请求,而请求被前段控制器DispatcherServlet拦截;
这时需要在web-xml中配置DispatcherServlet分发器
[html] view
plain copy
<web-app>
<!—定义前端控制器-->
<servlet>
<!--设置Servlet的名称-->
<servlet-name>dispatcherExample</servlet-name>
<!—设置servlet的类名 -->
<servlet-class>org.springframework.web.servlet.DispatherServlet</servlet-class>
</init-param>
</servlet>
<!—设置Servlet访问方式-->
<servlet-mapping>
<servlet-name>dispatcherExample</servlet-name>
<!—制定拦截所有的.do结尾的请求-->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!—设定Bean定义文件的位置和名称-->
<context-param>
<param-name> contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<!--配置servlet监听器-->
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</web-app>
DispatcherServlet加载包含Web组件的bean(控制器,视图解析器,处理器映射等),ContextLoaderListener则加载应用中其他的bean(中间层,数据层等)
2: 前端控制器去寻找恰当的处理器映射来处理这次请求;
这时候需要在applicationContext.xml中配置一个处理器映射(最常用的处理器映射有两个:BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping 这两个处理器映射都继承自AbstractHandlerMapping类)
SpringMvc默认的处理器映射是BeanNameUrlHandlerMapping
[html] view
plain copy
<beans>
<!—指定使用BeanNameUrlHandlerMapping完成映射 -->
<bean id=”urlHandlerMapping”
class=”org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping”/>
<!—将请求映射到Controller实例上,此处使用的是SimpleController实例 -->
<bean name=”/login.do”
class=”org.springframework.web.servlet.mvc.SimpleFormController” >
<!—定义访问界面-->
<property name=”formView”><value>login</value></property>
<!—登陆成功后-->
<property name=”successView”><value>loginSuccess</value></property>
<!—处理类类名-->
<property name=”commandName”><value>LoginControl</value></property>
<!—处理类位置-->
<property name=”commandClass”><value>com.spring.LoginControl</value></property>
</bean>
</beans>
例:在applicationContext.xml中配置一个SimpleUrlHandlerMapping处理器映射
[html] view
plain copy
<beans>
<!—指定使用的SimpleUrlHandlerMapping映射处理器-->
<bean
id=”SimpleUrlHandlerMapping” class=“org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”>”
<property name=”mapping”>
<!—配置URL映射-->
<props>
<prop key=”/login.do”>loginControl</prop>
<props>
</property>
</bean>
<bean>
<!—创建Bean实例 -->
<bean id=”loginControl” class=”com.spring.LoginControl”/>
</bean>
</beans>
3:DispactherServlet根据处理器映射(handler
Mapping)来选择并决定将请求发送给对应的控制器(Spring的控制器的架构基础是org.springframework.Controller接口)
实现代码:
Public interface LoginControl {
//处理请求并返回一个ModelAndView对象给DIspatcherServlet
ModeAndView handlerRequest(HttpServletReques
request,HttpServletResponse response)throws Exception;
}
4:控制器处理完成后,将包含数据名称或视图对象及模型属性的ModelAndView对象返回给DispatcherServlet,前端控制器通过查询viewResolver对象从控制器返回的逻辑视图名解析成为一个具体的视图实现;
Spring视图处理器的两个重要的类是ViewResolver和View
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
<!—配置异常处理 -->
<bean id=”execeptionResolver”
class=”org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>
<!—指定类名 -->
<propeprty name=”defaultErrorView”>
<!—配置默认的异常提示界面-->
<property name=”defaultErrorView”>
<value>failure</value>
</property>
<!--指定可能抛出的异常-->
<property name=”exceptionMappings”>
<props>
<prop key=”java.sql.SQLException”>DBerror</prop>
<prop key=”java.lang.RuntimeException”>RuntimeError</prop>
</props>
</property>
</bean>
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- C# MVC模式下商品抽奖功能实现
- Zend的MVC机制使用分析(二)
- ASP.NET MVC 4 捆绑和缩小实例介绍
- ASP.NET Mvc开发之查询数据
- ASP.NET MVC中将控制器分离到类库的实现
- asp.net实现在非MVC中使用Razor模板引擎的方法
- ASP.NET MVC中的AJAX应用
- 为ASP.NET MVC及WebApi添加路由优先级
- ASP.NET MVC中图表控件的使用方法
- Asp.net mvc实时生成缩率图到硬盘