本文内容包括: • 概述 • 一个简单的基于注解的 Controller • 清单 3. annomvc-servlet.xml • 让一个 Controller 处理多个 URL 请求 • 清单 3. 每个请求处理参数对应一个 URL • 处理方法入参如何绑定 URL 参数 • 清单 5. 按参数名匹配进行绑定 • 清单 8. 通过 @RequestParam 注解指定 • 清单 11. 使模型对象的特定属性具有 Session 范围的作用域 • 请求处理方法的签名规约 • 注册自己的属性编辑器 • 如何准备数据 • 小结 • 参考资料 ### Spring MVC注释文档知识点详解 #### 概述 随着技术的发展与演进,软件开发领域不断出现新的设计理念和技术框架。Spring MVC作为Spring框架的重要组成部分之一,在Spring 2.5版本中引入了基于注解的配置方式,这使得开发者能够更便捷地构建Web应用程序。相比于传统的基于XML的配置方式,基于注解的配置更加简洁、直观,同时也提高了开发效率。 #### 一个简单的基于注解的Controller 在Spring MVC中,通过使用注解,开发者可以轻松地将普通的Java类转化为Controller。例如,`@Controller`注解可以标记在一个类上,表示该类是一个Spring MVC的Controller组件;`@RequestMapping`注解则用于映射HTTP请求与处理方法之间的关系。下面是一个简单的基于注解的Controller示例: ```java @Controller @RequestMapping("/forum.do") public class BbtForumController { @Autowired private BbtForumService bbtForumService; @RequestMapping public String listAllBoard() { bbtForumService.getAllBoard(); System.out.println("call listAllBoard method."); return "listBoard"; } } ``` 在这个例子中,`BbtForumController`类被`@Controller`注解标记,表明它是一个Controller组件。`@RequestMapping("/forum.do")`注解则指定了这个Controller处理的URL路径。此外,`listAllBoard`方法也使用了`@RequestMapping`注解,这意味着它将处理由`/forum.do`路径触发的请求。 #### 清单 3. annomvc-servlet.xml 为了支持基于注解的配置,Spring MVC需要在web.xml中进行相应的配置,通常还需要一个额外的配置文件(如`annomvc-servlet.xml`),用于配置DispatcherServlet等组件。以下是一个示例: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 启用注解驱动 --> <mvc:annotation-driven/> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> </beans> ``` 这段配置启用了注解驱动,并配置了一个视图解析器。 #### 让一个Controller处理多个URL请求 除了使用`@RequestMapping`注解来指定一个Controller处理特定的URL外,还可以在同一Controller中定义多个方法,每个方法都使用`@RequestMapping`注解来处理不同的URL请求。例如: ```java @Controller @RequestMapping("/forum") public class BbtForumController { @Autowired private BbtForumService bbtForumService; @RequestMapping(value = "/list", method = RequestMethod.GET) public String listAllBoard() { //... } @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) public String detail(@PathVariable("id") Long id) { //... } } ``` 在这个例子中,`BbtForumController`中的两个方法分别处理了`/forum/list`和`/forum/detail/{id}`这两个URL请求。 #### 清单 3. 每个请求处理参数对应一个 URL 对于每个请求处理方法,可以通过URL中的参数传递信息。例如,可以使用`@PathVariable`注解来获取URL路径中的变量值: ```java @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) public String detail(@PathVariable("id") Long id) { //... } ``` 这里,`{id}`是一个路径变量,其值可以通过`@PathVariable("id")`注解获得。 #### 处理方法入参如何绑定 URL 参数 在Spring MVC中,可以非常方便地将URL中的参数与处理方法的参数进行绑定。例如,假设URL为`/search?name=John&age=30`,那么可以在处理方法中直接声明形如`@RequestParam String name, @RequestParam int age`这样的参数,Spring MVC会自动将URL中的参数值绑定到这些参数上。 #### 清单 5. 按参数名匹配进行绑定 对于请求参数的绑定,Spring MVC默认情况下是按照参数名称来进行匹配的。如果请求参数和处理方法中的参数名称一致,则可以直接绑定。例如: ```java @RequestMapping(value = "/search", method = RequestMethod.GET) public String search(@RequestParam String name, @RequestParam int age) { //... } ``` 如果需要指定不同的参数名称,可以使用`@RequestParam`注解: ```java @RequestMapping(value = "/search", method = RequestMethod.GET) public String search(@RequestParam("user_name") String name, @RequestParam("user_age") int age) { //... } ``` #### 清单 8. 通过 `@RequestParam` 注解指定 使用`@RequestParam`注解可以明确指定请求参数与处理方法参数之间的绑定关系。例如: ```java @RequestMapping(value = "/search", method = RequestMethod.GET) public String search(@RequestParam(name = "name", required = false) String userName, @RequestParam(name = "age", defaultValue = "18") int userAge) { //... } ``` 在这个例子中,`required = false`表示`userName`参数是可选的,而`defaultValue = "18"`表示如果没有提供`userAge`参数,则使用默认值18。 #### 清单 11. 使模型对象的特定属性具有 Session 范围的作用域 在Spring MVC中,可以通过`@SessionAttributes`注解来指定模型对象的某些属性具有Session范围的作用域。例如: ```java @Controller @SessionAttributes(names = {"user"}) public class BbtForumController { //... } ``` 这里的`@SessionAttributes(names = {"user"})`注解指定了名为`user`的属性将在整个Session范围内有效。 #### 请求处理方法的签名规约 在Spring MVC中,请求处理方法的签名遵循一定的规约。例如,方法可以接收类型为`HttpServletRequest`、`HttpServletResponse`、`Model`、`ModelMap`、`SessionStatus`、`HttpSession`等类型的参数,也可以返回字符串类型(视图名称)或者`void`类型。 #### 注册自己的属性编辑器 为了能够更好地处理特定类型的属性,可以注册自定义的属性编辑器。例如,如果希望在处理日期类型时使用特定的格式,可以注册一个日期属性编辑器: ```java @Controller public class BbtForumController { @InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); } //... } ``` #### 如何准备数据 在请求处理方法执行之前,可以通过`@ModelAttribute`注解的方法来准备数据。例如: ```java @Controller public class BbtForumController { @ModelAttribute("today") public Date today() { return new Date(); } @RequestMapping(value = "/home", method = RequestMethod.GET) public String home(Model model) { model.addAttribute("message", "Hello, Spring MVC!"); return "home"; } } ``` 在这个例子中,`today()`方法会在每次请求`/home`路径时被执行,并将当前日期作为`today`属性添加到模型中。 #### 小结 本文介绍了Spring MVC在Spring 2.5版本中引入的基于注解的配置方式,包括使用`@Controller`、`@RequestMapping`等注解来定义Controller及其处理方法,以及如何配置DispatcherServlet等关键组件。通过使用这些注解,可以使Spring MVC的应用程序更加简洁、易于理解和维护。 #### 参考资料 1. [Spring MVC官方文档](https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html) 2. [Spring MVC教程](https://spring.io/guides/gs/handling-form-submission/) 3. [Spring MVC实战](https://www.baeldung.com/spring-mvc-tutorial)
剩余24页未读,继续阅读
- 粉丝: 179
- 资源: 30
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java毕设项目之ssm线上旅行信息管理系统ssm+vue(完整前后端+说明文档+mysql+lw).zip
- 黑马最新Hive存储压缩以及Hive3性能优化PPT
- java毕设项目之ssm新生报到系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm小学生课外知识学习网站+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm校园美食交流系统+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm学生公寓管理中心系统的设计与实现+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm学校运动会信息管理系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm学生请假系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm医院门诊挂号系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm学院党员管理系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm亚盛汽车配件销售业绩管理统+jsp(完整前后端+说明文档+mysql+lw).zip
- 教师教学质量评价系统项目源代码全套技术资料.zip
- java毕设项目之ssm在线医疗服务系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm游戏攻略网站的设计与实现+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm医院住院管理系统+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm在线云音乐系统的设计与实现+jsp(完整前后端+说明文档+mysql+lw).zip