A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这是今天的一个作业,老师让整理一天的笔记...。你们有何感想么。。。

  1. ---------------------Response响应头-----------------

  2. 向浏览器输出字符涉及的编码问题

  3.         //1.getOutputStream();代表的是用字节流实现输出,默认情况下,用本地编码(GBK)
  4.         ServletOutputStream os = response.getOutputStream();
  5.         os.write("中国,你好!".getBytes());//默认编码输出

  6.         //2,用UTF-8输出给浏览器,这时得指定浏览器用UTF-8
  7.         os.write("<meta http-equiv='Content-Type' content='text/html;charset=GBK'>".getBytes());
  8.         os.write("是热天".getBytes());

  9.         //3,设置头
  10.         response.setHeader("Content-Type", "text/html;charset=UTF-8");
  11.         os.write("ssdfe广东省".getBytes("UTF-8"));

  12. 下载
  13.         //设置头信息
  14.         //response.setHeader("Content-Disposition","attachment;filename=3.jpg");
  15.         //如果下载文件名有中文时的解决方案
  16.         response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("没是","UTF-8"));
  17.         response.setHeader("Content-Type","application/octet-Stream");
  18.        
  19.         //获取绝对路径
  20.         String path = getServletContext().getRealPath("/WEB-INF/classes/没事.jpg");

  21.         //获取输入输出流
  22.         InputStream is = new FileInputStream(path);
  23.         OutputStream os = response.getOutputStream();
  24.         int len = -1;
  25.         byte[] b = new byte[1024];
  26.         while((len = is.read(b))!=-1)
  27.                 os.write(b,0,len);
  28.        
  29.         is.close();//关闭

  30. 设置不要缓存
  31.         response.setHeader("Expires", -1);
  32.         response.setHeader("Cache-Control", "no-cache");//1.0
  33.         response.setHeader("Prama", "no-cache");//1.1

  34. 设置过期时间
  35.         response.setDateHeader("Expires",System.currentTimeMillis()*3600*1000);//单位长整形,毫秒

  36. 重定向
  37.         特点:
  38.         1,相当于对服务器发送了两次数据
  39.         2,保存在response域中的数据不能共享
  40.         resoponse.sendRedirect("work/1.html");//只能是绝对路径,因为是给浏览器用的


  41. 刷新页面
  42.         //设置浏览器编码
  43.         response.setContentType("text/html;charset=GBK");
  44.         response.getWrite().write("两秒后将跳转至主页");
  45.         //设置刷新时间与跳转地址
  46.         response.setHeader("Refresh","2;URL=/work/1.html");

  47. 字符编码解码:URLEncoder(编码)  URLDecoder(解码)
  48.         String str = "职工";
  49.         String afterStr = URLEncoder.encode(str,"GBK");        //编码
  50.         String restr = URLDecoder.decode(afterStr,"GBK");//解码




  51. --------------------------Request-----------------------------------------------

  52. 方法摘要
  53.         String ip = request.getRemoteAddr();//得到客户端的IP
  54.         String myip = request.getLocalAddr();//服务器ip
  55.                
  56.         String url = request.getRequestURL().toString();//协议+主机+资源地址
  57.         String uri = request.getRequestURI();//资源地址
  58.         String method = request.getMethod();//客户端请求类型
  59.         String queryString = request.getQueryString();//只接受get请求,请求参数
  60.        
  61.         System.out.println("客户端的IP: "+ip);
  62.         System.out.println("服务器ip: "+myip);
  63.         System.out.println("协议+主机+资源地址: "+url);
  64.         System.out.println("资源地址: "+uri);
  65.         System.out.println("客户端请求类型: "+method);
  66.         System.out.println("至接受get请求,请求参数: "+queryString);
  67.        
  68. //-----------------获取请求头的信息--------------------

  69. String                request.getHeader("Accept-Encoding");//得到一个请求头的值
  70. Enumeration        request.getHeaders(str);//得到一个请求头,所对应的多个值的写法
  71. Enumeration        request.getHeaderNames(str);//得到客户端发过来的所有请求头信息



  72. 浏览器访问方式:http://localhost:8080/work/servlet/MethodServletTest1?name=sdf;name=er,pwd=df,dsg=324

  73. 输出结果
  74.         客户端的IP: 0:0:0:0:0:0:0:1
  75.         服务器ip: 0:0:0:0:0:0:0:1
  76.         协议+主机+资源地址: http://localhost:8080/work/servlet/MethodServletTest1
  77.         资源地址: /work/servlet/MethodServletTest1
  78.         客户端请求类型: GET
  79.         至接受get请求,请求参数: name=sdf;name=er,pwd=df,dsg=324

  80. 查看浏览器支持的压缩方式
  81.         String ae = request.getHeader("Accept-Encoding");
  82.                
  83.         if(ae.contains("deflate"))
  84.                 System.out.println("支持deflate压缩:"+ae);
  85.         else
  86.                 System.out.println("不支持deflate压缩:"+ae);
  87.         //输出结果:支持deflate压缩:gzip,deflate,sdch

  88. 得到一个请求头,所对应的多个值的写法
  89.         Enumeration<String> emunss = request.getHeaders("Accept-Encoding");
  90.         while (emunss.hasMoreElements()) {
  91.                 String string = (String) emunss.nextElement();
  92.                 System.out.println(string);//结果:gzip,deflate,sdch
  93.                
  94.                 //得到所有请求头以及它们的值,请加以下语句
  95.                 //System.out.println(request.getHeader(string));
  96.         }

  97. 去请求头参数的值
  98.         String username = request.getParameter("username");
  99. 取多个值
  100.         String []pwd = request.getParameterValues("password");

  101. 获取请求头提交的多个信息,封装至对象中
  102.         //需要导jar包
  103.         User user = new User();
  104.         System.out.println("封装前:"+user);
  105.         BeanUtils.populate(user, request.getParameterMap());
  106.         System.out.println("封装后:"+user);

  107. 上传文件时,用post提交
  108.         InputStream iStream = request.getInputStream();
  109.         int len = -1;
  110.         byte[] b = new byte[1024];
  111.         while ((len = iStream.read(b))!=-1)
  112.                 System.out.println(new String(b,0,len));
  113.        
  114.         iStream.close();

  115. 请求头设置编码格式
  116.         request.setCharacterEncoding("UTF-8");

  117. 域对象
  118.         request.setAttribute(key,value)
  119.         request.getAttribute(key)
  120.         request.removeAttribute(key);

  121. getServletContext()中的转发与reqeust 中的转发
  122.         //ServletContext中的转发只能写绝对路径,而request中的转发可以是绝对路径也可以相对路径

  123. 重定向(2次请求地址栏会变,request域中数据不能传递,可以重定向到别的应用)
  124.         (响应头)response.sendRedirect("绝对路径");

  125. 转发属于本次请求(服务器在转,地址栏不变,是一次请求,request域中数据能传递,只适应于本应用),包含也是一样
  126. 为什么不会输出源中的在网页打印的数据,因为在转发时会先将源对象中的数据清空
  127. 转发之后的代码会继续执行
  128.         request.setAttribute("p","pp");
  129.        
  130.         RequestDispatcher rd = request.getRequestDispatcher("绝对路径or相对路径");
  131.         rd.forward();
  132.         //rd.include();

  133. forward()        不会输出源中的在网页打印的数据,因为在转发时会先将域中数据清空
  134. include()        (包含)会输出源中网页打印的数据
复制代码

点评

好吧,顿时毛骨悚然  发表于 2014-7-23 09:56

59 个回复

倒序浏览
看不懂 呢。

点评

浏览器请求服务器的两个对象。。。  发表于 2014-7-22 22:33
回复 使用道具 举报
讲jsp的九大内置对象了啊

点评

一看就是知道是有java开发经验的人  发表于 2014-7-23 23:11
回复 使用道具 举报 1 0
本帖最后由 790324255a 于 2014-7-22 23:08 编辑

表示在学javaWEB DBUtil

点评

好厉害的样子  发表于 2014-7-23 23:12
回复 使用道具 举报
额果断的看不懂啊
回复 使用道具 举报
不太懂。。。。一心想去学安卓呢。。。。。。。
回复 使用道具 举报
额,基础必须打好啊
回复 使用道具 举报
表示一点看不懂
回复 使用道具 举报
很强大的样子,信息量不少
回复 使用道具 举报
一天要吸收那么多东东,感觉很强大
回复 使用道具 举报
讲的挺多的,加油啊
回复 使用道具 举报
哦哦,知识点还挺多的
回复 使用道具 举报
代码一点也看不懂

点评

学web就看的懂了...  发表于 2014-7-24 00:04
回复 使用道具 举报
完全跟不上节奏啊

点评

额,想跟还是跟的上的  发表于 2014-7-23 23:14
回复 使用道具 举报
mark一下,以后再膜拜
回复 使用道具 举报
量不少啊,难怪进去之后都是12之后才睡觉的,一天都得消化完

点评

对呀,都坐作业到深夜  发表于 2014-7-24 00:07
回复 使用道具 举报
hmid 中级黑马 2014-7-23 06:43:36
17#
楼主是哪个班的啊?第几天的学习了这是?

点评

安卓38,第9天的  发表于 2014-7-23 23:16
回复 使用道具 举报
这是高考个节奏啊~

点评

基本是每天熬夜。。。  发表于 2014-7-23 23:18
回复 使用道具 举报
这是开学多长时间的课程?刚开始的吗?

点评

第9天,web刚开始  发表于 2014-7-23 23:21
回复 使用道具 举报
牛           
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马