复习1:
一.get
1.如何编写一个servlet?
①创建一个类去继承HttpServlet,重写doGet|doPost方法。
②配置访问路径(路径是唯一的)
1)注解
2)xml配置
2.响应数据:HttpServletResponse
①首先设置编码: HttpServletResponse.setContentType("text/html;charset=utf-8");|
HttpServletResponse.setCharacterEncoding("utf-8")
②HttpServletResponse去获取输出流:PrintWriter pw = HttpServletResponse.getWriter(); pw.print("xxx");
3.接受请求参数HttpServletRequest
①HttpServletRequest去调用getParameter("表单的name属性值或者url在后面追加的值")
②解决中文乱码 String value = new String(值.getBytes("ISO-8859-1"),"UTF-8");
4.超链接是get请求
二.post(如果直接在url输入访问路径,默认是get请求,如果没有get方法报错)
1.post解决中文乱码请求参数的中文乱码
HttpServletResponse.setCharacterEncoding("utf-8");
三。get与post的区别:
GET请求的特点:
从使用经验上有如下总结:
1.GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
2.GET传送的数据量较小,不能大于2KB。
3.GET安全性非常低 (路由器会记录请求地址)
如下情况中浏览器会发送GET类型的请求:
1.在地址栏输入一个地址
2.点击页面中的链接
3.表单的默认提交方式
POST请求的特点:
从使用经验上有如下总结:
1.POST是将表单内各个字段与其内容放置在实体内容中内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
2.POST传送的数据量较大,一般被默认为不受限制
3.POST安全性较高,将表单的Method属性设置为POST时,浏览器会发送POST请求
GET和POST还有一个重大区别,
简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,
先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换.
POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?
1. GET与POST都有自己的语义,不能随便混用。
2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。
而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
复习2:
一.servlet生命周期
①实例化 <load - on - startup>x</load - on - startup>,x>=0 init方法会启动服务器的时候执行,x<0访问的时候init()才会执行
②初始化 init():只会执行一次
③就绪service():访问的时候执行
④销毁destory():关闭服务器的时候执行
二.servlet四大域
①application:整合web
②session :浏览器打开到浏览器关闭
③request :一次请求一次响应,与转发结合使用
④pageContext:整个jsp页面
三.Jsp
1.表达式
①<%= ... %>(方便输出)
②<% ... %>(完成较长的逻辑运算)
③<%! ... %>(添加属性或者方法)
2.三大指令
①page : 导包
②include : 引入页面
③taglib :引入第三方jar
四。重定向与转发
重定向:浏览器的两次请求,url会发生变化
转 发: url不发生变化,是服务器的两次请求