spring mvc 入门系列之四--关于handlerMapping
来源:互联网 发布:安藤忠雄中山邸数据 编辑:程序博客网 时间:2024/05/22 16:39
跟着学院视频学习的,不过还是遇到些问题。
通过handlerMapping的设置,可以找到对应的Controller,因为是入门,所以这里只有比较简单的几种方式:
1、默认的BeanNameUrlHandlerMapping
2、url映射--SimpleUrlHandlerMapping
3、类名映射--ControllerClassNameHandlerMapping
4、注解(见前面的例子,略)
实验过程:
1、创建项目springmvc004,创建 web.xml,内容与之前的几个项目相同。测试时需根据不同的配置文件修改一下 web.xml 中servlet-name的名称。
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>springmvc004</display-name> <servlet> <servlet-name><span style="color:#ff6666;">myspring3</span></servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>myspring3</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping></web-app>
2、创建HelloWorldController类
package com.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;public class HelloWorldController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse arg1) throws Exception {System.out.println("进入控制器!");//处理请求,向指定的view传递model信息ModelAndView mv=new ModelAndView();mv.addObject("message", "Hello,controller!");mv.setViewName("out");return mv;}}
3、WebRoot\pages 目录下创建页面 hello.jsp和out.jsp
hello.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'hello.jsp' starting page</title> </head> <body> <a href="testMappingByBeanName.do">根据beanname进行映射</a> <a href="testMappingByUrl.do">根据url进行映射</a> <a href="helloworldController.do">根据类名进行映射</a> <a href="helloworldMe.do">根据类名进行映射</a> </body></html>
注意此页面中第3、4个链接中的大小写。
<body> ${message} </body>>
为了避免干扰,把以上3种映射方式分别写在了不同的-servlet.xml中,测试时需要先修改web.xml中的spring servlet 名称,下面只列出主要配置。
一、方式一 BeanNameUrlHandlerMapping,这种方式是默认的,配置文件:myspring1-servlet.xml:
<!-- 配置控制器 方式1:根据BeanName进行映射 --><beanclass="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /><bean name="/testMappingByBeanName.do" class="com.controller.HelloWorldController" /> <!-- 配置视图解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/pages/" /><property name="suffix" value=".jsp" /></bean>
二、方式二 url映射--SimpleUrlHandlerMapping,配置文件名:myspring2-servlet.xml
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/testMappingByUrl.do">helloController</prop></props></property></bean><bean id="helloController" class="com.controller.HelloWorldController" />
视图解析器部分同第一种方式,略去。
<!-- 配置控制器 方式3:根据Controller类名自动进行映射 --> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"> <!--property name="caseSensitive" value="true" /--> </bean> <bean class="com.controller.HelloWorldController" />
这个出了些问题,找了好久才发现原因:
<a href="helloworldMe.do">根据类名进行映射</a>
这两个都是OK的。
若要保持原来的驼峰式命名,只是首字母改小写,那么此时要加上上面注释掉的配置:
<property name="caseSensitive" value="true" />
这时要访问控制器HelloWorldController时,可以匹配的url是形如 helloWorld*.do 这种格式的。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
后面这部分问题的解决参考了:http://www.mkyong.com/spring-mvc/spring-mvc-controllerclassnamehandlermapping-example/
是个不错的教程,保留下来以后好好学习!
- spring mvc 入门系列之四--关于handlerMapping
- spring mvc之handlermapping
- Spring mvc 之 HandlerMapping
- spring mvc 之 HandlerMapping 配置
- 菜鸟之路——Spring MVC(四)handlerMapping和handlerAdapter
- Spring MVC中的HandlerMapping
- Spring MVC中的HandlerMapping
- Spring MVC-HandlerMapping
- Spring MVC中的HandlerMapping
- Spring MVC中的HandlerMapping
- Spring mvc系列四之 注解介绍
- Spring mvc系列四之 注解介绍
- Spring Web MVC 的HandlerMapping的使用之-------BeanNameUrlHandlerMapping
- Spring Web MVC 的HandlerMapping的使用之-------SimpleUrlHandlerMapping(有三种配法)
- Spring Web MVC 的HandlerMapping的使用之-------ControllerClassNameHandlerMapping
- spring mvc的HandlerMapping的使用之--BeanNameUrlHandlerMapping
- Spring Web MVC 的HandlerMapping的使用之-------BeanNameUrlHandlerMapping
- Spring Web MVC 的HandlerMapping的使用之-------SimpleUrlHandlerMapping(有三种配法)
- hdu3499(分层图最短路)
- 第七章 SpringMVC数据验证—注解式控制器的数据验证、类型转换及格式化
- bootstrap-treeview 扩展addNode方法 动态添加子节点的方法
- 文章标题
- [leetcode] 【排序】 23. Merge k Sorted Lists
- spring mvc 入门系列之四--关于handlerMapping
- C语言的特点与缺点
- 文件阅读
- 能做会说
- android的属性动画
- arcgis坐标系学习总结
- 浅析@ResponseBody的实际应用
- 毕业生网上跳蚤市场的设计与实现--毕设作品
- 写email那些事