处理器映射HandlerMapping
来源:互联网 发布:中日高铁竞争知乎 编辑:程序博客网 时间:2024/05/22 15:34
配置DispatcherServlet
web.xml中配置DispatcherServlet
需要在web.xml文件中对DispatcherServlet的名称、随着容器启动而启动、拦截模式等内容进行配置,默认的DispatcherServlet配置xml文件路径为:/WEB-INF/[DispatcherServlet名称]-servlet.xml。
<servlet> <servlet-name>action</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.action</url-pattern></servlet-mapping>
action-servlet.xml中对DispatcherServlet进行具体的配置
<!-- 默认使用的控制器映射就是BeanNameUrlHandlerMapping --><bean id="beanNameUrlHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!-- 配置Controller --><bean name="/home.action" class="study.springmvc.controller.HomeController"/><!-- 配置视图解析器 --><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/></bean>
编写HomeController
public class HomeController extends AbstractController { @Override protected ModelAndView handleRequestInternal(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws Exception { System.out.println("HomeController Handling:" + request.getRequestURI()); return new ModelAndView("index"); }}
添加Java EE依赖:
<dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>${javax.version}</version></dependency>
运行结果
常用HandlerMapping
常用的HandlerMapping有3种,对HandlerMapping的配置在action-servlet.xml中进行配置,配置方式上文有例子,下文也会针对不同的HandlerMapping的配置进行讲解。
BeanNameUrlHandlerMapping
这是默认使用的HandlerMapping,也就是需要在Controller Bean的name属性中对url进行配置,同时使用class属性配置Controller类。上文已经有例子,此处不展开。
SimpleUrlHandlerMapping
<!-- 配置HandlerMapping --><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/index.action">homeController</prop> <prop key="/home.action">homeController</prop> </props> </property></bean><!-- 配置Controller --><bean id="homeController" class="study.springmvc.controller.HomeController"/><!-- 配置视图解析器 --><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/></bean>
这种HandlerMapping需要根据url的不同指定对应Controller的id,此处为了方便,全部使用homeController,故上述两个地址应该都会到达首页。
注意:当有 BeanNameUrlHandlerMapping 方式和 SimpleUrlHandlerMapping 方式声明冲突时,也就是有同名的URL,这时 Spring MVC 框架如何处理?
- 首先,配置重名不会引起冲突
- 其次,出现同名时,按配置文件的顺序执行,当发现有一个URL满足,就跳出
- 最后,Spring MVC 框架支持用户自定义顺序,增加 order 属性即可(在property标签中配置)
ControllerClassNameHandlerMapping
<!-- 配置HandlerMapping --><bean id="controllerClassNameHandlerMapping" class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/><!-- 配置Controller --><bean id="homeController" class="study.springmvc.controller.HomeController"/><bean id="helloController" class="study.springmvc.controller.HelloController"/><!-- 配置视图解析器 --><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/></bean>
public class HelloController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("HelloController Handling:" + request.getRequestURI()); return new ModelAndView("hello"); }}
这种情况下,会使用类名与访问url匹配的Controller,下面运行结果可以验证:
注意:这种HandlerMapping现在已经不推荐使用了。
好了,HandlerMapping就学到这了,接下来学习Controller。。。
0 0
- 处理器映射HandlerMapping
- Spring MVC处理器映射(handlerMapping)
- SpringMVC中的处理器映射(handlerMapping)
- springMVC--4种映射处理器handlerMapping
- springmvc三种处理器映射器handlerMapping
- spring学习笔记:spring mvc处理器映射(handlerMapping)
- spring学习笔记:spring mvc处理器映射(handlerMapping)
- springmvc—handlermapping三种映射
- springmvc—handlermapping三种映射
- HandlerMapping
- HandlerMapping
- springMVC处理器映射
- springMVC--处理器映射器
- SpringMVC之处理器映射
- SpingMVC中的三种HandlerMapping(映射器)
- SpringMVC 处理器映射器、处理器适配器
- SpringMVC中的种映射处理器
- Spring MVC 映射处理器配置
- android 3DES加密解密
- 多示例学习(Multiple Instance Learning)
- Java/Jsp中让数值不使用科学计数法显示的解决方案
- 深入理解Java垃圾回收机制
- websocket自动关闭,code:1006
- 处理器映射HandlerMapping
- Java的线程实现
- Building Gadget USB Module
- hadoop namnode 挂掉以及解决的过程记录如下
- 引用和指针
- Docker部署Python
- 4 开发MapReduce应用程序
- implements View.OnClickListener
- 博客网站(6)- Admin