SpringMVC跳转,响应返回json
1:Springmvc响应跳转方式
回顾:
1:springmvc执行的原理
2:springmvc如何接受用户传递过来的参数 -- 通过方法的形参,方法的参数列表中进行声明即可。
3:springmvc如何解决参数的key和形参不一致的情况, requestParam可以解决,有value, required, default
4:如果客户端传递过来的参数比较多,springmvc如何接受, 判断下,能不能封装成一个对象,可以的话,就用对象,HashMap
5:用户的请求到底是如何到达指定的方法的, 请求映射注解,requestMapping, 类 + 方法
6: requestParam作用,接受参数的,如果没有value,则表示接受所有的参数,如果有value,则表示接受指定的参数并完成封装
7:requestMapping作用, 1: 请求映射, 2:限制客户端的请求方式、
8:springmvc和struts区别
转发:
1:添加成功跳转到成功页面,给出提示,失败跳转到失败页面 ---- jsp
2:添加成功后,跳转到查询的controller中 -- 另外一个程序,添加完成之后,执行查询所有的操作,跳转到所有的用户列表
3:在查询的controller中是否能够获取第一个controller中传递的参数
重定向:
1:添加成功之后重定向到页面,失败后也是定向到失败页面
2:使用重定向,跳转到controller中的其他方法
3:重定向跳转到第二个controller中,获取参数
1:转发
1:转发到页面
注意:springmvc默认使用的就是转发技术,
完整的写法是:return “forward:/xx.jsp”; / - 指的是web目录,一层一层往下查找,注意:此时不走springmvc的试图解析器。
如果希望返回时走试图解析器的话,直接写一个简单的字符串即可,如:return “hello”;此时就会做视图的拼接。
2:转发到controller
转发到其他的方法:
完整的写法为: return “forward:/类上的路径/方法上的路径.do”; 这个是通用
如果调用方法和目标方法在同一个类中,则可以简化写法:return “方法上的路径.do”;
3:转发携带参数
可以使用request对象来传递参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | /* * 需求 : 添加员工信息, * 成功,--- 》 转发到某一个具体的页面 ---- 》 恭喜你,添加成功了 * 失败了 --- 》 控制台打印添加失败,页面跳转到首页 ---- 》 首页展示的是所有员工信息,调用的是一个查询所有的方法 * 转发带参数的问题,如果是转发的话,如何在另外一个程序中获取第一个程序存储的参数 * * */ @RequestMapping( "/addEmp.do" ) public String addEmp(String chineseName, String englishName , String pwd, HttpServletRequest request){ // 我现在有一个员工的集合,如果用户输入的内容已经存在了,就不让他添加了 List emps = new ArrayList(); emps.add( "lili" ); emps.add( "xiaoli" ); emps.add( "wenwen" ); emps.add( "ming" ); boolean b = emps.contains(englishName); // 如果有的话则返回true if (!b){ //添加成功 System. out .println( "ok!!!!" ); // 默认使用的就是转发,转发到具体的页面 , // 如果是一个简单的字符串的话,则表示的是视图的名称,会走视图解析器进行视图的拼接 // return "ok"; // 和下面的写法效果是一样的,这个是走视图解析器的, // return "forward:/WEB-INF/views/ok.jsp"; // 不走视图解析器, // 访问另外一个方法的时候,携带参数的 // 转发 : 如何将这个方法中的参数,写到到另外一个方法中 ? // 使用request Emp emp = new Emp(chineseName,englishName,pwd); request.setAttribute( "emp" ,emp); return "forward:/getEmps.do" ; } else { //失败了 // 如果不希望你的程序走视图解析器的话,则必须要使用完整的写法 // forward:/ == /表示的是web这个文件夹 // 不能直接的回到首页,因为首页没有数据 // 如果需要首页有数据的话,应该调用下面的查询所有的方法,查询所有的方法执行完成之后,返回首页 // return "forward:/index.jsp"; // 转发到页面 //转发到方法 , 执行其他方法 , // 如果是转发的话,则语法是 : forward:/ 类上的mapping/方法上的mapping return "forward:/getEmps.do" ; } } //查询所有的方法 @RequestMapping( "/getEmps.do" ) public String getEmps(HttpServletRequest request){ System. out .println( "getEmps.do -----------" ); List emps = new ArrayList(); Emp e1 = new Emp( "丽丽" , "lili" , "lili" ); Emp e2 = new Emp( "琪琪" , "qiqi" , "qiqi" ); Emp e3 = new Emp( "肖肖" , "bigxiao" , "smallxiao" ); emps.add(e1); emps.add(e2); emps.add(e3); Object emp = request.getAttribute( "emp" ); System. out .println(emp); emps.add(emp); // 将用户输入的emp对象添加到容器中 request.setAttribute( "emps" ,emps); return "forward:/index.jsp" ; } |
2:重定向
1:重定向到页面
语法 : return “redirect:/xxx.jsp”
注意:重定向也需要 /
需求:用户登录错误之后重定向到登录页面
2:重定向到controller
return “redirect:/类上的requestMapping / 方法上的requestMapping ”
需求:登录成功之后,重定向到另外一个controller中的查询所有用户的方法,返回所有用户的列表
3:重定向携带参数问题
1:url的拼接
2:使用session传递具体的值
3:使用redirectAttributes 这个接口,在接受方法参数的前面要使用@ModelAttribute("key")来接受
3:springmvc两种跳转方式总结
转发:
转发到页面:return “forward:/具体的页面.jsp”; 如果配置了视图解析器的话同时页面也在指定的位置,return “视图名称”;
转发到方法:return “forward:/类上的路径/方法上的路径.do”, 如果目标方法是在一个类中的,可以直接写方法上的路径,return “queryUsers.do”;
参数携带:request,sesssion
重定向:
重定向到页面: return “redirect:/具体的页面.jsp”
重定向到方法: return “redirect:/类上的路径/方法上路径”;
参数的携带:1,url的拼接,2:session, 3:RedirectAttributes,在接受的时候要使用@ModelAttribute("key")
2:响应时返回json
使用jackson , 使用的时候需要导包
可以将java对象转换为json对象,在方法上添加@ResponseBody 注解即可
作用:java对象 --- 》 json对象
Java集合 -- 》 json数组
补充:如果前端传递过来的是json对象呢
Json -- > java 对象 需要使用一个注解 @RequestBody
-1、导包
-2、使用提供的方法进行转换
@requestBody json对象 -- 》 java对象
@responseBody java对象 ---》json对象
1、下载jaskson的依赖
2、使用
1)前端发送ajax请求, - 添加用户,事件,获取每一个输入框的值,封装成json, --- > 访问服务器
Controller中接受前端传递的json数据,将json对象转换为java对象即可,打印
2)发送查询所有的请求,查询所有数据(controller中准备一个集合),转换为json对象数组,然后在
浏览器上打印出来即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南