Servlet学习 --获取浏览器附加信息
一、 文件上传
1,在做文件上传时。需要注意的是,表单的提交方式必须是post的,因为我们需要让表单以字节方式提交,而get只能是字符提交,很显然不适用。
2,需要在form表单中修改请求的头信息。将原来的默认的字符提交修改为字节提交。
修改方式为:在form标签中添加一个属性和值: enctype=”multipart/form-data”
enctype=” multipart/form-data”:该属性表示当前表单为字节格式。服务器接收到该数据包后,发现请求的头部是multipart/form-data时就不会去解析当前的http数据包了。所以,我们也无法使用request.getParameter()去获取表单数据了。
3.在servlet中,如果需要处理表单中的内容。我们需要通过request对象获取通信流,通过对流的对象操作完成相应的表单处理。但是比较麻烦。后期我们会使用apache的专门用于处理文件上传的组件:common-fileupload。欠你们的。
二、 获取浏览器的附加信息
什么是浏览器的附加信息?
所谓的浏览器附加信息其实就是浏览的基本信息。比如:浏览器的品牌,浏览器支持的语言,浏览器支持的文件格式等。
获取方式:
String value = request.getHeader(key);
通过浏览器的附加信息的key获取value
Enumeration enu= request.getHeaderNames();
该方法表示获取附加信息的所有的key返回一个枚举。
Enumeration<String> enu= request.getHeaderNames();
while(enu.hasMoreElements()){
String key =enu.nextElement();
out.println("<tr><td>"+key+"</td><td>"+request.getHeader(key)+"</td><tr/>");
}
三、 给客户端产生一个相应
1.为相应设置编码
response.setContentType(“text/html;charset=utf-8”);
text/html:表示告知浏览器当前返回的相应内容的类型是什么。
charset=utf-8:表示告知浏览器用什么编码格式做相应的数据包的字节到字符的转换。同时用什么编码方式在页面中查看。
2.设置response.setContentType();来改变相应类型
请留意MIME.doc
相应图片
//将需要给客户端相应的图片读进来
InputStream is = new FileInputStream(new File("f:/2.jpg"));
byte[] buff = new byte[is.available()];
is.read(buff);
//在相应之前必须要设置相应类型
response.setContentType("image/jpeg");
//把读进来的图片相应给客户端
OutputStream os = response.getOutputStream();//字节输出流。而getWriter返回的字符输出流
os.write(buff);
os.flush();
is.close();
os.close();