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对象数组,然后在

浏览器上打印出来即可。

posted @   这题我不会  阅读(210)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示