SSM4.1【Spring:SpringMVC的数据响应】
页面跳转
1 web.xml 2 3 4 <!--配置SpringMVC的核心组件:DispatcherServlet前端控制器--> 5 <servlet> 6 <servlet-name>DispatcherServlet</servlet-name> 7 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 8 <init-param> 9 <param-name>contextConfigLocation</param-name> 10 <param-value>classpath:spring-mvc.xml</param-value> 11 </init-param> 12 <load-on-startup>1</load-on-startup> 13 </servlet> 14 <servlet-mapping> 15 <servlet-name>DispatcherServlet</servlet-name> 16 <url-pattern>/</url-pattern> <!--配置为缺省目的是所有请求都要过前端控制器--> 17 </servlet-mapping>
1 spring-mvc.xml 2 3 4 <!--配置Controller的组件扫描方式1--> 5 <!--<context:component-scan base-package="com.haifei.controller" />--> 6 7 <!--配置Controller的组件扫描方式2--> 8 <context:component-scan base-package="com.haifei"> 9 <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 10 </context:component-scan> 11 12 13 <!--配置内部资源的视图解析器--> 14 <bean id="myViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 15 <property name="prefix" value="/jsp/"></property> <!--默认内部资源的根路径为webapp文件夹--> 16 <property name="suffix" value=".jsp"></property> 17 </bean>
1 <%-- 2 Created by IntelliJ IDEA. 3 User: yubaby 4 Date: 2021/7/16 5 Time: 13:33 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html> 10 <head> 11 <title>jsp/success.jsp</title> 12 </head> 13 <body> 14 <h1>jsp/success.jsp</h1> 15 <h1>${username}</h1> 16 </body> 17 </html>
1 package com.haifei.controller; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.ui.Model; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.servlet.ModelAndView; 7 8 import javax.servlet.http.HttpServletRequest; 9 10 @Controller 11 @RequestMapping("/user") 12 public class UserController { 13 14 @RequestMapping("/save") 15 public String save(){ 16 System.out.println("UserController save..."); 17 return "success"; 18 } 19 20 21 @RequestMapping("/save2") 22 public ModelAndView save2(){ 23 /* 24 Model:模型,封装数据 25 View:视图,展示数据 26 */ 27 ModelAndView modelAndView = new ModelAndView(); 28 29 //设置模型数据 30 modelAndView.addObject("username", "zhangsan"); 31 //设置视图 32 modelAndView.setViewName("success"); 33 34 return modelAndView; 35 } 36 37 38 @RequestMapping("/save3") 39 public ModelAndView save3(ModelAndView modelAndView){ 40 //设置模型数据 41 modelAndView.addObject("username", "lisi"); 42 //设置视图 43 modelAndView.setViewName("success"); 44 45 return modelAndView; 46 } 47 48 49 @RequestMapping("/save4") 50 public String save4(Model model){ 51 model.addAttribute("username", "wangwu"); 52 return "success"; 53 } 54 55 56 @RequestMapping("/save5") 57 public String save5(HttpServletRequest request){ 58 request.setAttribute("username", "zhaoliu"); //往request域中存数据 59 return "success"; 60 } 61 62 }
回写数据
1 /** 2 * 回写数据之直接返回字符串1 3 * @param response 4 * @throws IOException 5 */ 6 @RequestMapping("/save6") 7 public void save6(HttpServletResponse response) throws IOException { 8 response.getWriter().write("save6 hello"); 9 } 10 11 12 /** 13 * 回写数据之直接返回字符串2 14 * @return 15 */ 16 @RequestMapping("/save7") 17 @ResponseBody //通过@ResponseBody注解告知SpringMVC框架,方法返回的字符串不是跳转而是直接在http响应体中返回 18 public String save7() { 19 return "save7 hello"; 20 } 21 22 23 /** 24 * 回写数据之直接返回字符串3 25 * 应用:在ajax异步项目中,客户端与服务器端往往要进行json格式字符串交互 26 * @return 27 */ 28 @RequestMapping("/save8") 29 @ResponseBody 30 public String save8() { 31 return "{\"username\":\"zhangsan\",\"age\":18}"; //手动拼接json字符串返回 32 } 33 34 35 @RequestMapping("/save9") 36 @ResponseBody 37 public String save9() throws JsonProcessingException { 38 User user = new User(); 39 user.setUsername("zhangsan"); 40 user.setAge(18); 41 42 //使用json的转换工具jackson将java对象转换成json格式字符串再返回(先去pom配置jackson依赖坐标) 43 ObjectMapper mapper = new ObjectMapper(); 44 String json = mapper.writeValueAsString(user); 45 46 return json; 47 }
1 pom.xml 2 3 + 4 5 <!--jcakson工具坐标3个--> 6 <dependency> 7 <groupId>com.fasterxml.jackson.core</groupId> 8 <artifactId>jackson-core</artifactId> 9 <version>2.9.0</version> 10 </dependency> 11 <dependency> 12 <groupId>com.fasterxml.jackson.core</groupId> 13 <artifactId>jackson-databind</artifactId> 14 <version>2.9.0</version> 15 </dependency> 16 <dependency> 17 <groupId>com.fasterxml.jackson.core</groupId> 18 <artifactId>jackson-annotations</artifactId> 19 <version>2.9.0</version> 20 </dependency>
1 spring-mvc.xm 2 3 + 4 5 <!--配置处理器映射器--> <!--期望SpringMVC自动将User对象转换成json格式的字符串--> 6 <!--跟上面自定义配置视图解析器一样,也可以在源码中找到对应--> 7 <!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 8 <property name="messageConverters"> 9 <list> 10 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> 11 </list> 12 </property> 13 </bean>--> 14 15 <!--配置mvc的注解驱动--> <!--简化配置处理器映射器,达到相同效果--> 16 <mvc:annotation-driven />
1 /*@RequestMapping("/save10") 2 @ResponseBody 3 //期望SpringMVC自动将User对象转换成json格式的字符串 4 public User save10() { 5 User user = new User(); 6 user.setUsername("zhangsan"); 7 user.setAge(18); 8 return user; 9 //需要是在spring-mvc.xml配置处理器映射器 10 //注意,注解ResponseBody要有,因为springMVC是将user对象转为json字符串后再进行返回 11 // (虽然该方法代码写的是返回User对象类型)实际返回的是string类型 12 }*/ 13 14 @RequestMapping("/save10") 15 @ResponseBody 16 //期望SpringMVC自动将User对象转换成json格式的字符串 17 public User save10() { 18 User user = new User(); 19 user.setUsername("zhangsan"); 20 user.setAge(18); 21 return user; 22 //上述实现方法需要复杂的配置,可以在spring-mvc.xml配置mvc的注解驱动来简化代替上述配置(需要配置mvc命名空间及其约束) 23 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!