- 浏览: 28930 次
文章分类
最新评论
常用注解元素
@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 此时逻辑视图名为返回的字符,如以下的方法:
对应的逻辑视图名为“ownerForm”
ModelMap 和返回类型为 void 一样,逻辑视图名取决于对应请求的 URL,
如下面的例子:
对应的逻辑视图名为“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
无返回
//无返回值 无参数返回的是根据 prefix前缀+@RequestMapping value +suffix
后缀组成
返回字符串
1、 作为视图路径方式
//根据路径直接匹配
//根据参数匹配
//有参数 参数名和请求url内的变量名一致
//有参数 参数名和请求url内的变量名不一致
2、 作为Response内容方式
//无参数
//处理方法入参如何绑定 URL 参数
URL 参数: userName参数将绑定到name上 其他与DnTest类内属性名称一致的参数将绑定到test的对应的属性上,如果参数不全 也不会报错
返回ModelAndView
//初次请求
验证 是否支持Overload
方式一
//验证 是否支持Overload
方式二
/验证 是否支持Overload
@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(); }
相关推荐
springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器、视图解析器 3. springmvc入门程序 目的:对前端控制器、处理器映射器、处理器...
在 Spring MVC 中,注解开发是常用的方式,例如 @RequestMapping 用于映射请求,@RequestParam 用于绑定请求参数,@ModelAttribute 可以用来绑定整个 POJO 对象。此外,还可以自定义参数绑定逻辑,增强框架的功能。 ...
### SpringMVC基础知识详解 #### 一、SpringMVC概览 **SpringMVC**是Spring框架中的一个重要组成部分,主要用于构建Web应用程序。它遵循MVC(Model-View-Controller)设计模式,帮助开发者构建出清晰、可维护的Web...
### SpringMVC基础知识详解 #### 一、SpringMVC简介 **SpringMVC**是Spring框架中的一个重要组成部分,主要用于Web应用程序的开发。它遵循MVC(Model-View-Controller)设计模式,帮助开发者构建清晰、可维护的Web...
Spring MVC是Spring框架的一个核心模块,...尽管现在已经有更新的版本,但这个版本仍具有广泛的适用性和稳定性,是许多项目的基础组件。在使用过程中,了解并熟练掌握这些概念和技术,将有助于构建高质量的Web应用。
综上所述,SpringMVC的学习路线涵盖了从基础到高级的多个方面,包括框架使用、代码实践、架构理解、组件整合、参数绑定、注解使用、异常处理、数据交互、Restful实现以及拦截器开发等多个知识点,为Java后台开发者...
#### 一、SpringMVC基础知识 ##### 1.1 什么是SpringMVC? SpringMVC是Spring框架的一部分,主要用于构建Web应用程序。它遵循了MVC(Model-View-Controller)设计模式,提供了一个清晰的架构来分离业务逻辑、用户...
### SpringMVC基础知识点详解 #### 一、SpringMVC概述 SpringMVC是一个轻量级的MVC框架,主要用于构建Web应用程序中的表现层。它遵循Model-View-Controller(模型-视图-控制器)的设计模式,使得业务逻辑、用户界面...
【SpringMVC基础概念】 ...通过这些基础知识的学习,你可以理解SpringMVC的核心概念,为后续的高级应用,如集合类型参数绑定、数据回显、文件上传、JSON交互、RESTful支持和拦截器的使用奠定坚实的基础。
### SpringMVC基础知识详解 #### 一、SpringMVC概览 **SpringMVC**是Spring框架中的一个重要组成部分,主要用于构建Web应用程序。它遵循MVC(Model-View-Controller)设计模式,帮助开发者构建出清晰分层的应用架构...
综上所述,这份学习资料全面覆盖了SpringMvc的基础知识、实战技巧和相关工具的使用,是学习和提升SpringMvc技能的宝贵资源。通过阅读文档、分析源码并动手实践,学习者能够有效地掌握SpringMvc,并具备开发高效、可...
下面是SpringMVC的笔记,涵盖了SpringMVC的基础知识、配置、开发步骤、控制器、注解、类型转换等方面的内容。 Model1与Model2模型 在SpringMVC中,Model1和Model2是两种不同的模型。Model1是传统的MVC模式,...
### Struts2与SpringMVC知识点详解 #### Struts2简介 Struts2是一个用于构建企业级Java Web应用的强大框架,它遵循MVC(Model-View-Controller)设计模式,旨在简化Web应用的开发和维护过程。Struts2的核心优势在于...
综上所述,"springmvc3"这个主题涵盖了Spring MVC 3.0.2版本的众多核心概念和技术,包括依赖注入、注解驱动、拦截器、AOP、数据绑定以及与其他框架如Hibernate的集成等。这个压缩包可能包含了运行一个基于Spring MVC...
以上就是关于SpringMVC入门实例的基础知识,包括SpringMVC的架构、搭建步骤、核心组件以及常用注解。通过实践这些知识点,你可以快速上手SpringMVC,构建出功能完备的Web应用程序。提供的jar和项目源码可以帮助你更...
IDEA是Java开发者常用的集成开发环境,提供了丰富的功能,如代码自动完成、重构工具、版本控制集成等,对于Spring开发者来说,它有专门的Spring插件支持,能简化Spring应用的开发流程。 标签"idea_springmvc"进一步...
在Spring MVC框架中,处理JSON数据是Web应用开发中的常见任务。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它...通过理解这些基础知识,开发者可以有效地在Spring MVC应用中进行JSON数据的交互。
SpringMVC作为Spring框架中用于构建Web应用程序的一个模块,其核心是基于MVC设计模式的。MVC模式将应用程序分为三个核心组件:模型(Model)、视图...这些知识点构成了SpringMVC的基础,是学习SpringMVC框架的必经之路。
SSM是Spring、SpringMVC和MyBatis的组合,是Java开发中常用的Web开发框架。Spring负责依赖注入和事务管理,SpringMVC处理HTTP请求,MyBatis则作为持久层框架,负责数据库操作。在这个项目中,SSM框架为大文件和多...
解压后大小(57.7M) 国内资深Web开发专家根据Spring MVC全新技术撰写,基于实际生产环境,从基础知识、源代码和实战3个维度对Spring MVC的结构和实现进行详细讲解 全面介绍Spring MVC的架构、原理、核心概念和操作...