`
soboer
  • 浏览: 1311610 次
文章分类
社区版块
存档分类
最新评论

Web复习和cookie简介

 
阅读更多

服务器端的servlet程序中service();

根据请求调用doget,dopost 产生应答信息

客户端浏览器向web服务器发送请求httpServletRequest对象

(1)请求行:get/demo/test? username=xxxx HTTP/1.1

(2)请求消息头;getHeader(“头字段的名称“)

(3)getParameter(”参数名“)参数

(4)大量的消息实体的内容 getInputStream()。。字节

getReader()。字符

流对象.read()

response对象

(1)状态行 HTTP/1.1200 OK

//一般不需要自己去设置

response.setStatus(HTTPServletResponse.SC_OK);

(2)相应消息的消息头

Content-Type

response.setContentType("text/html");

Refresh:

response.setHeader("Refresh","2;URL");//可以是也相对路径,

也可以是绝对看路径

浏览器不缓存Math.redome()方法的实现

(3)消息实体内容的设置

通过输出流对象

response.getOutputStream() 字节输出流对象

response.getWriter()字符输出流对象

告诉页面怎样显示

(4)创建正文

getoutputStream和getWriter方法

l getOutputStream方法用于返回Servlet引擎创建的字节输出流对象,Servlet程序可以按字节形式输出响应正文。

l getWriter方法用于返回Servlet引擎创建的字符输出流对象,Servlet程序可以按字符形式输出响应正文。

l getOutputStream和getWriter这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另一方法。

l getOutputStream方法返回的字节输出流对象的类型为ServletOutputStream,它可以直接输出字节数组中的二进制数据。

l getWriter方法将Servlet引擎的数据缓冲区包装成PrintWriter类型的字符输出流对象后返回,PrintWriter对象可以直接输出字符文本内容。

l Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据将被Servlet引擎获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。

l Serlvet的service方法结束后,Servlet引擎将检查getWriter或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,Servlet引擎将调用close方法关闭该输出流对象。

(5)乱码分析

浏览器

java程序中:中文字符-unicode

字符的输出流out.println();按照某种字符集的编码方式的转换成字节

数组

浏览器:字节数组-转换成字符

(6)输出缓冲区

response.setBufferSize(1024);

//实际获取中要比你设置的大

int len=response.getBufferSize()

if(itn i=0;i<len;i++){

oout.print("w");

}

// out.flush();

//out.close();

(7)下载

myHtm3

(8)请求对象转发的比较

l RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect 方法还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。

l 如果传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。

l 调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;调用RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

l HttpServletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求;RequestDispatcher.forward方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。

l RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。

l 无论是RequestDispatcher.forward方法,还是HttpServletResponse.sendRedirect方法,在调用它们之前,都不能有内容已经被实际输出到了客户端。如果缓冲区中已经有了一些内容,这些内容将被从缓冲区中清除。

(9)会话

第一次访问web服务器登录的操作输入账号:xxx密码:123—>servlet

身份验证一下是否为合法用户

产生会话id标示,不同会话id

购物:把某个商品加入到购物车----->要知道是谁请求的结果xxx加入

的---->必须记住

结账:--->xxx 结账

cookie

第一次访问web服务器时没有cookie,产生一个相应的cookie 封装在响

应消息中再发送回客户端浏览器,cookie信息保存在客服端上以后客户

端浏览器在向我们的web服务器提交请求cookie

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics