springMVC笔记(二)- SimpleUrlHandlerMapping

SpringMVC里面有许多HandlerMapping,对这块还不太了解,所以决定了解一下这些东东的作用。

先来看第一个:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

官方的api文档解释如下:

Implementation of the org.springframework.web.servlet.HandlerMapping interface to map from URLs to request handler beans.

简单来说,就是实现了HandlerMapping接口,处理url到bean的映射,比如下面这些映射:

/welcome.html=ticketController

/show.html=ticketController

一个url对应一个bean,但是这个bean有个要求,就是实现Controller接口,下面看一个实例。

1.Controller如下:

 1 package com.springmvc.demo.controller;
 2
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.servlet.ModelAndView;
 8 import org.springframework.web.servlet.mvc.AbstractController;
 9
10 @Controller
11 public class SimpleController extends AbstractController {
12
13     @Override
14     protected ModelAndView handleRequestInternal(HttpServletRequest request,
15             HttpServletResponse response) throws Exception {
16         System.out.println("SimpleController...");
17         System.out.println(request.getParameter("username"));
18         ModelAndView mv = new ModelAndView("simpleController");
19         mv.addObject("msg", "hello,SimpleController");
20         return mv;
21     }
22
23 }

2.为了对比,再建一个Controller,这个没有实现Controller接口,而是使用注解:

 1 package com.springmvc.demo.controller;
 2
 3 import javax.servlet.http.HttpSession;
 4
 5 import org.springframework.stereotype.Controller;
 6 import org.springframework.ui.ModelMap;
 7 import org.springframework.validation.BindingResult;
 8 import org.springframework.web.bind.annotation.ModelAttribute;
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.servlet.ModelAndView;
12
13 import com.springmvc.demo.model.User;
14
15 @Controller
16 @RequestMapping("/user")
17 public class UserController {
18
19     @RequestMapping("/add")
20     public ModelAndView addUser(@RequestParam String username,
21             @RequestParam String password,
22             @RequestParam int id,
23             HttpSession session){
24
25         ModelAndView mv = new ModelAndView();
26         mv.setViewName("hello");
27         User u = new User();
28         u.setUsername(username);
29         u.setPassword(password);
30         u.setId(id);
31         mv.addObject("user", u);
32         session.setAttribute("user", u);
33
34         return mv;
35     }
36
37     /*@ModelAttribute
38     public User getUser(){
39         User u = new User();
40         u.setId(12);
41         return u;
42     }*/
43
44     @RequestMapping("/preAddUser")
45     public String preAddUser(ModelMap map){
46         User u = new User();
47         map.addAttribute("user", u);
48         return "index";
49     }
50
51     @RequestMapping("/addUser")
52     public String addUser2(@ModelAttribute("user") User user,BindingResult result,ModelMap map){
53         if(user.getUsername().equals("yang")){
54             map.addAttribute("user", user);
55             return "index";
56         }
57         /*ModelAndView mv = new ModelAndView();
58
59         mv.setViewName("hello");
60         mv.addObject("user", user);*/
61
62         return "hello";
63     }
64
65 }

3.页面simpleController.jsp:

 1 <!DOCTYPE html>
 2 <html>
 3 <body>
 4
 5 <form action="/springmvc/simpleController" method="post">
 6     <input type="text" name="username"/>
 7     <input type="text" name="password"/>
 8     <!-- <input type="text" name="id"/> -->
 9     <input type="submit" value="submit" />
10 </form>
11 </body>
12 </html>

4.MVC配置文件:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 4     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
 5     xsi:schemaLocation="
 6         http://www.springframework.org/schema/beans
 7         http://www.springframework.org/schema/beans/spring-beans.xsd
 8         http://www.springframework.org/schema/context
 9         http://www.springframework.org/schema/context/spring-context.xsd
10         http://www.springframework.org/schema/mvc
11         http://www.springframework.org/schema/mvc/spring-mvc.xsd">
12
13     <context:component-scan base-package="com.springmvc.demo.controller" />
14
15     <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
16     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> -->
17     <!-- <mvc:default-servlet-handler/> -->
18     <!-- <mvc:annotation-driven /> -->
19     <!-- <mvc:resources location="/resource/images/" mapping="/images/**" /> -->
20     <bean id="simpleController" class="com.springmvc.demo.controller.SimpleController"></bean>
21
22     <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
23
24         <property name="urlMap">
25             <map>
26                 <entry key="/simpleController" value-ref="simpleController" />
27             </map>
28         </property>
29     </bean>
30
31     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
32         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
33         <property name="prefix" value="/" />
34         <property name="suffix" value=".jsp" />
35     </bean>
36
37
38 </beans>

测试一:

访问simpleController.jsp,点击提交,访问正常

测试二:

访问/user/add,显示404

总结:

SimpleUrlHandlerMapping只支持实现了Controller接口的bean,且还需要在其属性里进行url路径-->bean的映射,不支持@RequestMapping注解,所以这个SimpleUrlHandlerMapping功能很有限

注:还可以使用mappings属性进行配置,效果是一样的:

<!-- mappings是一Properties对象 --><property name="mappings">
        <props>
           <prop key="/simpleController">simpleController</prop>
        </props>
</property>
时间: 2024-11-03 05:43:24

springMVC笔记(二)- SimpleUrlHandlerMapping的相关文章

SpringMVC笔记——SSM框架搭建简单实例

落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发的框架,对于新手来说也是比较容易学习入门的.虽说容易,但在框架搭建过程中仍然遇到了许多问题,因此用实例记录下来吧. 实例 第一步——导包 Spring框架包及其依赖包 MyBatis框架包及其依赖包 MyBatis-EhCache架包 C3P0架包 MySql数据库驱动包 项目架包如下: 项目结构如

老男孩培训视频听课笔记二(在51cto上听的)

centos 5.8 文本安装过程    引导采用默认,引导不用设置密码    网络配置,根据实际情况配置,网关是网络出口的地址,一般为wlan出口的路由器的地址或者是代理服务器的内网IP    DNS简单解说图:      主机名--时区--root密码    选择自定义系统安装包--最小化(安全方便工作,建议安装以下的组)      ·base-- 基础      ·editors-编辑器      ·development librarays--开发库      ·development

《卓有成效的程序员》----读书笔记二

六大方面对比Launchy和TypeAndRun(TAR) 对于快速启动工具,很多人都有自己的偏好,多次听到朋友介绍Launchy的好,虽然自己一直在使用着TAR,还是克制不住对于好软件的渴求,下载Launchy进行试用.很多软件都是有一个试用期的,也许新的软件确实不错,但是你习惯了以前使用的那个软件.今天就比较客观的将Launchy和TAR进行一下对比,从界面.上手速度到功能.自定义,以及软件的稳定性.占用资源进行详细的比较. [界面美观]Launchy:毫无疑问这是它的强项.1.0正式版自带

Caliburn.Micro学习笔记(二)----Actions

Caliburn.Micro学习笔记(二)----Actions 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions,看一下Caliburn.Micro给我们提供了多强大的支持 我们还是从做例子开始 demo的源码下载在文章的最后 例子1.无参数方法调用 点击button把textBox输入的文本弹出来 如果textbox里没有文本button不可点,看一下效果图 看一下前台代码 <Stac

《逻辑思维简易入门》(第2版) 阅读笔记二

<逻辑思维简易入门>(第2版) 阅读笔记二 本周阅读的是<逻辑思维简易入门>的第三章,也就是说,本书的第一部分就已经读完了. 第三章.信念的优点 信念和负信念是人们在接受一个事物时一种心理态度,延伸来说也就是对事物的认知态度.因为我们在研究 逻辑思维的时候,都有一个前提:“以正常情况以及说话者真诚”,所以有人如果对于一件事物不做回应,我们可以认为这是一种既不相信,也不怀疑的的态度. 信念的优缺点有很多,在书中主要介绍了下面几种: 1.准确性 好的信念实在准确的表达事实,同样真的信念

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

Emacs 笔记二

Emacs 笔记二 Table of Contents 1. 前言 2. emacs基本操作(常用快捷键) 3. emacs模式讲解 4. emacs缓冲区 5. org mode 5.1. 列表 5.2. 快键键 5.3. 内嵌元素(插入代码什么的) 5.4. 表格 1 前言 最近在学着写博客,发现MarkDown真乃神器,于是去找了很多markdown的工具,发现作业部落 最好的那个,而无意间又发现了org-mode火爆到极致 非常被人推崇,其实作业部落 已经是能很完美的满足我的需求了,但是

《Programming in Lua 3》读书笔记(二十二)

日期:2014.8.6 PartⅣ The C API 26 Extending Your Application 使用Lua很重要的一点是用来做配置语言.配合主语言做一些功能的配置. 26.1 The Basics 有的时候程序需要配置一些功能信息,很多时候可能有许多别的方法比用lua做配置要更简单:如使用环境变量或者读取文件,读取文件涉及到文件的解析.如果使用Lua进行配置的话,相当于用lua文件替代了要读取的如csv.txt文件等. 使用Lua进行配置的时候,就需要使用Lua API去控制

小猪的数据结构学习笔记(二)

小猪的数据结构学习笔记(二) 线性表中的顺序表 本节引言: 在上个章节中,我们对数据结构与算法的相关概念进行了了解,知道数据结构的 逻辑结构与物理结构的区别,算法的特性以及设计要求;还学了如何去衡量一个算法 的好坏,以及时间复杂度的计算!在本节中我们将接触第一个数据结构--线性表; 而线性表有两种表现形式,分别是顺序表和链表;学好这一章很重要,是学习后面的基石; 这一节我们会重点学习下顺序表,在这里给大家一个忠告,学编程切忌眼高手低,看懂不代表自己 写得出来,给出的实现代码,自己要理解思路,自己

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它