码迷,mamicode.com
首页 > 其他好文 > 详细

servlet中的request和response

时间:2015-03-12 01:07:02      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:request   response   

利用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路上的经历” 博客,谢绝转载!

servlet中的request和response

标签:request   response   

原文地址:http://269292440.blog.51cto.com/9982649/1619518

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!