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获取用户在表单的输入信息是比较随意马虎的,获取上传的文件也大略了很多。动手试试吧,看好不好使。