Servlet02

HTTP协议

  1. HTTP协议就是浏览器和服务器之间通信的规范,它规定了通信的方式以及数据格式
  2. 通信方式
    *建立连接
    *浏览器向服务器发送请求
    *浏览器接收服务器的响应
    *关闭连接
    *该方式的特点:一次请求需建立一次连接,其目的是为了降低服务器压力
  3. 数据格式
    1)请求数据包
    *请求行:请求的基本信息
    *消息头:数据的描述信息
    *实体内容:数据
    2)响应数据包
    *状态行:响应的基本信息
    *消息头:数据的描述信息
    *实体内容:数据
  4. requset-服务器获取请求数据
    1)请求行
    *协议类型: req.getProtocol()
    *请求方式: req.getMethod()
    *Servlet路径: req.getServletPath()
    2)消息头(按照键值对的形式来存数据 key-value)
    *Enumeration e=getHeaderNames()返回所有key的迭代器
    *Enumeration是比Iterator更古老的迭代器
    *e.hasMoreElements()判断迭代器中是否有东西
    *String key=e.nextElement().toString()
    *String value=req.getHeader(key)
  5. response-服务器输出响应数据
    1)状态行:由服务器自动写
    2)消息头:res.setContentType(“text/html”);//声明数据格式 ,其它的由服务器写
    3)实体内容: 用流向浏览器写 PrintWriter pw=res.getWriter()

Servlet工作原理

  1. Servlet如何获取请求参数,通过request获取请求数据
    *getParameter(name) 返回String 参数不存在返回null
    *getParameterValues(name) 返回String[] 参数不存在返回null
  2. 请求方式
    1)浏览器向服务器传递数据的方式 ,有多种传递数据的方式,其传递数据的能力不同,请求方式也不同
    2)GET:
    *采用URL(路径,网名)传参,参数可见
    *缺点:隐私性差,因为路径大小有限制(2k),因此数据大小受限制
    *默认的所有请求都是GET请求(网址,超链接,提交表单)
    3)POST
    *采用实体内容传参,参数不可见
    *隐私性好
    *实体内容专门用来传参,大小不受限制
    *设置POST请求方式可使用 method=”post”
    4)使用场景:
    *向服务器索取(查询)数据时通常用GET
    *向服务器提交(保存)数据时通常用POST
  3. 解决中文乱码
    1)解决服务器出现乱码方式一:
    eg:code=new String(code.getBytes(“iso8859-1”),”utf-8”);
    将乱码接收,然后再将乱码字符串以iso8859-1还原为byte,再将此byte按照UTF-8编码方式重新编码
    优点:万能 缺点:麻烦
    2)解决服务器出现乱码方式二:
    *只对GET有效:修改tomcat目录下的conf目录下的server.xml 在65行加URLEcoding=”UTF-8”,即对路径采用UTF-8解码
    优点:简单 缺点:该tomcat内的项目都受影响
    *只对POST有效:在接收请求参数前,设置实体内容的解码: req.setCharacterEncoding(“UTF-8”);
    3)解决浏览器端出现乱码:
    *res.setContentType(“text/html;charset=utf-8”);在浏览器解决,一般用这个
    *res.setCharacterEncoding(“UTF-8”);在服务器解决
    4)GET请求避免传中文,采用POST请求传中文
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值