利用3到4天的时间,把servlet中的request和response对象视频看了一遍。看完之后,自己总结出来了一些知识点。
学习一个对象的三部曲:首先查看API文档,了解以及掌握对象的一些常用的方法用法;其次就是解决一些中文乱码之类的问题;最后就是该对象的应用了。
好了,先来说说response对象吧。
1、解决用outputStream输出中文的乱码问题。
//1.程序的数据以什么码表输出了,程序就要控制浏览器以什么码表打开
response.setHeader("content-type", "text/html;charset=utf-8");
String data="中国";
OutputStream out=response.getOutputStream();
out.write(data.getBytes("utf-8"));要注意:
"content-type", "text/html;charset=utf-8"中的分号切不可写成逗号,不然浏览器会提示下载
//2.用HTML技术中的meta标签来模拟http响应头,用于控制浏览器的行为
String data="中国人";
OutputStream out=response.getOutputStream();
out.write("<meta http-equiv=‘content-type‘ content=‘text/html;charset=utf-8‘>".getBytes());
out.write(data.getBytes("utf-8"));2、用write流输出中文
//设置response中的码表
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("中国");3、实现文件的下载
String path=this.getServletContext().getRealPath("/download/image1.jpg");
String filename=path.substring(path.lastIndexOf("\\")+1);//取文件名的小技巧
response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(filename,"utf-8"));
InputStream in = null;
OutputStream out = null;
in = new FileInputStream(path);
int len=0;
byte buffer[]=new byte[1024];
out=response.getOutputStream();
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
out.close();
in.close();4、控制浏览器定时刷新
response.setHeader("refresh", "3");//3秒后刷新
response.setHeader("refresh","3;url=‘index.jsp‘");//3秒后跳到index.jsp还有一个请求重定向,这个放在后面跟请求转发放在一起说
接下来说的就是request对象,先来说说一些常用的方法吧。
System.out.println(request.getRequestURI());
System.out.println(request.getRequestURL());
//URL和URI的区别:
//URI:统一资源标识符 exp:/day02/RequestDemo1
//URL:全球资源定位器 exp:http://localhost:8080/day02/RequestDemo1
System.out.println(request.getQueryString());//获取参数信息(返回请求行中的参数)exp: 返回name=zengxiang
System.out.println(request.getRemoteAddr());//返回发出请求的客户机IP地址
System.out.println(request.getRemoteHost());//返回发出请求的客户机主机名
System.out.println(request.getMethod());//返回请求方式POST、GET、PUT
//客户机带数据给servlet有两种方式:超链接和提交表单,下面是获取请求数据的几种方式
1.String value = (String)request.getParameter("name");
2.Enumeration e=request.getParameterNames();
while(e.hasMoreElements()){
String name=(String) e.nextElement();
value=request.getParameter(name);
System.out.println(name+"="+value);
}
3.String[] values=request.getParameterValues("password");
for(int i=0;values.length!=0&&i<values.length;i++){
System.out.println(values[i]);
}//切记判断传递过来的参数是否为空
4.Map m=request.getParameterMap();
User user=new User();
try{
BeanUtils.populate(user,m);//用map集合数据填充bean
}catch(Exception e1){
e1.printStackTrace();
}
System.out.println(user);
5.InputStream in=request.getInputStream();//一般不采用此种方式去获取数据,文件上传需要这种方式
int len=0;
byte buffer[]=new byte[1024];
while((len=in.read(buffer))>0){
System.out.println(new String(buffer,0,len));
}
下面就是中文乱码的问题了,先来解释一下乱码的原因吧,今晚先到这里,明晚继续完工!本文出自 “java web路上的经历” 博客,谢绝转载!
原文:http://269292440.blog.51cto.com/9982649/1619518