注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

奥巴马学技术

这年头,不学点技术奥巴马也为难!!!

 
 
 

日志

 
 

引用 request和response  

2010-09-14 22:10:56|  分类: C#编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

引用

yueyueyyzrequest和response

request  要求, 请求

response  回答; 回音; 答复

只要记住 只要是有关于客户端请求的信息,都可以藉由它来取得,例如请求标头、请求方法、请求参数、使用者IP等等信息。

什么情况下为响应?什么情况下为请求?
      请求就是好像你向某个人借东西,响应就是他把这个东西借给你!!!
      resquest,就可以在JSP网页中使用,在转译为Servlet之后,它会转换为javax.servlet.http.HttpServletRequest型态的对象,HttpServletRequest对象是有关于客户端所发出的请求之对象,只要是有关于客户端请求的信息,都可以藉由它来取得,例如请求标头、请求方法、请求参数、使用者IP等等信息。

  request的主要方法:

  getParameterNames():取得客户端所发出的请求参数名称.

  getParameter():可以让您指定请求参数名称,以取得对应的设定值.

  getServerName():请求的服务器.

  getProtocol():使用协议.

  getMethod():请求方法.

  getServerPort():请求端口号.

  getContextPath():Context路径. context理解为上下文比较好(也就是一个项目)

  getServletPath(): Servlet路径.

  getRequestURI():URI路径.

  getQueryString():查询字符串.

  getRemoteAddr():使用者主机IP.

  getRemotePort():使用者使用端口号.

  例子:

  对应的信息为:

  请求的服务器: localhost

  使用协议: HTTP/1.1

  请求方法: GET

  请求的端口号: 8080

  Context路径: /myjsp

  Servlet路径: /requestdemo.jsp

  URI路径: /myjsp/requestdemo.jsp

  查询字符串: name=john&nick=johncn

  使用者主机IP: 127.0.0.1

  使用者使用端口号: 1060


  JSP的response隐藏对象在转换为Servlet之后,对应于HttpServletResponse型态对象,HttpServletResponse对象是有关于对客户端请求之响应,您可以利用它来设定一些要响应的讯息,例如标题信息、响应状态码等.
  response的常用方法:
  setHeader():是一个通用的标头设定方法,您可以用它来设定任何「名称/值」的标头.
  setIntHeader():是专门用来设定整数值标头的版本.
  setDateHeader():是setHeader()的Date设定版本,第二个参数是设定Date的Long数值,0表示GMT 1970/1/1 00:00。
  (Note:以上3个函数用来设置HTTP协议的表头,必须对HTTP协议有些了解才能正确使用,我现在也不清楚).
  setStatus():是用来设定回应的状态码,例如404 Not Found,HttpServletResponse类中提供了一些助忆常数设定,例如SC_NOT_FOUND就是表示404状态码(可以在Servlet API文件中查询相关的助忆常数).
  sendError():会根据服务器的预设错误网页回报方式显示错误讯息.
  sendRedirect():设置重定向页面.
  getWriter():取得PrintWriter对象,由它来写出响应至服务器的本体信息.

--------------------------------------------------------------------------------

1.输出文本和HTML代码
利用的是response提供的Write()方法
Response.Write("peterbbs");
Response.Write("< br />");输出换行符号
string table ="<table border=1>........";
Response.Write(table);//Output html

2.输出图像
Response输出图像是通过输出该图像的二进制数据实现的实现方法BinaryWrite();
具体方法:
(1) 将图像的虚拟地址转换为物理地址
(2) 定义文件流 读取二进制数据 并保存
(3) 调用方法BinaryWrite();
(4) 设置当前的Web窗体页的输出格式为“image/pjpeg”,此格式只能输出文件后缀名".jpg"的图像
(5) 调用Response对象的End()方法,中止页面的其他输出。

        string path = Request.MapPath("~/image.gif");
        FileStream fs = new FileStream(path,FileMode.Open,FileAccess.Read);
        byte[] imageData = new byte[(int)fs.Length];
        fs.Read(imageData, 0, (int)fs.Length);
        Response.BinaryWrite(imageData);
        Response.End();//使用这个东西的时候,你会发现你再response的任何write方法都失效了


       3.页面间的跳转
这里我就不写了,在我的BAIDU空间里有关于新窗口的response.redirect的方法

4.页面间的参数传递
直接就response.redirect("######.aspx ? id =10"); 就可以了,需要记住这个格式,很固定的。
获取传递过来参数就直接调用Request.Param 就可以获取这个值了

--------------------------------------------------------------------------------

其它问题:
1.JSP中,request是不是HttpServletRequest的一个实例?  
                      response是不是HttpServletResponse的一个实例?  
        若是,我就不理解了,HttpServletRequest不是接口吗?接口怎么会有实例呢?  
        若不是,request/response它是哪个类的实例呢?
request是HttpServletRequest的一个子类的实例,这么说很含糊,事实上这个具体类根据不同的服务器是不同的,但是这些具体类都implement了HttpServletRequest接口。因为无法确定具体是哪个类,所以request只能说与javax.servlet.http.HttpServletRequest对应。你可以在不同的服务器下使用相同的Jsp页面,在其中嵌入

<%=request.getClass()%>看看
request对象与javax.servlet.http.HttpServletRequest类对应,  
  response对象与javax.servlet.http.HttpServletResponse类对应
2.当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。

解决方法是在需要接收request对象内容的页面加一句
          request.setCharacterEncoding("GB18030");
      这里的GB18030是根据你自己的页面编码来决定的。

  评论这张
 
阅读(336)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017