`
jinnianshilongnian
  • 浏览: 21505175 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2418798
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3008948
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5639578
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:259964
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597401
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250249
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5859076
Group-logo
跟我学Nginx+Lua开...
浏览量:702284
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:785273
社区版块
存档分类
最新评论

SpringMVC3强大的请求映射规则详解 第六章 注解式控制器详解——跟着开涛学SpringMVC

 
阅读更多

 

声明:本系列都是原创内容,觉得好就顶一个,让更多人知道!!写博客不容易,写原创更不容易!!

6.5、请求映射

处理器定义好了,那接下来我们应该定义功能处理方法,接收用户请求处理并选择视图进行渲染。首先我们看一下图6-1:

http请求信息包含六部分信息:
①请求方法,如GET或POST,表示提交的方式;
URL,请求的地址信息;
③协议及版本
④请求头信息(包括Cookie信息);
⑤回车换行CRLF);
⑥请求内容区(即请求的内容或数据),如表单提交时的参数数据、URL请求参数(?abc=123 ?后边的)等。
 
想要了解HTTP/1.1协议,请访问http://tools.ietf.org/html/rfc2616
 
那此处我们可以看到有①、②、④、⑥一般是可变的,因此我们可以这些信息进行请求到处理器的功能处理方法的映射,因此请求的映射分为如下几种:

URL路径映射:使用URL映射请求到处理器的功能处理方法;

请求方法映射限定:如限定功能处理方法只处理GET请求;

请求参数映射限定:如限定只处理包含“abc”请求参数的请求;

请求头映射限定:如限定只处理“Accept=application/json”的请求。

 

接下来看看具体如何映射吧。


6.5.1、URL路径映射

6.5.1.1、普通URL路径映射

@RequestMapping(value={"/test1", "/user/create"})多个URL路径可以映射到同一个处理器的功能处理方法。

6.5.1.2URI模板模式映射

@RequestMapping(value="/users/{userId}"){×××}占位符, 请求的URL可以是 “/users/123456”或

/users/abcd”,通过6.6.5讲的通过@PathVariable可以提取URI模板模式中的{×××}中的×××变量。

@RequestMapping(value="/users/{userId}/create"):这样也是可以的,请求的URL可以是“/users/123/create”。

@RequestMapping(value="/users/{userId}/topics/{topicId}"):这样也是可以的,请求的URL可以是“/users/123/topics/123”。

6.5.1.3Ant风格的URL路径映射

@RequestMapping(value="/users/**"):可以匹配“/users/abc/abc”,但“/users/123”将会被【URI模板模式映射中的“/users/{userId}”模式优先映射到】【详见4.14的最长匹配优先】。

 

@RequestMapping(value="/product?"):可匹配“/product1”或“/producta”,但不匹配“/product”或“/productaa”;

@RequestMapping(value="/product*")可匹配“/productabc”或“/product”,但不匹配“/productabc/abc”;

@RequestMapping(value="/product/*")可匹配“/product/abc”,但不匹配“/productabc”;

@RequestMapping(value="/products/**/{productId}")可匹配“/products/abc/abc/123”或“/products/123”,也就是Ant风格和URI模板变量风格可混用;

 

此处需要注意的是【4.14中提到的最长匹配优先】,Ant风格的模式请参考4.14。

6.5.1.4、正则表达式风格的URL路径映射

Spring3.0开始支持正则表达式风格的URL路径映射,格式为{变量名:正则表达式},这样我们就可以通过6.6.5讲的通过@PathVariable提取模式中的{×××:正则表达式匹配的值}中的×××变量了。

 

@RequestMapping(value="/products/{categoryCode:\\d+}-{pageNumber:\\d+}"):可以匹配“/products/123-1”,但不能匹配“/products/abc-1”,这样可以设计更加严格的规则。

 

正则表达式风格的URL路径映射是一种特殊的URI模板模式映射:

URI模板模式映射是{userId},不能指定模板变量的数据类型,如是数字还是字符串;

正则表达式风格的URL路径映射,可以指定模板变量的数据类型,可以将规则写的相当复杂。

 

6.5.1.5、组合使用是“或”的关系

@RequestMapping(value={"/test1", "/user/create"}) 组合使用是或的关系,即“/test1”或“/user/create”请求URL路径都可以映射到@RequestMapping指定的功能处理方法。

 

以上URL映射的测试类为:cn.javass.chapter6.web.controller.mapping.MappingController.java

 

到此,我们学习了Spring Web MVC提供的强大的URL路径映射,而且可以实现非常复杂的URL规则。Spring Web MVC不仅仅提供URL路径映射,还提供了其他强大的映射规则。接下来我们看一下请求方法映射限定吧。

 

 

6.5.2、请求方法映射限定

一般我们熟悉的表单一般分为两步:第一步展示,第二步提交,如4.9、SimpleFormController那样,那如何通过@RequestMapping来实现呢?

6.5.2.1、请求方法映射限定

我们熟知的,展示表单一般为GET请求方法;提交表单一般为POST请求方法。但6.5.1节讲的URL路径映射方式对任意请求方法是全盘接受的,因此我们需要某种方式来告诉相应的功能处理方法只处理如GET请求方法的请求或POST请求方法的请求。

 

接下来我们使用@RequestMapping来实现SimpleFormController的功能吧。

 

package cn.javass.chapter6.web.controller.method;
//省略import
@Controller
@RequestMapping("/customers/**")                                     //①处理器的通用映射前缀
public class RequestMethodController {
    @RequestMapping(value="/create", method = RequestMethod.GET)//②类级别的@RequestMapping窄化
    public String showForm() {
        System.out.println("===============GET");
        return "customer/create";  
    }
    @RequestMapping(value="/create", method = RequestMethod.POST)//③类级别的@RequestMapping窄化
    public String submit() {
        System.out.println("================POST");
        return "redirect:/success";        
    }
}

 处理器的通用映射前缀(父路径):表示该处理器只处理匹配“/customers/**”的请求;

类级别的@RequestMapping进行窄化,表示showForm可处理匹配“/customers/**/create”且请求方法为“GET的请求;

类级别的@RequestMapping进行窄化,表示submit可处理匹配“/customers/**/create”且请求方法为“POST的请求。

6.5.2.2、组合使用是“或”的关系

@RequestMapping(value="/methodOr", method = {RequestMethod.POST, RequestMethod.GET})即请求方法可以是 GET POST

 

提示:

1、一般浏览器只支持GET、POST请求方法,如想浏览器支持PUT、DELETE等请求方法只能模拟,稍候章节介绍。

2、除了GET、POST,还有HEAD、OPTIONS、PUT、DELETE、TRACE。

3、DispatcherServlet默认开启对 GET、POST、PUT、DELETE、HEAD的支持;

4、如果需要支持OPTIONS、TRACE,请添加DispatcherServlet在web.xml的初始化参数:dispatchOptionsRequest 和 dispatchTraceRequest 为true。

 

请求方法的详细使用请参考RESTful架构风格一章。

 

以上请求方法映射限定测试类为:cn.javass.chapter6.web.controller.method.RequestMethodController

 

 

6.5.3、请求参数数据映射限定

6.5.3.1、请求数据中有指定参数名

package cn.javass.chapter6.web.controller.parameter;
//省略import
@Controller
@RequestMapping("/parameter1")                                      //①处理器的通用映射前缀
public class RequestParameterController1 {
    //②进行类级别的@RequestMapping窄化
    @RequestMapping(params="create", method=RequestMethod.GET) 
    public String showForm() {
        System.out.println("===============showForm");
        return "parameter/create";        
    }
    //③进行类级别的@RequestMapping窄化
    @RequestMapping(params="create", method=RequestMethod.POST)  
    public String submit() {
        System.out.println("================submit");
        return "redirect:/success";        
    }
}
 

 

 @RequestMapping(params="create", method=RequestMethod.GET:表示请求中有“create”的参数名且请求方法为“GET”即可匹配,如可匹配的请求URLhttp://×××/parameter1?create”;

@RequestMapping(params="create", method=RequestMethod.POST):表示请求中有“create”的参数名且请求方法为“POST”即可匹配;

 

此处的create请求参数名表示你请求的动作,即你想要的功能的一个标识,常见的CRUD(增删改查)我们可以使用如下请求参数名来表达:

create请求参数名  GET请求方法) 新增页面展示、(create请求参数名  POST请求方法)新增提交;

update请求参数名  GET请求方法) 新增页面展示、(update请求参数名  POST请求方法)新增提交;

delete请求参数名  GET请求方法) 新增页面展示、(delete请求参数名  POST请求方法)新增提交;

query请求参数名  GET请求方法) 新增页面展示、(query请求参数名  POST请求方法) 新增提交;

list请求参数名  GET请求方法) 列表页面展示;

view请求参数名  GET请求方法) 查看单条记录页面展示。

 

6.5.3.2、请求数据中没有指定参数名

//请求参数不包含 create参数名
@RequestMapping(params="!create", method=RequestMethod.GET)//进行类级别的@RequestMapping窄化

 @RequestMapping(params="!create", method=RequestMethod.GET)表示请求中没有create”参数名且请求方法为“GET”即可匹配,如可匹配的请求URLhttp://×××/parameter1?abc”。

6.5.3.3、请求数据中指定参数名=

package cn.javass.chapter6.web.controller.parameter;
//省略import
@Controller
@RequestMapping("/parameter2")                      //①处理器的通用映射前缀
public class RequestParameterController2 {
    //②进行类级别的@RequestMapping窄化
    @RequestMapping(params="submitFlag=create", method=RequestMethod.GET)  
    public String showForm() {
        System.out.println("===============showForm");
        return "parameter/create";        
    }
    //③进行类级别的@RequestMapping窄化
    @RequestMapping(params="submitFlag=create", method=RequestMethod.POST)   
    public String submit() {
        System.out.println("===============submit");
        return "redirect:/success";        
    }
}

 @RequestMapping(params="submitFlag=create", method=RequestMethod.GET):表示请求中有“submitFlag=create”请求参数且请求方法为“GET”即可匹配,如请求URLhttp://×××/parameter2?submitFlag=create

 

@RequestMapping(params="submitFlag=create", method=RequestMethod.POST)表示请求中有“submitFlag=create”请求参数且请求方法为“POST”即可匹配;

 

此处的submitFlag=create请求参数表示你请求的动作,即你想要的功能的一个标识,常见的CRUD(删改查)我们可以使用如下请求参数名来表达:

submitFlag=create请求参数名  GET请求方法) 新增页面展示、(submitFlag=create请求参数名  POST请求方法) 新增提交;

submitFlag=update请求参数名  GET请求方法) 新增页面展示、(submitFlag=update请求参数名  POST请求方法) 新增提交;

submitFlag=delete请求参数名  GET请求方法) 新增页面展示、(submitFlag=delete请求参数名  POST请求方法) 新增提交;

submitFlag=query请求参数名  GET请求方法) 新增页面展示、(submitFlag=query请求参数名  POST请求方法) 新增提交;

submitFlag=list请求参数名  GET请求方法) 列表页面展示;

submitFlag=view请求参数名  GET请求方法) 查看单条记录页面展示。

6.5.3.4、请求数据中指定参数名!=

//请求参数submitFlag 不等于 create
@RequestMapping(params="submitFlag!=create", method=RequestMethod.GET)  

 @RequestMapping(params="submitFlag!=create", method=RequestMethod.GET)表示请求中的参数“submitFlag!=create”且请求方法为“GET”即可匹配,如可匹配的请求URLhttp://×××/parameter1?submitFlag=abc”。

 

6.5.3.5、组合使用是“且”的关系

@RequestMapping(params={"test1", "test2=create"})  //②进行类级别的@RequestMapping窄化

 @RequestMapping(params={"test1""test2=create"})表示请求中有“test1”参数名  test2=create”参数即可匹配,如可匹配的请求URLhttp://×××/parameter3?test1&test2=create

 

以上请求参数数据映射限定测试类为:cn.javass.chapter6.web.controller.method包下的RequestParameterController1RequestParameterController2RequestParameterController3

 

 

6.5.4、请求头数据映射限定

6.5.4.1、准备环境

浏览器:建议chrome最新版本;

插件:ModHeader

安装地址:https://chrome.google.com/webstore/detail/idgpnmonknjnojddfkpgkljpfnnfcklj

 

插件安装步骤:

1、打开https://chrome.google.com/webstore/detail/idgpnmonknjnojddfkpgkljpfnnfcklj,如图6-2


6-2

2、点击“添加至chrome”后弹出“确认安装”对话框,点击“安装”按钮即可,如图6-3:


6-3

3、安装成功后,在浏览器右上角出现如图6-4的图标表示安装成功:


6-4

4、鼠标右击右上角的“Modify Header”图标,选择选项,打开如图6-5:


6-5

7、修改完成后,输入URL请求,你可以在chrome的“开发人员工具的”网络选项卡下,看到如图6-7的信息表示添加请求头成功了:


6-7

到此我们的工具安装完毕,接下来看看如何使用请求头数据进行映射限定。

6.5.4.2、请求头数据中有指定参数名

@RequestMapping(value="/header/test1", headers = "Accept"):表示请求的URL必须为“/header/test1

且 请求头中必须有Accept参数才能匹配。

 

@RequestMapping(value="/header/test1", headers = "abc"):表示请求的URL必须为“/header/test1

且 请求头中必须有abc参数才能匹配,如图6-8时可匹配。


6-8

6.5.4.3、请求头数据中没有指定参数名

@RequestMapping(value="/header/test2", headers = "!abc"):表示请求的URL必须为“/header/test2

且 请求头中必须没有abc参数才能匹配。(将Modify Header的abc参数值删除即可)。


6.5.4.4、请求头数据中指定参数名=

@RequestMapping(value="/header/test3", headers = "Content-Type=application/json"):表示请求的URL必须为“/header/test3 且 请求头中必须有“Content-Type=application/json”参数即可匹配。(将Modify Header的Content-Type参数值改为“application/json”即可);


 

当你请求的URL为“/header/test3  如果请求头中没有或不是“Content-Type=application/json”参数(如“text/html”其他参数),将返回“HTTP Status 415”状态码【表示不支持的媒体类型(Media Type),也就是MIME类型】,即我们的功能处理方法只能处理application/json的媒体类型。

 

@RequestMapping(value="/header/test4", headers = "Accept=application/json"):表示请求的URL必须为“/header/test4 且 请求头中必须有“Accept =application/json”参数即可匹配。(将Modify Header的Accept参数值改为“application/json”即可);


当你请求的URL为“/header/test4  如果请求头中没有“Accept=application/json”参数(如“text/html”其他参数),将返回“HTTP Status 406”状态码【不可接受,服务器无法根据Accept头的媒体类型为客户端生成响应】,即客户只接受“application/json”媒体类型的数据,即我们的功能处理方法的响应只能返回“application/json”媒体类型的数据。

 

@RequestMapping(value="/header/test5", headers = "Accept=text/*":表示请求的URL必须为“/header/test5 且 请求头中必须有如“Accept=text/plain”参数即可匹配。(将Modify Header的Accept参数值改为“text/plain”即可);

 

Accept=text/*:表示主类型为text,子类型任意,如“text/plain”、“text/html”等都可以匹配。

 

@RequestMapping(value="/header/test6", headers = "Accept=*/*":表示请求的URL必须为“/header/test6 且 请求头中必须有任意Accept参数即可匹配。(将Modify Header的Accept参数值改为“text/html”或“application/xml”等都可以)。

 

Accept=*/*:表示主类型任意,子类型任意,如“text/plain”、“application/xml”等都可以匹配。

6.5.4.5、请求头数据中指定参数名!=

@RequestMapping(value="/header/test7", headers = "Accept!=text/vnd.wap.wml"):表示请求的URL必须为“/header/test7 且 请求头中必须有“Accept”参数但值不等于“text/vnd.wap.wml”即可匹配。

6.5.4.6、组合使用是“且”的关系

@RequestMapping(value="/header/test8", headers = {"Accept!=text/vnd.wap.wml","abc=123"}):表示请求的URL必须为“/header/test8 且 请求头中必须有“Accept”参数但值不等于“text/vnd.wap.wml”且 请求中必须有参数“abc=123”即可匹配。

 

注:Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

如果您的请求中含有Accept:“*/*”,则可以匹配功能处理方法上的如“text/html”、“text/*”,“application/xml”等。

 

 

 

源代码下载

 

 

目录:
第一章 Web MVC简介 —— 跟开涛学SpringMVC

第二章 Spring MVC入门 —— 跟开涛学SpringMVC

第三章 DispatcherServlet详解 ——跟开涛学SpringMVC

第四章 Controller接口控制器详解(1)——跟着开涛学SpringMVC

第四章 Controller接口控制器详解(2)——跟着开涛学SpringMVC

第四章 Controller接口控制器详解(3)——跟着开涛学SpringMVC

第四章 Controller接口控制器详解(4)——跟着开涛学SpringMVC

第四章 Controller接口控制器详解(5)——跟着开涛学SpringMVC

第四章 Controller接口控制器详解(6)——跟着开涛学SpringMVC

第五章 处理器拦截器详解——跟着开涛学SpringMVC

 注解式控制器运行流程及处理器定义 第六章 注解式控制器详解——跟着开涛学SpringMVC

 

  • 大小: 9.8 KB
  • 大小: 13.9 KB
  • 大小: 12.2 KB
  • 大小: 26.1 KB
  • 大小: 39.3 KB
  • 大小: 48.7 KB
  • 大小: 12.5 KB
  • 大小: 9.5 KB
  • 大小: 12.2 KB
  • 大小: 62.8 KB
129
12
分享到:
评论
11 楼 jinnianshilongnian 2012-09-30  
downpour 写道
我看了所有的文章,虽属原创,但是借鉴的成分偏多,过于缺乏自己的理性分析。我认为这样的文章毫无创新性可言,不过是这里借鉴一下那里借鉴一下然后排个版。

谢谢批评,这一系列确实是照着reference和源码对照写的,而且主要目的是配合自己学习且并没有深入讲究内部架构 。内功还浅,希望以后不写类似的文章,多写自己的体会。我再接再厉。
很期待你的springmvc大作。
10 楼 downpour 2012-09-30  
我看了所有的文章,虽属原创,但是借鉴的成分偏多,过于缺乏自己的理性分析。我认为这样的文章毫无创新性可言,不过是这里借鉴一下那里借鉴一下然后排个版。
9 楼 jbpm 2012-09-28  
很不错的
8 楼 jinnianshilongnian 2012-09-26  
nfoliver 写道
感谢你的付出,希望大家都能从中获益,取得进步!

谢谢
7 楼 nfoliver 2012-09-26  
感谢你的付出,希望大家都能从中获益,取得进步!
6 楼 jinnianshilongnian 2012-09-25  
yu_duo 写道
期望自己成长到你这么厉害~

我不是很厉害    加油即可
5 楼 yu_duo 2012-09-25  
期望自己成长到你这么厉害~
4 楼 jinnianshilongnian 2012-09-25  
温柔的羊 写道
看完之后,颇有收获!
现在有两个疑问:
1、怎样设计出比较合理、清晰的URI? 可以参考restful思想

2、我设计了几个如下的URI,这几个URI可能都对应controller中一个方法,该怎么获取参数?
   比如:
    通过用户所在部门ID查询用户
    URI: user/query/deptId
    通过用户姓名和用户所在部门ID查询用户
    URI:user/query/deptId/userName
   也就是说 “user/query/”后面的参数是变化的。


    1、正则表达式是可以的  但不建议使用,太复杂;
    2、这种查询可以考虑 user/query/{deptId}-{userName}-……  没有的可以空着 你可以看一下很多网站都是这么做的
3 楼 温柔的羊 2012-09-25  
看完之后,颇有收获!
现在有两个疑问:
1、怎样设计出比较合理、清晰的URI?
2、我设计了几个如下的URI,这几个URI可能都对应controller中一个方法,该怎么获取参数?
   比如:
    通过用户所在部门ID查询用户
    URI: user/query/deptId
    通过用户姓名和用户所在部门ID查询用户
    URI:user/query/deptId/userName
   也就是说 “user/query/”后面的参数是变化的。
2 楼 jinnianshilongnian 2012-09-24  
vision2000 写道
写的非常棒!mvc3这个URL映射功能强大的同时给团队会造成一些管理成本,太灵活团队成员会根据自己的喜好来选择匹配模式,从而引发混乱,降低可维护性,当然这点可以通过开发规范来约束.

同时我一直有个疑惑,如果把这些url都通过注解到类里,当系统非常庞大的时候要寻找这些url的关系是不是非常不方便? 比如突然接手一个业务以及系统设计陌生的系统,寻找这些URL会不会很痛苦,因为光靠规范来约束还是不够的,因为技术允许那样做,技术经理不会每个url都会去审查

1、一般都会设置前缀的 如user/add
2、代码要规范 如包名类名  和 url之间是有关系的 如UserController 的url前缀为/user
3、你试试 spring source tools
4、即springmvc提供的这些映射文武双全,其实符合80/20  在大多数场景下尽量简单,
1 楼 vision2000 2012-09-24  
写的非常棒!mvc3这个URL映射功能强大的同时给团队会造成一些管理成本,太灵活团队成员会根据自己的喜好来选择匹配模式,从而引发混乱,降低可维护性,当然这点可以通过开发规范来约束.

同时我一直有个疑惑,如果把这些url都通过注解到类里,当系统非常庞大的时候要寻找这些url的关系是不是非常不方便? 比如突然接手一个业务以及系统设计陌生的系统,寻找这些URL会不会很痛苦,因为光靠规范来约束还是不够的,因为技术允许那样做,技术经理不会每个url都会去审查

相关推荐

    SpringMVC教程

    第六章 注解式控制器详解2(SpringMVC3强大的请求映射规则详解).pdf 第六章 注解式控制器详解3(生产者、消费者请求限定).pdf 第六章 注解式控制器详解4(SpringMVC强大的数据绑定1).pdf 第六章 注解式控制器详解5...

    源代码下载 第六章 注解式控制器详解

    标题中的“源代码下载 第六章 注解式控制器详解”表明了我们即将探讨的是关于Spring MVC框架中的注解式控制器的深入理解,并且提供了一套相关的源代码供学习和参考。这一章节通常会涵盖如何使用注解来实现Web应用...

    springmvc常用注解标签详解

    在 SpringMVC 框架中,注解标签扮演着非常重要的角色,它们使得开发者可以轻松地定义控制器、请求映射、依赖注入等内容。在本文中,我们将详细地解释 SpringMVC 中常用的注解标签,包括@Controller、@RequestMapping...

    SpringMvc教程 跟着我学SpringMVC

    控制器是处理请求的核心组件,SpringMVC支持多种形式的控制器,包括简单控制器、映射控制器和注解控制器。这部分将详细解释不同控制器的工作原理和使用场景,帮助开发者选择合适的控制器来实现业务逻辑。 随后,...

    SpringMVC详解

    从Spring 3.0开始,SpringMVC引入了注解式编程,使得开发者可以直接在方法上使用@RequestMapping等注解来定义请求映射,极大地简化了配置。此外,还可以使用@ModelAttribute、@RequestParam、@PathVariable等注解来...

    跟我学SpringMVC 教程

    第六章注解式控制器详解深入探讨了SpringMVC提供的注解式控制器。注解式控制器通过使用各种注解(如@Controller、@RequestMapping等)使得控制器的实现更为简洁和直观。本章不仅解析了注解式控制器的运行流程,还...

    SpringMvc注解详解

    【SpringMvc注解详解】 SpringMvc 是 Spring 框架的一部分,主要负责处理 Web 请求。在 SpringMVC 中,注解扮演着至关重要的角色,它们简化了代码并减少了配置。以下是一些常用的 SpringMVC 注解及其详细解释: 1....

    SpringMVC注解开发的详解.doc

    SpringMVC注解开发是Java Web开发中一种高效的方式,它极大地简化了控制器的定义和请求处理。在SpringMVC框架中,`@Controller`注解用于标识一个类作为处理HTTP请求的控制器。这个注解使得类中的方法可以被SpringMVC...

    跟我学SpringMVC

    - **请求映射**:包括URL路径映射、请求方法映射限定、强大的请求映射规则。 - **数据绑定**:强大的数据绑定机制。 - **数据类型转换**:如何进行数据类型转换。 - **数据格式化**:如何对数据进行格式化。 - ...

    SpringMVC 常用注解类视频详解

    在Spring MVC框架中,注解是实现控制器、数据绑定、模型映射等核心功能的关键元素。这些注解简化了代码,使得开发更加高效且易于维护。以下是对Spring MVC常用注解的详细解释: 1. `@Controller`:这是定义一个类...

    跟开涛学SpringMVC(4.6)Controller接

    在本课程"跟开涛学SpringMVC(4.6)Controller接...在学习过程中,结合"跟开涛学SpringMVC(4.6)Controller接口控制器详解(6)Java开发Java经验技巧共10页.pdf"这份资料,你将能深入理解并掌握SpringMVC的核心概念。

    springmvc3+spring+mybatis3整合项目 注解实现

    这个整合项目是基于Spring 3.0.5、Spring MVC 3和MyBatis 3.0.2版本,采用注解方式进行配置,简化了XML配置文件,提高了开发效率。 Spring MVC是Spring框架的一部分,主要负责Web请求的处理。在本项目中,通过注解...

    SpringMVC+Mysql实例详解

    @RequestMapping注解用于将URL请求映射到特定的方法,@RequestParam用于获取请求参数,@PathVariable用于处理URL模板变量。此外,@Autowired可以实现依赖注入,简化对象的创建和管理。 在SpringMVC与MySQL数据库...

    springMVC详解以及注解说明

    3. **处理请求**:HandlerMapping根据请求映射到对应的控制器(Controller),并执行相应的方法。 4. **渲染结果**:控制器处理完请求后,返回一个ModelAndView对象,包含数据模型和视图名。 5. **视图解析**:...

    跟开涛学SpringMVC(4.3)Controller接

    《跟开涛学SpringMVC(4.3)Controller接口控制器详解》是针对Java开发者的一份深入学习资料,主要探讨了SpringMVC框架中的Controller组件。SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求和响应。...

Global site tag (gtag.js) - Google Analytics