向Spring MVC web 进行页面传值

本文介绍了在Spring MVC框架中从Controller向视图层传递数据的各种方法,包括使用HttpServletRequest和Session、ModelAndView对象、ModelMap参数对象及@ModelAttribute注解等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当Controller组件处理后,需要向jsp传值时,用下面方法:

1.直接使用HttpServletRequest和Session

2.使用ModeAndView对象

3.使用ModelMap(建模)参数对象

4.使用@ModelAttribute注解

直接使用HttpServletRequest和Session   Session存储

@RequestMappings("/login-action5.from")
publica String CheckLogin5(String name,String password,
ModelMap model,HttpServletRequest request){
User user=userService.login(name,password);
request.getSession().setAttribute("loginUser",user);
model.addAttribute("user",user);
return "success";
@RequestMapping("/test7.do")
		public ModelAndView test7(HttpServletRequest request, User user) {
			HttpSession session = request.getSession();
			session.setAttribute("langs", "bigdata");
			return new ModelAndView("jsp/hello");
		}

1.使用ModelAndView传出数据

// 1.使用ModelAndView传出数据
		@RequestMapping("/test4.do")
		public ModelAndView test4() {
			Map<String, Object> data = new HashMap<String, Object>();
			data.put("success", "true");
			data.put("message", "操作成功");
			return new ModelAndView("jsp/hello", data);

		}

2.使用ModelMap传出数据

// 2.使用ModelMap传出数据
		@RequestMapping("/test5.do")
		public ModelAndView test5(ModelMap model) {
			model.addAttribute("success", false);
			model.addAttribute("message", "操作失败");
			return new ModelAndView("jsp/hello");
		}

3.使用@ModelAttribute传出bean属性

// 3.使用@ModelAttribute传出bean属性
		@ModelAttribute("age")
		public int getAge() {
			return 18;
		}

4.使用@ModelAttribute传出参数值

// 4.使用@ModelAttribute传出参数值
		@RequestMapping("/test6.do")
		public ModelAndView test6(@ModelAttribute("userName") String username, String password) {
			return new ModelAndView("jsp/hello");
		}

5.使用Session

// 5.使用Session
		@RequestMapping("/test7.do")
		public ModelAndView test7(HttpServletRequest request, User user) {
			HttpSession session = request.getSession();
			session.setAttribute("langs", "bigdata");
			return new ModelAndView("jsp/hello");
		}

6. 返回String:视图信息

	// 6.返回String:视图信息
		@RequestMapping("/test8.do")
		public String test8(User user, Model model) {
			model.addAttribute("user", user);
			return "jsp/hello";
		}

7.系统错误页面

//7.系统错误页面
		@RequestMapping("/test9.do")
		public String test9() {
			return "jsp/error";
		}
<think>好的,用户想了解Spring MVC框架的使用指南、示例和教程。首先,我需要整理Spring MVC的基本概念和核心组件,确保覆盖用户可能需要的入门信息。根据之前的引用内容,Spring MVC是基于MVC设计模式的,所以需要分Model、View、Controller三个部分来讲解。 接下来,用户可能需要一个快速入门的示例,这样他们可以直观地看到如何搭建一个简单的Spring MVC应用。引用中提到了DispatcherServlet、控制器和视图解析器,这些都是关键点。需要创建一个简单的控制器类,用@Controller和@RequestMapping注解,并展示如何返回视图。 然后,用户可能会关心配置部分,比如web.xml和Spring的配置文件。这里需要说明如何配置DispatcherServlet以及视图解析器,比如InternalResourceViewResolver,同时要提到组件扫描,这样控制器才能被正确识别。 另外,用户可能对注解的使用比较感兴趣。引用里提到了@RequestParam、@PathVariable、@ResponseBody等,这些是处理请求参数和响应的重要注解,需要举例说明它们的用法和区别。 数据递部分也很重要,如何将数据从Controller到View,比如使用Model或者ModelMap对象,这里可以结合示例代码展示添加属性并在JSP中显示。 用户可能还会遇到中文乱码的问题,特别是POST请求,所以需要提供解决乱码的配置方法,比如配置CharacterEncodingFilter。同时,GET请求的乱码处理可能需要修改服务器配置,但可以简要提及。 最后,考虑到用户可能需要进一步学习,应该生成一些相关问题,比如高级配置、RESTful支持、拦截器使用等,帮助他们深入探索。需要确保回答结构清晰,步骤明确,代码示例正确,并且符合用户的中文要求,使用正确的LaTeX格式。</think>### Spring MVC 框架使用指南与示例 #### 一、Spring MVC 核心架构 Spring MVC 基于 **MVC 设计模式**,核心组件包括: 1. **DispatcherServlet**:前端控制器,负责请求分发和协调流程[^3]。 2. **Controller**:处理业务逻辑,返回视图或数据。 3. **ViewResolver**:解析逻辑视图名到具体视图(如 JSP、HTML)。 4. **Model**:通过键递数据到视图层。 #### 二、快速入门示例 ##### 1. 环境配置(Maven依赖) ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.20</version> </dependency> ``` ##### 2. 控制器示例 ```java @Controller public class HelloController { @RequestMapping("/hello") public String hello(Model model) { model.addAttribute("message", "Hello Spring MVC!"); return "hello-page"; // 对应视图名 } } ``` ##### 3. 视图解析配置(XML) ```xml <!-- spring-mvc.xml --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> ``` ##### 4. 请求流程 1. 用户访问 `/hello` → DispatcherServlet 接收请求 2. 匹配到 `HelloController.hello()` → 执行逻辑 3. 返回视图名 `hello-page` → 解析为 `/WEB-INF/views/hello-page.jsp` 4. 渲染 JSP 并返回响应 #### 三、关键注解详解 | 注解 | 作用 | |----------------|----------------------------------------------------------------------| | `@RequestMapping` | 映射 HTTP 请求到控制器方法,支持路径、方法类型限定[^2] | | `@RequestParam` | 绑定请求参数到方法参数(支持默认) | | `@PathVariable` | 从 URL 路径中提取变量 | | `@ResponseBody` | 将返回直接写入响应体(用于 REST API) | **示例代码:** ```java @GetMapping("/user/{id}") @ResponseBody public String getUser(@PathVariable int id, @RequestParam(defaultValue = "zh-CN") String lang) { return "User ID: " + id + ", Language: " + lang; } ``` #### 四、数据递与视图技术 1. **Model ** ```java model.addAttribute("key", value); // JSP 中通过 ${key} 获取 ``` 2. **JSON 响应(需 Jackson 依赖)** ```java @GetMapping("/api/data") @ResponseBody public Map<String, Object> getData() { return Map.of("status", 200, "data", "响应内容"); } ``` #### 五、中文乱码解决方案 ```xml <!-- web.xml --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值