Java Web开拓中,最常用的便是在后台获取前台的参数,经典的案例便是 JSP 表单传值到后台的 Servlet,然后在 doGet 或者 doPost 中获取,这里把常用参数获取总结一下。
一个范例的jsp表单如下
<form action=\公众WorldServlet\"大众 method=\公众post\公众 enctype=\公众multipart/form-data\公众>
<!--普通文本框-->
用户名:<input type=\公众text\"大众 name=\"大众username\"大众/><br/>
密 码:<input type=\"大众password\"大众 name=\"大众pwd\"大众/><br/>
<!--多选框-->
<input type=\"大众checkbox\公众 name=\公众v1\公众 value=\"大众西瓜\"大众>西瓜
<input type=\公众checkbox\"大众 name=\"大众v1\公众 value=\"大众苹果\公众>苹果<br/>
<!--单选框-->
<input type=\"大众radio\公众 name=\"大众sex\"大众value=\公众男\"大众/>男
<input type=\"大众radio\公众 name=\"大众sex\"大众value=\公众女\"大众/>女<br/>
<!--隐蔽的用途是提交数据,同时不影响界面-->
<input type=\"大众hidden\"大众value=\"大众123\"大众name=\"大众sal\公众/>
<!--选择列表-->
选择你的出生地:
<select name=\"大众bir\公众>
<option value=\"大众\"大众>--请选择--</option>
<option value=\公众bj\"大众>北京</option>
<option value=\公众sh\公众>上海</option>
<option value=\"大众cq\公众>重庆</option>
</select>
<br/>
<!--文本域-->
请留言<br/>
<textarea cols=\"大众30\公众 rows=\"大众10\"大众 name=\"大众liuyan\"大众></textarea><br/>
<!--文件上传-->
选择要上传的文件<br/>
请选择文件:<input type=\"大众file\"大众 name=\"大众myfile\"大众/><br/>
<input type=\"大众submit\"大众 value=\"大众登录\"大众/> <input type=\"大众reset\"大众 value=\公众重新填写\"大众/><br/>
</form>
后台的Servlet获取用户提交的信息
//获取文本框的值
String username = request.getParameter(\公众username\公众);
//获取多选框的值这里获取的是选中的多选框的value属性对应的值而不是页面显示的值
String[] fruit = request.getParameterValues(\"大众v1\"大众);
//获取单选框的值这里获取的是选中的单选框的value属性对应的值而不是页面显示的值
String sex = request.getParameter(\公众sex\公众);
//获取下拉列表的值这里获取的是选中的option的value属性对应的值而不是页面显示的值
String select = request.getParameter(\公众bir\"大众);
//获取文本域的值
String liuyan = request.getParameter(\公众liuyan\公众);
//文件上传
//首先要在Servlet上用 @MultipartConfig 标识支持文件上传
//存储路径 在 WebContent 下新建一个 fileupload 文件夹
String storePath = request.getServletContext().getRealPath(\公众/fileupload\"大众);
//获取part工具 参数为name属性的值
Part part = request.getPart(\"大众myfile\"大众);
//Servlet3没有供应直接获取文件名的方法,须要从要求头中解析出来
//获取要求头
String header = part.getHeader(\公众content-disposition\"大众);
//获取文件名
String fileName = header.substring(header.lastIndexOf(\公众=\公众) + 2, header.length() - 1);;
//把文件写到指定路径
part.write(storePath + File.separator + fileName);
//多文件上传
String storePath = request.getServletContext().getRealPath(\"大众/fileupload\"大众);
for (Part part : request.getParts())
{
if(\"大众myfile\"大众.equals(part.getName()))
{
String header = part.getHeader(\"大众content-disposition\"大众);
String fileName = header.substring(header.lastIndexOf(\公众=\公众) + 2, header.length() - 1);;
part.write(storePath+File.separator+fileName);}
}
}
//文件下载
String filepath = \公众D://XXXX.jpg\"大众;
//办理中文下载文件名乱码
String filename = new String(\"大众XXXX.jpg\"大众.getBytes(\公众UTF-8\公众), \"大众ISO8859-1\公众);
BufferedInputStream bi = new BufferedInputStream(new FileInputStream(new File(filepath)));
OutputStream os = response.getOutputStream();
//指定头部信息
response.setHeader(\公众Content-Disposition\"大众, \"大众attachment; filename=\\\公众\"大众 + filename + \公众\\\公众\"大众);
//指定 setContentType 下载时会弹出对话框
response.setContentType(\"大众application/x-msdownload\"大众);
byte buffer[] = newbyte[1024];
int size;
while ((size = bi.read(buffer, 0, buffer.length)) != -1)
{
os.write(buffer, 0, size);
}
bi.close();
os.close();
总结
实在通过Servlet 3.0获取用户在表单的输入信息是比较随意马虎的,获取上传的文件也大略了很多。动手试试吧,看好不好使。