Spring MVC 从 Controller向页面传值的方式

本文介绍了SpringMVC中从Controller向页面传递数据的多种方式,包括使用ModelAndView、ModelMap、@ModelAttribute注解及Session等。每种方法都附带了具体的实现代码示例。

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

Spring MVC Controller向页面传值的方式

验证代码:https://files.cnblogs.com/files/peiyangjun/20180104_springMVC_easyui.zip

在实际开发中,Controller取得数据(可以在Controller中处理,当然也可以来源于业务逻辑层),传给页面,常用的方式有:

 

1、利用ModelAndView页面传值

后台程序如下:

    @RequestMapping(value="/reciveData",method=RequestMethod.GET)

    public ModelAndView StartPage() {

         ModelMap map=new ModelMap();

         User user=new User();

         user.setPassword("123456");

         user.setUserName("ZhangSan");

         map.put("user", user);

    return new ModelAndView("reciveControllerData",map);

}

 

页面程序如下:

 

    <body>

    <h1>recive Data From Controller</h1>

    <br>

      用户名:${user.userName }   

      <br>

      密码:${user.password }

</body>

</html>

 

注意:

     ModelAndView总共有七个构造函数,其中构造函中参数model就可以传参数。具体见ModelAndView的文档,model是一个Map对象,在其中设定好key与value值,之后可以在视图中取出。

从参数定义Map<String, ?> model ,可知,任何Map的对象,都可以作为ModeAndView的参数。

 

2、 ModelMap作为函数参数调用方式

    

@RequestMapping(value="/reciveData2",method=RequestMethod.GET)

    public ModelAndView StartPage2(ModelMap map) {      

         User user=new User();

         user.setPassword("123456");

         user.setUserName("ZhangSan"); 

         map.put("user", user);

    return new ModelAndView("reciveControllerData");

}

 

3、使用@ModelAttribute注解

方法1:@modelAttribute在函数参数上使用,在页面端可以通过HttpServletRequest传到页面中去

        

@RequestMapping(value="/reciveData3",method=RequestMethod.GET)

    public ModelAndView StartPage3(@ModelAttribute("user") User user) {       user.setPassword("123456");

       user.setUserName("ZhangSan");  

       return new ModelAndView("reciveControllerData");

    }
View Code

 

方法2:@ModelAttribute在属性上使用

  

@RequestMapping(value="/reciveData4",method=RequestMethod.GET)

    public ModelAndView StartPage4() {       

       sthname="LiSi";

 

       return new ModelAndView("reciveControllerData");

} 

          /*一定要有sthname属性,并在get属性上取加上@ModelAttribute属性*/

  private String sthname;  

    @ModelAttribute("name") 

    public String getName(){ 

       

       return sthname; 

    }
View Code

 

                        

4、 使用@ModelAttribute注解

/*直接用httpServletRequest的Session保存值。

     * */

    

@RequestMapping(value="/reciveData5",method=RequestMethod.GET)

    public ModelAndView StartPage5(HttpServletRequest request) {      

         User user=new User();

         user.setPassword("123456");

         user.setUserName("ZhangSan"); 

         HttpSession session=request.getSession();

         session.setAttribute("user", user);

    return new ModelAndView("reciveControllerData");

}
View Code

 

转载于:https://www.cnblogs.com/peiyangjun/p/8183438.html

<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、付费专栏及课程。

余额充值