经过两天的培训我真心的说我来到传智播客没有后悔,这才是一个做软件的该学的东西,真正的技术啊,讲课老师很负责,每天都好累,他把一天的课时讲完没有直接走而是坚持的在给大家讲基础补基础,好有耐心,直到很晚才走的,这不是就我们班是这样,而是整个学校都是这样,每个老师都是很有耐心,班主任每天都在陪着我们一起学习,对我们的关心,让我感到暖暖的。

给大家晒晒我学到的技术吧

今天主要讲解的是:HttpServletRequest HttpServletResponse 的API
浏览器与服务器之间的交互过程:
当服务器收到一次浏览器的Http(http底层是基于TCP传输协议)请求后在服务器同时会产生一个Request对象和一个Response对象
通过request请求对象获得客户端向服务器提交的数据,在通过响应生成数据由服务器把数据发送到客户端 。
下面分别介绍一下连个对象常用的方法:
HttpServletResponse:
 setStatus(int) 设置响应的状态码
 setHeader(String,String) 设置响应头信息
 在这小说一下addHeader()与setHeader()区别:
  addHeader 用于一个key多个value 情况 ------- key:value,value,value ... 在原有值添加新值
  setHeader 用于 一个key一个value 情况 ------- 用新的value 覆盖之前value
 getWriter() 获得响应体字符输出流,也就是往浏览器些数据
 getOutputStream() 获得响应体字节输出流,同样是往浏览器写数据
 setContentType("text/html;charset=utf-8") 设置服务器返回的数据是什么类型的并且是以什么编码打开
 setCharacterEncoding("utf-8") 服务器是以什么编码解释浏览器提交的数据
注意:(1)writer 和 getOutputStream 生成的内容是Http协议响应体数据,它不能够生成状态行和头信息
   (2)ServletResponse 接口不提供与协议相关的API 但是HttpServletResponse是面向Http协议,所以提供协议相关的API
   (3) HttpServletResponse :HttpServletRequest
   它们的实现类不在JavaEE API中(request和response实现类在tomcat源码中)   ,实现类是由服务器提供在服务器接收到请求发生时,由服务器构造出Request和Response对象
在这介绍一下状态码的使用:
 状态码是结合Location响应头使用的
 response.setStatus(302);
 response.setHeader("Location", "/day6/response/demo2.html")Location的value指定要重定向的地址
 以上两行代码可以简化,通过sendRedirect方法实现:response.sendRedict("/day6/response/demo2.html");
通过refresh完成自动刷新页面:
refresh 格式: 时间(秒);url=跳转页面路径
例如: response.setHeader("refresh", "5;url=/day6/hello.html"); === 生成响应头信息中
在HTML中meta标签,同样可以产生Http响应头信息相同的效果
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 http-equiv 响应头信息name
 content 响应头信息value
例如: <meta http-equiv="refresh" content="5;url=/day6/hello.html" /> === 生成响应体中
注意问题:
1)、文件复制时用getOutputStream , 手动生成响应内容时用getWriter
2)、getOutputStream和getWriter相互排斥不能同时使用
3)、getOutputStream和getWriter生成响应体内容,不能改变状态行和头信息的
4)、tomcat服务器会自动调用response输出流 close方法,调用close时自动flush缓冲区内容
HttpServletRequest:
1、获得客户机常用信息
 getMethod 请求方式
 getProtocol 协议
 getRequestURI 和 getRequestURL 获得请求资源路径
 getRemoteAddr 获得客户机IP地址
 * 将 127.0.0.1 localhost 加入本机 hosts文件
 getContextPath 获得工程虚拟目录名称
 URI和URL区别
 URI:/day6/request1
 URL:http://localhost/day6/request1
 URI范围比URL大,http://localhost/day6/request1 是URL也是 URI ,/day6/request1 是URI 不是 URL

2、获得请求头信息
 getHeader(name) 获得指定头信息
 User-Agent 客户端浏览器类型 (文件下载)
 MSIE IE浏览器
 Firefox 火狐浏览器
Chrome google浏览器
3、获得请求参数
 GET方式请求,参数位于请求行中
 POST方式请求,参数位于请求体中

getParameter(name) 根据参数名称获得参数值 (一个值)
 getParameterValues(name)  根据参数名称获得参数值 (多个值) -------- 结合checkbox 一起使用
 getParameterNames() 获得所有参数名称
 getParameterMap() 将参数name和value 保存到一个map中,返回map

乱码问题解决:
 POST请求乱码 :request.setCharacterEncoding("utf-8");
 GET请求乱码
 解决方案一:修改server.xml
    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="utf-8"/>
* 必须有修改tomcat服务器配置文件权限

解决方案二:逆向编解码
 username = URLEncoder.encode(username, "ISO-8859-1");
 username = URLDecoder.decode(username, "utf-8");
 简化
 username = new String(username.getBytes("ISO-8859-1"),"utf-8");

结论:能用post时 不用get ---- form提交都用post
 <a href="url?name=中国"> ---- 手动处理 get
 URL编码和解码
 1) 浏览器提交一次请求,请求中中文字符,自动进行URL编码 (由浏览器完成)
 2) web服务器接收到内容之后,自动URL解码
 URLEncoder 完成URL编码 , URLDecoder 完成URL解码

服务器端接收请求,请求url : http://localhost/day6/request3?name=aaa+bbb
 问题:在服务器端执行 request.getParameter("name"); 值 aaa bbb

4、请求转发传递数据
请求转发forward 和 请求重定向redirect 区别 ???
1) 转发一次请求 一次响应; 重定向两次请求 两次响应
2) 转发URL地址 不变,重定向URL地址改变第二个资源地址
3) 转发只能转发给同一个网站内部资源,重定向可以定向到任何网站
4) 转发中/属于服务器内部路径 不写工程名,重定向/来自客户端必须要写工程名
servlet的最佳应用:Servlet处理数据得到数据处理结果,通过请求转发,将处理结果传递JSP显示
* Servlet处理数据获得结果,JSP负责数据显示的。

来传智播客学到的知识相关推荐

  1. 来传智播客学到的第一天

    第一天上课咱们传智播客给我的感觉很好,让我感觉到了学习的气氛是那么的好,同学之间就和兄弟姐妹一样,尤其是班主任,对我们的关怀是无微不至的 对我们非常负责任,心里是那么的暖,早上早早的就到教室了,看有没 ...

  2. 传智播客学python可以找人工智能方向的工作吗_Python的就业方向

    本帖最后由 人工智能 于 2018-8-16 15:51 编辑 为了Python的自学党们,黑马真的是拼了 !我们不仅有"人工智能+Python学习路线图",还根据以往的经验,总结 ...

  3. 学网页平面UI设计,我选择广州传智播客

    学网页平面UI设计,我选择广州传智播客     学了网页平面设计能干什么用?有一些人还不是很清楚,主要设计行业有:广告平面设计(户外),装饰设计 ,网页设计,动画设计(平面 三维等) 建筑设计 当然做 ...

  4. 传智播客 .NET面试宝典(2015版)

    .Net工程师面试笔试宝典 培训班常见问题 1.你们会带着我们做完整个完整的项目吗? 答:小的项目会,大的项目则不可能, 1.众所周知,随便拿出一个中等大小的项目,也需要好多个熟练的开发人员开发好多个 ...

  5. 留学新西兰 魂牵梦绕传智播客的课堂

    刘佳杰(传智播客广州校区.Net就业班学员) 就职公司:talking tech limited 就业薪资:月薪2万+年底分红    编者按:21岁,他大学毕业,当所有的人都以为他会进国内一家企业大展 ...

  6. 传智播客 .NET面试宝典(2014版)

    .Net工程师面试笔试宝典 由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完和学完这套面试宝典,即使你已经学过了有关的技术,那么至少也需要一个月的时间才能消化和掌握这套面试宝典,所以 ...

  7. 传智播客 - java 就业面试题大全

      从享受生活的角度上来说:"程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没有什么工作可做,或者说是即使有可以做的工作但是你非常不愿意去做:第二,你非常痴迷 ...

  8. 2010春节后传智播客报班JAVA,想找学习的人一起团报QQ940834693

    折腾这么久,熬了几个通宵,比较北京的几个有名的java培训机构,看他们的招生简章,听他们的网络课程,最终选择了传智播客.现在听说传智播客团报便宜.所以寻找过了春节想去传智播客学java的同道.qq:9 ...

  9. 传智播客大讲堂隆重开讲

    在如今的"互联网+"和知识经济时代,所有企业都如逆水行舟,不进则退.作为教育培训行业的领头企业,传智播客要不断进行知识的摄取和迭代,以更加广阔的视野和雄厚的知识底蕴,拥抱" ...

最新文章

  1. nginx conf 文件配置
  2. AI一分钟 | 微软将成立微软亚洲研究院上海分院;阿里AI鉴黄师能判别呻吟声
  3. python制作解压工具_使用python制作一个解压缩软件
  4. Linux三剑客之awk详解
  5. SpringBoot - 优雅的实现【自定义参数校验】高级进阶
  6. 等待多线程完成的CountDownLatch
  7. java为什么全是乱码_java一切乱码的解释 以及源头
  8. python tab补全
  9. 高一计算机信息与技术旅游,信息技术的发展与旅游信息系统的建设
  10. sql server 群集_SQL Server群集索引概述
  11. java 新项目计划_Java的新项目学成在线笔记-day6(十二)
  12. 利用路由器实现×××的基本配置方法
  13. php pdf打印横向,如何将pdfFactory打印调整为横向 - 应用技巧 - 常青藤软件工作室...
  14. 【工具类】java数字金额转换成大写
  15. 计算机打印机图标删除吗,打印机图标不见了怎么办 打印机图标消失的解决方法...
  16. 用python做了个桌球瞄准器
  17. 2021年5月—系统集成项目管理工程师—上午综合知识(51-60)
  18. IDA密码算法自动化识别插件、脚本汇总
  19. 【一天一门编程语言】Lisp 语言程序设计极简教程
  20. PSpice受控源设置增益参数

热门文章

  1. 2020-11-02 很多人比起穷,更受不了慢慢变富
  2. Python APP自动化测试详解
  3. 中国高校计算机大赛——微信小程序应用开发赛
  4. [Android]如何做一个崩溃率少于千分之三噶应用app(7)-跨module交互
  5. 浙江工业大学计算机考研科目,浙江工业大学考研专业目录
  6. android phone电脑驱动下载,全机型Android Phone驱动及安装教程(XP,Vista,Win7).pdf
  7. BaiduMapTileCutter切百度地图瓦片
  8. qrcode生成固定大小的二维码
  9. Unkown host ‘raw.githubusercontent.com‘以及超时问题
  10. 2014年国人开发的最热门的开源软件TOP 100