JAVA基础之HttpServletResponse响应_第1页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java基础之httpservletresponse响应java基础之httpservletresponse响应用户在客户端输入网址(虚拟路径)时,开头发送一个http哀求(哀求行、哀求头、哀求体)至服务器。服务器内的tomcat引擎会解析哀求的地址,去找xml文件,然后按照虚拟路径找servlet的真切路径,真切的servlet会将哀求的信息封装成request(哀求)对象,然后再创建一个response(响应)对象,(此时的response内是空的)同时创建servlet对象,并调用service办法(或doget和dopost办法)。这样就是把两个对象传给了服务器内的某个servlet的

2、service办法,通过这个办法,我们可以获得request的全部的信息,并且向response内设置信息。response.getwriter().write()将内容写到response的缓冲区,这样service办法结束了,办法返回后,tomcat引擎会将从该response缓冲区中猎取的设置信息封装成一个http响应(响应行、响应头、响应体),发送给客户端。客户端解析响应回归的东西继而举行显示。我们可以通过设置修改响应的信息举行相应的重定向(用户拜访的网页不存在并跳转到其他网页上)、修改响应文本(需要修改扫瞄器和服务器两边的编码,并且还得处理兼容问题)。一、概述:我们在创建servle

3、t时会笼罩service()办法,或doget()/dopost(),这些办法都有两个参数,一个为代表哀求的request和代表响应response。service办法中的response的类型是servletresponse,而doget/dopost办法的response的类型是httpservletresponse,httpservletresponse是servletresponse的子接口,功能和办法越发强大二、运行流程:三、内容:响应行、响应头、响应体;四、通过response设置响应行:设置响应行的状态码:setstatus(intsc)五、通过response设置响应头:set

4、header(stringname,stringvalue)设置publicclassrefreshservletextendshttpservletprotectedvoiddoget(httpservletrequestrequest,httpservletresponseresponse)throwsservletexception,ioexception/设置定时刷新的头response.setheader("refresh","5;url=");protectedvoiddopost(httpservletreq

5、uestrequest,httpservletresponseresponse)throwsservletexception,ioexceptiondoget(request,response);inserttitleherewindow.onload=function()/猎取span元素varsecond=document.getelementbyid("second");/定义秒数vartime=5;/设置定时器vartimer=setinterval(function()second.innerhtml=time;time-;if(time恭喜您,注

6、册胜利!5秒后跳转,如没跳转,请点击这里1、重定向:(哀求服务器两次,地址栏变幻)、状态码:302;、响应头:location代表重定向地址;publicclassservlet01extendshttpservletprivatestaticfinallongserialversionuid=1l;protectedvoiddoget(httpservletrequestrequest,httpservletresponseresponse)throwsservletexception,ioexception/*/设置响应状态码response.setstatus(302);/设置响应头中的

7、locationresponse.setheader("location","/web0/servlet02");*/重定向response.sendredirect("/web0/servlet02");protectedvoiddopost(httpservletrequestrequest,httpservletresponseresponse)throwsservletexception,ioexceptiondoget(request,response);publicclass

8、servlet02extendshttpservletprotectedvoiddoget(httpservletrequestrequest,httpservletresponseresponse)throwsservletexception,ioexceptionresponse.getwriter().write("servlet02");protectedvoiddopost(httpservletrequestrequest,httpservletresponseresponse)throwsservletexception,ioexception

9、doget(request,response);六、通过response设置响应体:1、响应体设置文本:printwritergetwriter()获得字符流,通过字符流的write(strings)办法可以将字符串设置到response缓冲区中,随后tomcat会将response缓冲区中的内容组装成http响应返回给扫瞄器端。关于设置中文的乱码问题缘由:response缓冲区的默认编码是iso8859-1,此码表中没有中文,可以通过response的setcharacterencoding(stringcharset)设置response的编码,但我们发觉客户端还是不能正常显示文字。缘由:

10、我们将response缓冲区的编码设置成utf-8,但扫瞄器的默认编码是本地系统的编码,由于我们都是中文系统,所以客户端扫瞄器的默认编码是gbk,我们可以手动修改扫瞄器的编码是utf-8。我们还可以在代码中指定扫瞄器解析页面的编码方式,通过response的setcontenttype(stringtype)办法指定页面解析时的编码是utf-8。response.setcontenttype("text/html;charset=utf-8");上面的代码不仅可以指定扫瞄器解析页面时的编码,同时也内含setcharacterencoding的功能,所以在实际

11、开发中只要编写response.setcontenttype("text/html;charset=utf-8"),就可以解决页面输出中文乱码问题。inserttitlehere乱码.pnga.txta.zippackagecom.oracle;importjava.io.fileinputstream;importjava.io.ioexception;.urlencoder;importjavax.servlet.servletexception;importjavax.servlet.servletoutputstream;importjavax.se

12、rvlet.http.httpservlet;importjavax.servlet.http.httpservletrequest;importjavax.servlet.http.httpservletresponse;importsun.misc.base64encoder;publicclassdownloadservletextendshttpservletprotectedvoiddoget(httpservletrequestrequest,httpservletresponseresponse)throwsservletexception,ioexception/服务器猎取文件

13、名(文件名是中文的话,猎取的时候就成了乱码了)stringfilename=request.getparameter("file");/?.png/get哀求中-解决文件名中文乱码问题filename=newstring(filename.getbytes("iso-8859-1"),"utf-8");/乱码.png/猎取user-agent猎取客户端扫瞄器到底是哪个扫瞄器stringagent=request.getheader("user-agent&quo

14、t;);stringfilenameencoder=""if(agent.contains("msie")/ie扫瞄器filenameencoder=urlencoder.encode(filename,"utf-8");filenameencoder=filenameencoder.replace("+","");elseif(agent.contains("firefox")/

15、火狐扫瞄器base64encoderbase64encoder=newbase64encoder();filenameencoder="=?utf-8?b?"+base64encoder.encode(filename.getbytes("utf-8")+"?="else/其它扫瞄器filenameencoder=urlencoder.encode(filename,"utf-8");/告诉扫瞄器文件的类型(响应体)response.setconten

16、ttype(getservletcontext().getmimetype(filename);/告诉扫瞄器以附件的方式提供下载功能而不是解析response.setheader("content-disposition","attachment;filename="+filenameencoder);/服务器猎取后开头举行复制的程序:猎取字节输出流servletoutputstreamsos=response.getoutputstream();/猎取数据源的肯定路径stringrealpath=getservletcontext().getrealpath("download/"+filename);/猎取字节输入流fileinputstreamfis=newfileinputstream(realpath);/开头复制bytebytes=newbyte1024;intlen=0;while(len=fis.read(bytes)!=-1)sos.write(bytes,0,len);/释放资

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论