SpringMVC 映射请求数据获取案例–模型数据
获取参数值
说明
- 开发中,如何获取到http://xxx/url?参数名=参数值&参数名=参数值
- 这个使用的非常广泛,我们看一个案例
应用实例
创建springmvc\src\com\web\requestparam\VoteHandler.java
@RequestMapping("/vote") @Controller public class VoteHandler { //获取到超链接传递的数据 /** * 解读@RequestParam(value="name", required=false) * 1.@RequestParam : 表示说明一个接受到的参数 * 2.value="name" : 接收的参数名是name,接收名必须和前端一致,否则为null * 3.required=false : 表示该参数可以有,也可以没有,如果required=true,表示必须传递该 参数. * 默认是required=true */ @RequestMapping(value = "/vote01") public String test01(@RequestParam(value = "name", required = false) String username) { System.out.println("得到的username= " + username); //返回到一个结果 return "success"; } }
创建springmvc\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=rsthht">获取超链接的参数</a> </body> </html>
页面完成测试。
获取http 请求消息头
应用实例
- 修改VoteHandler.java, 增加方法
@RequestMapping(value = "/vote02") public String test02(@RequestHeader("Accept-Encoding") String ae,@RequestHeader("Host") String host) { System.out.println("Accept-Encoding =" + ae); System.out.println("Host =" + host); //返回到一个结果 return "success"; }
- 修改request_parameter.jsp, 增加代码
<h1>获取到消息头</h1> <hr> <a href="vote/vote02">获取http 消息头信息</a>
获取javabean 形式的数据
开发中,如何获取到javaben 的数据,就是以前的entity/pojo 对象数据
应用实例
创建springmvc\src\com\web\requestparam\entity\Pet.java
public class Pet { private Integer id; private String name; }
创建springmvc\src\com\web\requestparam\entity\Master.java
public class Master { private Integer id; private String name; private Pet pet;//对象的属性是另外一个对象[涉及级联] public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Pet getPet() { return pet; } public void setPet(Pet pet) { this.pet = pet; } @Override public String toString() { return "Master{" + "id=" + id + ", name='" + name + '\'' + ", pet=" + pet + '}'; } }
修改VoteHandler.java, 增加方法
//获取到添加的主人信息 @RequestMapping(value = "/vote03") public String test03(Master master) { System.out.println("主人信息= " + master); //返回结果 return "success"; }
修改request_parameter.jsp, 增加演示代码
<h1>添加主人信息</h1> <!-- 1. 这是一个表单,表单的数据对应Master对象 2. 提交的数据参数名和对象的字段名一致 --> <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>
完成测试。
使用注意事项
- 支持级联数据获取
- 表单的控件名称name 需要和javabean 对象字段对应, 否则就是null
获取servlet api
应用实例
- 开发中, 我们可能需要使用到原生的servlet api 。
- 使用servlet api , 需要引入tomcat/lib 下的servlet-api.jar。
修改VoteHandler.java, 增加方法。
@RequestMapping(value = "/vote04") public String test04(HttpServletRequest request,HttpServletResponse response) { System.out.println("name= " + request.getParameter("username")); System.out.println("pwd= " + request.getParameter("pwd")); //返回结果 return "success"; }
修改request_parameter.jsp
<hr> <h1>获取servlet api </h1> <form action="vote/vote04" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="text" name="pwd"><br> <input type="submit" value="添加主人和宠物"> </form>
完成测试
使用注意事项
除了HttpServletRequest, HttpServletResponse 还可以其它对象也可以这样的形式获取
HttpSession、java.security.Principal,InputStream,OutputStream,Reader,Writer
其中一些对象也可以通过HttpServletRequest / HttpServletResponse 对象获取,比如Session 对象,既可以通过参数传入,也以通过request.getSession() 获取,
效果一样,推荐使用参数形式传入,更加简单明了。
举例说明
@RequestMapping(value = "/vote04") public String test04(HttpServletRequest request,HttpServletResponse response, HttpSession hs) { System.out.println("name= " + request.getParameter("username")); System.out.println("pwd= " + request.getParameter("pwd")); //可以看到hs 和request.getSession() 是同一个对象 System.out.println("httpSession=" + httpSession); System.out.println("httpSession2=" + request.getSession()); //返回结果 return "success"; }