request初步和获取表单数据

本文主要介绍了如何使用HttpServletRequest来获取表单数据,包括通过getParameter()、getParameterNames()、getParameterValues()等方法获取参数,以及利用getParameterMap()将数据映射到Java对象。在处理文件上传时,会用到getInputStream()来读取流数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HttpServletRequest

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息

一些获得信息的方法

getMethod()客户机请求方式GET/POST
getRequestURI()做权限拦截/统计访问次数
getRequestURL()
URI:/news/1.html 标识所有资源 统一资源标识符
URL:http://www.sina.com/news/1.html 标识互联网资源 统一资源定位器

getQueryString()获得请求行的参数部分
getRemoteAddr()获得发出请求的客户机的IP地址
getRemoteHost()发出请求的客户机的完整主机名 DNS注册后才有 没注册就是IP地址
getRemotePort()客户机使用的网络端口号
getLocalAddr()WEB服务器的IP地址
getLocalName()WEB服务器的主机名

获取头相关的方法

getHeader()获取请求头k-v对应
getHeaders()获取k对应的所有值
Enumeration e = request.getHeaders("Accept-Encoding");
while(e.hasMoreElements()){
Stirng value = (String)e.nextElement();
System.out.printIn(value);
}
getDateHeader()
getHeaderNames()所有请求头的名称 k值

获取带给服务器数据

2种方式,<a>标签和<form>表单 地址?key=xxx带数据过去

getParameter()根据名称k值获得数据
getParameterNames()所有提交数据的名称
getParameterValues()同名k值对应所有数据的值
获得请求数据一般要先检查后使用
value!=null && !value.trim().equals(" ")
getParameterMap()做框架常用 将名称和数据做成map方便存到java对象中
Map map = request.getParameterMap();
User user = new User();
BeanUtils.populate(user,map);可以3行代码把所有数据都存到对象中 简化编程
BeanUtils.copyProperties(user,formbean);copy的属性String和基本数据类型 其他要自己写转换器
Map<String,String[]>value值是String array 照顾同名数据的全部获取
getInputStream()用于文件上传 流获取数据 其他不用
InputStream in = request.getInputStream();
int len = 0;
byte buffer[] = new byte[1024];
while((len=in.read(buffer)) > 0){
System.out.printIn(new String(buffer,0,len));
}
通过表单收集客户机数据

<a>标签中的url后面跟了中文数据,要编码后再提交

<form action="/test/test.do" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
性别:<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女<br/>
所在地:<select name="city">
<option value="beijing">北京</option>
<option value="shanghai">上海</option>
<option value="guangzhou">广州</option>
</select><br/>
爱好:<input type="checkbox" name="likes" value="sing">唱歌
<input type="checkbox" name="likes" value="dance">跳舞
<input type="checkbox" name="likes" value="basketball">篮球
<input type="checkbox" name="likes" value="football">足球<br/>
备注:<textarea rows="6" cols="60" name="description"></textarea><br/>
大头照:<input type="file" name="image"><br/>
<input type="hidden" name="type" value="member">
<input type="submit" value="提交">
</form>
<form action="/test/test.do" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
性别:<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女<br/>
所在地:<select name="city">
<option value="beijing">北京</option>
<option value="shanghai">上海</option>
<option value="guangzhou">广州</option>
</select><br/>
爱好:<input type="checkbox" name="likes" value="sing">唱歌
<input type="checkbox" name="likes" value="dance">跳舞
<input type="checkbox" name="likes" value="basketball">篮球
<input type="checkbox" name="likes" value="football">足球<br/>
备注:<textarea rows="6" cols="60" name="description"></textarea><br/>
大头照:<input type="file" name="image"><br/>
<input type="hidden" name="type" value="member">
<input type="submit" value="提交">
</form>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println(request.getParameter("username"));
System.out.println(request.getParameter("password"));
System.out.println(request.getParameter("gender"));
System.out.println(request.getParameter("city"));
String likes[] = request.getParameterValues("likes");
for(int i=0;likes!=null && i<likes.length;i++){
System.out.println(likes[i]);
}
System.out.println(request.getParameter("description"));
System.out.println(request.getParameter("type"));
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println(request.getParameter("username"));
System.out.println(request.getParameter("password"));
System.out.println(request.getParameter("gender"));
System.out.println(request.getParameter("city"));
String likes[] = request.getParameterValues("likes");
for(int i=0;likes!=null && i<likes.length;i++){
System.out.println(likes[i]);
}
System.out.println(request.getParameter("description"));
System.out.println(request.getParameter("type"));
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值