利用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