欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > SpringMVC系列五: SpringMVC映射请求数据

SpringMVC系列五: SpringMVC映射请求数据

2024/10/24 6:28:39 来源:https://blog.csdn.net/qq_18817831/article/details/139773339  浏览:    关键词:SpringMVC系列五: SpringMVC映射请求数据

SpringMVC映射请求数据

  • 💞获取参数值
    • 说明
    • 应用实例
  • 💞获取http请求消息头
  • 💞获取JavaBean对象
    • 使用场景说明
    • 应用实例
    • 注意事项和细节
  • 💞获取servlet api
    • 说明
    • 应用实例
    • 注意事项和细节

上一讲, 我们学习的是SpringMVC系列四: Rest-优雅的url请求风格

现在打开springmvc项目

在这里插入图片描述

💞获取参数值

说明

开发中, 如何获取到http://ip:port/url?参数名=参数值&参数名=参数值

应用实例

1.com.zzw.web.requestParam新建VoteHandler

@RequestMapping("/vote")
@Controller
public class VoteHandler {/*** 解读* 1.获取到超链接传递的数据 请求 http://localhost:8080/springmvc/vote/vote01?name=xx* 2.@RequestParam 表示会接收提交的参数* 3,value="name" 表示提交的参数名是name* 4.required=false 表示该参数可以没有; 默认是true, 表示必须有这个参数* 5.当我们使用了 @RequestParam(value="name", required=false)后 请求的参数名和方法的形参名可以不一致*/@RequestMapping(value = "/vote01")public String test01(@RequestParam(value = "name", required = false) String username) {System.out.println("得到username=" + username);return "success";}
}

2.web路径下新建request_parameter.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>测试 request parameter</title>
</head>
<body>
<h2>获取到超链接参数值</h2>
<hr>
<a href="vote/vote01?name=zzw">获取超链接的参数</a>
</body>
</html>

3.Postman测试

get方式提交
在这里插入图片描述post方式提交
在这里插入图片描述

💞获取http请求消息头

●说明
1.在开发中, 如何获取到http请求的消息头信息
2.使用较少

案例
1.修改VoteHandler.java, 增加方法 test02

@RequestMapping("/vote")
@Controller
public class VoteHandler {/*** 需求: 获取http请求头信息, 获取到Accept-Encoding 和 Host* [涉及到知识点 http协议]* @param a1* @param a2* @return*/@RequestMapping(value = "/vote02")public String test02(@RequestHeader("Accept-Encoding") String a1, @RequestHeader("Host") String a2) {System.out.println("Accept-Encoding=" + a1);System.out.println("Host=" + a2);//返回一个结果return "success";}
}

2.修改request_parameter.jsp

<h2>获取到消息头</h2>
<a href="vote/vote02">获取到Http消息头信息</a>

3.Postman测试
在这里插入图片描述

💞获取JavaBean对象

使用场景说明

开发中, 如何获取到javabean对象, 就是以前的entity/pojo对象数据

应用实例

1.com.zzw.web.requestParam.entity包下新建Pet

public class Pet {private Integer id;private String name;//setter, getter, toString方法
}

2.同包下新建Master

public class Master {private Integer id;private String name;private Pet pet;//对象的属性是另外一个对象[涉及到属性级联]//setter, getter, toString方法
}

3.修改VoteHandler.java, 增加方法 test03

public class VoteHandler {/*** 演示如何获取到提交数据->封装成java对象* 说明* 1.方法的形参用对应的类型来指定即可, SpringMVC会自动的进行封装* 2.如果要自动地完成封装, 要求提交的数据, 参数名和对象的字段名保持一致* 3.如果属性是对象, 这里仍然是通过 字段名.字段名 比如Master [pet]*   , 即提交的数据 参数名 是 pet.id pet.name, 这就是级联操作* 4.如果提交的数据 的参数名和对象的字段名不匹配, 则对象的属性值就是null* @return*/@RequestMapping(value = "/vote03")public String test03(Master master) {System.out.println("master=" + master);//返回结果return "success";}
}

4.修改request_parameter.jsp

<%--解读
1.这是一个表单, 表单的数据对应Master对象
2.提交的数据参数名和对象的字段名一致即可
--%>
<h1>添加主人信息</h1>
<form action="vote/vote03" method="post">主人:<input type="text" name="id"/><br/>主人:<input type="text" name="name"/><br/>宠物名:<input type="text" name="pet.id"/><br/>宠物名:<input type="text" name="pet.name"/><br/><input type="submit" value="添加主人和动物"/>
</form>

5.Postman测试

get方式提交
在这里插入图片描述post方式提交
在这里插入图片描述

注意事项和细节

1.支持级联数据获取
2.表单的控件名称name需要和javabean对象名称呼应, 否则就是null

💞获取servlet api

说明

1.开发中, 我们可以需要使用到原生的servlet api
2.使用servlet api, 需要引入tomcat/lib下的servlet-api.jar

应用实例

1.修改VoteHandler.java, 增加方法 test04

@RequestMapping("/vote")
@Controller
public class VoteHandler {/*** 使用servlet api, 来获取提交的数据* @param request* @param response* @return*/@RequestMapping(value = "/vote04")public String test04(HttpServletRequest request,HttpServletResponse response) {String username = request.getParameter("username");String password = request.getParameter("password");System.out.println("username=" + username);System.out.println("password=" + password);//返回结果return "success";}
}

2.修改request_parameter.jsp

<h1>演示 servlet api的使用</h1>
<form action="vote/vote04" method="post">用户名:<input type="text" name="username"/><br/>密 码:<input type="password" name="password"/><br/><input type="submit" value="提交"/>
</form>

3.Postman测试

post方式提交
在这里插入图片描述

注意事项和细节

1.除了HttpServletRequest, HttpServletResponse其它对象还可以以这样的方式获取
2.HttpSession, java.security.Principal, InputStream, OutputStream, Reader, Writer
3.其中一些对象也可以通过 HttpServletRequest / HttpServletResponse对象获取, 比如Session对象, 既可以通过参数传入, 也可以通过request.getSession()获取, 效果一样, 推荐使用参数形式传入, 更加简单明了

@RequestMapping("/vote")
@Controller
public class VoteHandler {/*** 使用servlet api, 来获取提交的数据* @param request* @param response* @return*/@RequestMapping(value = "/vote04")public String test04(HttpServletRequest request,HttpServletResponse response,HttpSession session2) {//获取到session//servlet的原生的方式HttpSession session = request.getSession();System.out.println("session=" + session);//注意: 通过参数传入的 session2 和 通过request.getSession()得到的 session对象是同一个System.out.println("session2=" + session2);//返回结果return "success";}
}

在这里插入图片描述

下一讲, 我们学习 SpringMVC系列六: 视图和视图解析器

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com