- 浏览: 329017 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (186)
- nginx/apache (17)
- mysql / mycat 数据库 (13)
- tomcat/jdk部署相关 (15)
- java/开源框架 (28)
- spring(cloud)集成应用 (12)
- docker/kubernetes (9)
- centos/linux/ubuntu相关 (26)
- Rubygem/ruby/rails (1)
- dubbox/微服务相关 (1)
- 移动(前)端 (1)
- 开发(版本)环境工具 (23)
- 消息中间件 (3)
- Nosql (15)
- 全文检索/ELK (9)
- 牛人博客杂烩 (6)
- 文件系统相关 (5)
- 前端开发 (6)
- go体系相关 (4)
- 运维中间件配置安装 (4)
- 大数据/python (0)
最新评论
-
bo_hai:
感谢。总结的真好。
mongodb 配置
@Controller
标注在Bean的类定义处
@RequestMapping
真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping 这个注解
@RequestMapping 可以标注在类定义处,将 Controller 和特定请求关联起来;
还可以标注在方法签名处,以便进一步对请求进行分流
配套的属性有:
value 需要跳转的地址
method 基于RestFul的跳转参数,有RequestMethod.get post put delete等
params 符合某个参数的时候才调用该方法
Headers 符合头信息的时候才调用
@SessionAttributes
将结果放入session内
@ModelAttribute
存储在响应内容ModelMap或者ModelAndView进行保存值传到前台,当如果你需要保存值比较少
的时候可以采用这种方式进行保存值并且保存到前台显示
在默认情况下,ModelMap 中的属性作用域是 request 级别,相当于HttpServletRequest中的request.setAttribute() 一样, 在 JSP 视图页面中通过 request.getAttribute(“attribute name”) 或者通过
${ attribute name } EL 表达式访问模型对象中的 属性对象
如果希望在ModelMap 的作用域范围为 session,可以有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性。这一功能是通过类定义处标注 @SessionAttributes 注解来实现 如:
@Controller
@RequestMapping("/login.do")
@SessionAttributes("currUser")
public class BbtForumController {。。。。。}
@ResponseBody
标注后 返回String对象的结果为response内容体,不标注的话 作为dispatcher url使用
@PathVariable
允许将请求路径的制定内容当做求情的参数使用
返回类型
请求处理方法入参的可选类型 说明
void 此时逻辑视图名由请求处理方法对应的 URL 确定,如以下的方法:
@RequestMapping("/welcome.do")
public void welcomeHandler() {
}
对应的逻辑视图名为“welcome”
String 此时逻辑视图名为返回的字符,如以下的方法:
@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestParam("ownerId") int ownerId, ModelMap model) {
Owner owner = this.clinic.loadOwner(ownerId);
model.addAttribute(owner);
return "ownerForm";
}
对应的逻辑视图名为“ownerForm”
ModelMap 和返回类型为 void 一样,逻辑视图名取决于对应请求的 URL,
如下面的例子:
@RequestMapping("/vets.do")
public ModelMap vetsHandler() {
return new ModelMap(this.clinic.getVets());
}
对应的逻辑视图名为“vets”,返回的 ModelMap 将被作为请求对应的模型对象,
可以在 JSP 视图页面中访问到。
ModelAndView
返回方式
1 使用无返回方法跳转,如果使用返回方法进行跳转的话,则会通过视图解析器进行以
prefix(前缀)+方法名+suffix(后缀)组成的页面文件名称.
2 使用一个返回的字符串方法作为跳转,使用字符串跳转的话好处就是在return的时候可
以自己指定返回的名字,JSP组成是prefix(前缀)+返回的字符串+suffix(后缀)
3 返回一个ModelAndView类型,使用setViewName方法则可以跳转到指定的页面.
路径匹配形式
1、单一Controller 对应 单一的请求路径
2、单一Controller 对应多个请求路径
3、单一Controller 对应多个请求路径,且路径内可以含有参数的形式
Demo code and UseCase
@Controller
@RequestMapping("/login.do")
public class SinglePathWithController {}
@Controller
@SessionAttributes(types = {UserBean.class,String.class},value={"currentUser","message"})
public class AdapterMultiPathController {}
@Controller
@RequestMapping(value = "/rest")
public class RestWithController {}
无返回
//无返回值 无参数返回的是根据 prefix前缀+@RequestMapping value +suffix
后缀组成
@RequestMapping("/springmvc/common")
public voidnovoid(HttpServletRequest request) {
request.setAttribute("message", "novoid方法被调用");
}
返回字符串
1、 作为视图路径方式
//根据路径直接匹配
@RequestMapping("/springmvc/multiReqPath1.do")
public String multiReqPath1(HttpServletRequest request){
request.setAttribute("message", "multiReqPath1方法被调用");
return "springmvc/common";
}
@RequestMapping("/springmvc/multiReqPath2.do")
public String multiReqPath2(HttpServletRequest request){
request.setAttribute("message", "multiReqPath2方法被调用");
return "/springmvc/common";
}
//根据参数匹配
@RequestMapping(params = "m=method1",method = RequestMethod.GET)
public String method1(){
return "login/success";
}
//有参数 参数名和请求url内的变量名一致
@RequestMapping(params = "m=method2")
public String method2(String name,String pwd){
return name;
}
//有参数 参数名和请求url内的变量名不一致
@RequestMapping(params = "m=method3",method = RequestMethod.GET)
public String method3(@RequestParam("loginName")String name,@RequestParam("loginPwd")String pwd,HttpServletRequest request){
request.setAttribute("message",(name + " " + pwd));
return "login/"+name;
}
2、 作为Response内容方式
//无参数
@ResponseBody
@RequestMapping(params = "m=method4")
public String method4(){
return "hello,guys";
}
//处理方法入参如何绑定 URL 参数
@ResponseBody
@RequestMapping(params = "m=method5",method = RequestMethod.GET)
public String method5(String name,String pwd,int delay){
return "name:"+name+","+"pwd:"+pwd+","+"delay:"+delay;
}
@ResponseBody
@RequestMapping(params = "m=method6",method = RequestMethod.GET)
public String method6(@RequestParam("userName")String name,DnTest test){
return "DnTest:"+test.toString();
}
URL 参数: userName参数将绑定到name上 其他与DnTest类内属性名称一致的参数将绑定到test的对应的属性上,如果参数不全 也不会报错
返回ModelAndView
@RequestMapping("/springmvc/modelAndView")
public ModelAndView modelAndView(){
ModelAndView mav = new ModelAndView();
mav.setViewName("/springmvc/common");
mav.addObject("message", "modelAndView 方法被调用");
return mav;
}
返回ModelMap
@RequestMapping("/springmvc/modelMap")
public ModelMap modelMap(ModelMap modMap){
List<String> names = new ArrayList<String>();
names.add("Rick");
names.add("Austin");
modMap.put("names", names);
modMap.put("message", "hello guys");
modMap.put("comment", "hello guys");
return modMap;
}
返回ModelMap
@RequestMapping("/springmvc/modelMap")
public ModelMap modelAndView(ModelMap modMap){
List<String> names = new ArrayList<String>();
names.add("Rick");
names.add("Austin");
modMap.put("hello", "hello guys");
modMap.put("names", names);
return modMap;
}
@SessionAttribute & ModMap
//注解方式
@Controller
@SessionAttributes(types = {UserBean.class,String.class},value={"currentUser","message"})
public class AdapterMultiPathController {}
//方法体
@RequestMapping("/springmvc/modelMap2")
public ModelMap modelMapWithSession(ModelMap modMap,HttpServletRequest request){
List<String> names = new ArrayList<String>();
names.add("Rick");
names.add("Austin");
modMap.put("names",names);
modMap.put("message", "hello guys");
modMap.put("comment", "hello guys");
UserBean user = new UserBean();
user.setName("Rick");
user.setMobile("18938900256");
user.setTelephone(request.getParameter("userPhone"));
user.setNumber(request.getParameter("userNumber"));
modMap.put("currentUser", user);
return modMap;
}
//初次请求
spring mvc & reverse ajax
@ResponseBody
@RequestMapping(params = "m=method7",method = RequestMethod.GET)
public String method7(String name,String pwd,int delay,HttpServletRequest req){
req.startAsync();
Date startTime = new Date();
try {
Thread.currentThread().sleep(delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
Date entTime = new Date();
return "name:"+name+","+"pwd:"+pwd+","+"delay:"+delay+",startTime:"+
DateUtils.formatDate(startTime, "yyyy-MM-dd HH:mm:ss:SSS")+",endTime:"+
DateUtils.formatDate(entTime, "yyyy-MM-dd HH:mm:ss:SSS");
}
RestFull
@Controller
@RequestMapping(value = "/rest")
public class RestWithController {}
@ResponseBody
@RequestMapping(value = "/{msg}", method = RequestMethod.GET)
public String restString(@PathVariable String msg) {
return msg;
}
@ResponseBody
@RequestMapping(value = "/{path}/{value}", method = RequestMethod.GET)
public String restXml(@PathVariable String path,@PathVariable String value) {
return "path:"+path+",value:"+value;
}
@ResponseBody
@RequestMapping(value = "/xml/{filename}", method = RequestMethod.GET)
public String restFile(@PathVariable String filename) {
if (filename!=null) {
ProjectInits init = ProjectInits.getInstance();
String dir = init.get("resource.dir", "C:/Projects/VoyagerWeb/resources");
FileUtility fUtil = new FileUtility();
String content = fUtil.readFile(dir+"/"+filename+".xml");
return content;
}
else
return "Invalid xml file name ["+filename+"]";
}
验证 是否支持Overload
方式一
//验证 是否支持Overload
@ResponseBody
@RequestMapping(value = "/validate/overload1", method = RequestMethod.GET)
public String overloadMethod(String name){
return name;
}
@ResponseBody
@RequestMapping(value = "/validate/overload2", method = RequestMethod.GET)
public String overloadMethod(String name,DnTest test){
return "DnTest:"+test.toString();
}
方式二
/验证 是否支持Overload
@ResponseBody
@RequestMapping(params = "m=method11")
public String method11(String name){
return name;
}
@ResponseBody
@RequestMapping(params = "m=method11")
public String method11(int age,DnTest test){
return "DnTest:"+test.toString();
}
标注在Bean的类定义处
@RequestMapping
真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping 这个注解
@RequestMapping 可以标注在类定义处,将 Controller 和特定请求关联起来;
还可以标注在方法签名处,以便进一步对请求进行分流
配套的属性有:
value 需要跳转的地址
method 基于RestFul的跳转参数,有RequestMethod.get post put delete等
params 符合某个参数的时候才调用该方法
Headers 符合头信息的时候才调用
@SessionAttributes
将结果放入session内
@ModelAttribute
存储在响应内容ModelMap或者ModelAndView进行保存值传到前台,当如果你需要保存值比较少
的时候可以采用这种方式进行保存值并且保存到前台显示
在默认情况下,ModelMap 中的属性作用域是 request 级别,相当于HttpServletRequest中的request.setAttribute() 一样, 在 JSP 视图页面中通过 request.getAttribute(“attribute name”) 或者通过
${ attribute name } EL 表达式访问模型对象中的 属性对象
如果希望在ModelMap 的作用域范围为 session,可以有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性。这一功能是通过类定义处标注 @SessionAttributes 注解来实现 如:
@Controller
@RequestMapping("/login.do")
@SessionAttributes("currUser")
public class BbtForumController {。。。。。}
@ResponseBody
标注后 返回String对象的结果为response内容体,不标注的话 作为dispatcher url使用
@PathVariable
允许将请求路径的制定内容当做求情的参数使用
返回类型
请求处理方法入参的可选类型 说明
void 此时逻辑视图名由请求处理方法对应的 URL 确定,如以下的方法:
@RequestMapping("/welcome.do")
public void welcomeHandler() {
}
对应的逻辑视图名为“welcome”
String 此时逻辑视图名为返回的字符,如以下的方法:
@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestParam("ownerId") int ownerId, ModelMap model) {
Owner owner = this.clinic.loadOwner(ownerId);
model.addAttribute(owner);
return "ownerForm";
}
对应的逻辑视图名为“ownerForm”
ModelMap 和返回类型为 void 一样,逻辑视图名取决于对应请求的 URL,
如下面的例子:
@RequestMapping("/vets.do")
public ModelMap vetsHandler() {
return new ModelMap(this.clinic.getVets());
}
对应的逻辑视图名为“vets”,返回的 ModelMap 将被作为请求对应的模型对象,
可以在 JSP 视图页面中访问到。
ModelAndView
返回方式
1 使用无返回方法跳转,如果使用返回方法进行跳转的话,则会通过视图解析器进行以
prefix(前缀)+方法名+suffix(后缀)组成的页面文件名称.
2 使用一个返回的字符串方法作为跳转,使用字符串跳转的话好处就是在return的时候可
以自己指定返回的名字,JSP组成是prefix(前缀)+返回的字符串+suffix(后缀)
3 返回一个ModelAndView类型,使用setViewName方法则可以跳转到指定的页面.
路径匹配形式
1、单一Controller 对应 单一的请求路径
2、单一Controller 对应多个请求路径
3、单一Controller 对应多个请求路径,且路径内可以含有参数的形式
Demo code and UseCase
@Controller
@RequestMapping("/login.do")
public class SinglePathWithController {}
@Controller
@SessionAttributes(types = {UserBean.class,String.class},value={"currentUser","message"})
public class AdapterMultiPathController {}
@Controller
@RequestMapping(value = "/rest")
public class RestWithController {}
无返回
//无返回值 无参数返回的是根据 prefix前缀+@RequestMapping value +suffix
后缀组成
@RequestMapping("/springmvc/common")
public voidnovoid(HttpServletRequest request) {
request.setAttribute("message", "novoid方法被调用");
}
返回字符串
1、 作为视图路径方式
//根据路径直接匹配
@RequestMapping("/springmvc/multiReqPath1.do")
public String multiReqPath1(HttpServletRequest request){
request.setAttribute("message", "multiReqPath1方法被调用");
return "springmvc/common";
}
@RequestMapping("/springmvc/multiReqPath2.do")
public String multiReqPath2(HttpServletRequest request){
request.setAttribute("message", "multiReqPath2方法被调用");
return "/springmvc/common";
}
//根据参数匹配
@RequestMapping(params = "m=method1",method = RequestMethod.GET)
public String method1(){
return "login/success";
}
//有参数 参数名和请求url内的变量名一致
@RequestMapping(params = "m=method2")
public String method2(String name,String pwd){
return name;
}
//有参数 参数名和请求url内的变量名不一致
@RequestMapping(params = "m=method3",method = RequestMethod.GET)
public String method3(@RequestParam("loginName")String name,@RequestParam("loginPwd")String pwd,HttpServletRequest request){
request.setAttribute("message",(name + " " + pwd));
return "login/"+name;
}
2、 作为Response内容方式
//无参数
@ResponseBody
@RequestMapping(params = "m=method4")
public String method4(){
return "hello,guys";
}
//处理方法入参如何绑定 URL 参数
@ResponseBody
@RequestMapping(params = "m=method5",method = RequestMethod.GET)
public String method5(String name,String pwd,int delay){
return "name:"+name+","+"pwd:"+pwd+","+"delay:"+delay;
}
@ResponseBody
@RequestMapping(params = "m=method6",method = RequestMethod.GET)
public String method6(@RequestParam("userName")String name,DnTest test){
return "DnTest:"+test.toString();
}
URL 参数: userName参数将绑定到name上 其他与DnTest类内属性名称一致的参数将绑定到test的对应的属性上,如果参数不全 也不会报错
返回ModelAndView
@RequestMapping("/springmvc/modelAndView")
public ModelAndView modelAndView(){
ModelAndView mav = new ModelAndView();
mav.setViewName("/springmvc/common");
mav.addObject("message", "modelAndView 方法被调用");
return mav;
}
返回ModelMap
@RequestMapping("/springmvc/modelMap")
public ModelMap modelMap(ModelMap modMap){
List<String> names = new ArrayList<String>();
names.add("Rick");
names.add("Austin");
modMap.put("names", names);
modMap.put("message", "hello guys");
modMap.put("comment", "hello guys");
return modMap;
}
返回ModelMap
@RequestMapping("/springmvc/modelMap")
public ModelMap modelAndView(ModelMap modMap){
List<String> names = new ArrayList<String>();
names.add("Rick");
names.add("Austin");
modMap.put("hello", "hello guys");
modMap.put("names", names);
return modMap;
}
@SessionAttribute & ModMap
//注解方式
@Controller
@SessionAttributes(types = {UserBean.class,String.class},value={"currentUser","message"})
public class AdapterMultiPathController {}
//方法体
@RequestMapping("/springmvc/modelMap2")
public ModelMap modelMapWithSession(ModelMap modMap,HttpServletRequest request){
List<String> names = new ArrayList<String>();
names.add("Rick");
names.add("Austin");
modMap.put("names",names);
modMap.put("message", "hello guys");
modMap.put("comment", "hello guys");
UserBean user = new UserBean();
user.setName("Rick");
user.setMobile("18938900256");
user.setTelephone(request.getParameter("userPhone"));
user.setNumber(request.getParameter("userNumber"));
modMap.put("currentUser", user);
return modMap;
}
//初次请求
spring mvc & reverse ajax
@ResponseBody
@RequestMapping(params = "m=method7",method = RequestMethod.GET)
public String method7(String name,String pwd,int delay,HttpServletRequest req){
req.startAsync();
Date startTime = new Date();
try {
Thread.currentThread().sleep(delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
Date entTime = new Date();
return "name:"+name+","+"pwd:"+pwd+","+"delay:"+delay+",startTime:"+
DateUtils.formatDate(startTime, "yyyy-MM-dd HH:mm:ss:SSS")+",endTime:"+
DateUtils.formatDate(entTime, "yyyy-MM-dd HH:mm:ss:SSS");
}
RestFull
@Controller
@RequestMapping(value = "/rest")
public class RestWithController {}
@ResponseBody
@RequestMapping(value = "/{msg}", method = RequestMethod.GET)
public String restString(@PathVariable String msg) {
return msg;
}
@ResponseBody
@RequestMapping(value = "/{path}/{value}", method = RequestMethod.GET)
public String restXml(@PathVariable String path,@PathVariable String value) {
return "path:"+path+",value:"+value;
}
@ResponseBody
@RequestMapping(value = "/xml/{filename}", method = RequestMethod.GET)
public String restFile(@PathVariable String filename) {
if (filename!=null) {
ProjectInits init = ProjectInits.getInstance();
String dir = init.get("resource.dir", "C:/Projects/VoyagerWeb/resources");
FileUtility fUtil = new FileUtility();
String content = fUtil.readFile(dir+"/"+filename+".xml");
return content;
}
else
return "Invalid xml file name ["+filename+"]";
}
验证 是否支持Overload
方式一
//验证 是否支持Overload
@ResponseBody
@RequestMapping(value = "/validate/overload1", method = RequestMethod.GET)
public String overloadMethod(String name){
return name;
}
@ResponseBody
@RequestMapping(value = "/validate/overload2", method = RequestMethod.GET)
public String overloadMethod(String name,DnTest test){
return "DnTest:"+test.toString();
}
方式二
/验证 是否支持Overload
@ResponseBody
@RequestMapping(params = "m=method11")
public String method11(String name){
return name;
}
@ResponseBody
@RequestMapping(params = "m=method11")
public String method11(int age,DnTest test){
return "DnTest:"+test.toString();
}
发表评论
-
springCloud相关
2017-06-09 11:01 1177http://www.cnblogs.com/skyblo ... -
Spring相关文件收录
2017-02-17 15:39 315http://blog.csdn.net/ufo291062 ... -
shiro 集成相关说明
2016-12-09 09:29 1063最近,将一个单一的maven项目拆分为多maven模 ... -
spring boot 系列
2016-12-06 18:03 4981、spring boot 系列教程 http://bl ... -
spring的Scheduled(定时任务)和多线程
2016-07-30 15:16 1714spring的Scheduled(定时任务)和多线程 ... -
Spring 事务机制详解
2016-06-03 08:57 1154原文:http://mp.weixin.qq.c ... -
深入分析Spring 与 Spring MVC容器
2016-05-31 12:58 1491原文: http://mp.weixin ... -
Spring集成Quartz定时任务
2016-01-26 12:04 1431原文:http://stevex.blog.51cto.co ... -
spring 多数据源的配置
2015-04-01 11:18 708参考:http://blog.csdn.net/wangp ... -
深入浅出学Spring Data JPA
2014-11-07 09:41 1158原文:http://sishuok.com/forum/ ... -
10分钟教会你Apache Shiro
2014-09-28 21:00 924参考:http://www.cnblogs.com/ibo ...
相关推荐
springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器、视图解析器 3. springmvc入门程序 目的:对前端控制器、处理器映射器、处理器...
在Spring Boot和Spring MVC的开发中,自定义注解是一种常用的技术手段,它能帮助我们实现高度可重用和模块化的代码。本示例聚焦于如何通过自定义注解来获取用户登录信息,以增强应用的安全性和用户体验。下面将详细...
在 Spring MVC 中,注解开发是常用的方式,例如 @RequestMapping 用于映射请求,@RequestParam 用于绑定请求参数,@ModelAttribute 可以用来绑定整个 POJO 对象。此外,还可以自定义参数绑定逻辑,增强框架的功能。 ...
在描述中提到的“常用jar包”,通常包括Spring MVC的核心库,如`spring-webmvc.jar`,以及Spring框架的其他核心组件,如`spring-context.jar`、`spring-beans.jar`、`spring-aop.jar`等。这些jar包包含了Spring MVC...
#### 六、SpringMVC_5_常用注解 - **`@Controller`注解**: - 作用:用于标记一个类为控制器。 - 使用场景:当一个类主要负责处理HTTP请求时,应该使用此注解。 - 特点:被标记的类会被Spring容器识别并管理。 ...
* 由程序员编写,常用注解开发方式 * 返回值可以是 ModelAndView、String 或 void View Resolver 视图解析器 * 根据逻辑视图名生成真正的视图 * 在 SpringMVC 中使用 View 对象表示 View 视图 * jsp 页面,仅...
1. **常用注解**:如`@Controller`、`@RequestMapping`等,用于标记控制器类和方法。 2. **参数绑定**:SpringMVC支持多种类型的参数绑定,包括简单类型、POJO(Plain Old Java Object)、集合类型等。 3. **自定义...
下面是SpringMVC的笔记,涵盖了SpringMVC的基础知识、配置、开发步骤、控制器、注解、类型转换等方面的内容。 Model1与Model2模型 在SpringMVC中,Model1和Model2是两种不同的模型。Model1是传统的MVC模式,...
##### 4.1 常用注解 - `@RequestMapping`:用于映射URL路径。 - `@RequestParam`:用于获取请求参数。 - `@PathVariable`:用于从URL中获取动态值。 - `@ModelAttribute`:用于封装表单提交的数据到对象中。 - `@...
### SpringMVC基础知识点详解 #### 一、SpringMVC概述 SpringMVC是一个轻量级的MVC框架,主要用于构建Web应用程序中的表现层。它遵循Model-View-Controller(模型-视图-控制器)的设计模式,使得业务逻辑、用户界面...
### SpringMVC基础知识详解 #### 一、SpringMVC简介 **SpringMVC**是Spring框架中的一个重要组成部分,主要用于Web应用程序的开发。它遵循MVC(Model-View-Controller)设计模式,帮助开发者构建清晰、可维护的Web...
Spring MVC是Spring框架的一个核心模块,...尽管现在已经有更新的版本,但这个版本仍具有广泛的适用性和稳定性,是许多项目的基础组件。在使用过程中,了解并熟练掌握这些概念和技术,将有助于构建高质量的Web应用。
综上所述,SpringMVC的学习路线涵盖了从基础到高级的多个方面,包括框架使用、代码实践、架构理解、组件整合、参数绑定、注解使用、异常处理、数据交互、Restful实现以及拦截器开发等多个知识点,为Java后台开发者...
- SpringMVC支持使用注解如`@RequestParam`,`@PathVariable`等进行参数绑定,方便从请求中获取数据。 - `@ModelAttribute`用于在方法参数中获取或填充模型数据。 4. **异常处理**: - 可以通过`@...
- 常用注解如@Controller、@RequestMapping、@RequestParam、@PathVariable等,简化代码并增强可读性。 - 参数绑定包括简单类型、POJO、集合类型的绑定,以及自定义参数绑定。 6. **SpringMVC与Struts2的区别** ...
### SpringMVC基础知识详解 #### 一、SpringMVC概览 **SpringMVC**是Spring框架中的一个重要组成部分,主要用于构建Web应用程序。它遵循MVC(Model-View-Controller)设计模式,帮助开发者构建出清晰分层的应用架构...
SpringMVC作为Spring框架中用于构建Web应用程序的一个模块,其核心是基于MVC设计模式的。MVC模式将应用程序分为三个核心组件:模型(Model)、视图...这些知识点构成了SpringMVC的基础,是学习SpringMVC框架的必经之路。
SpringMVC_5_常用注解 SpringMVC_6_数据校验 SpringMVC_7_国际化 SpringMVC_8_标签库 SpringMVC_9_文件上传 struts2_1_入门介绍 struts2_10_转换器 struts2_11_插件 struts2_2_Action详解 struts2_3_配置参数详解
### SpringMVC基础知识详解 #### 一、SpringMVC简介 SpringMVC是Spring框架的一个模块,用于构建Web应用程序。它遵循MVC设计模式,帮助开发者实现清晰的分层架构,便于维护和扩展。 #### 二、基于注解的控制器 ...