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