关于Request和Response对象

  1. 请求消息:客户端发送给服务器端的数据

    • 数据格式:1. 请求行 2. 请求头 3. 请求空行 4. 请求体
    • User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
      浏览器的 UA 字串
      标准格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息


      浏览器请求.png
  2. 响应消息:服务器端发送给客户端的数据

    • 数据格式:
      1. 响应行
        1. 组成:协议/版本 响应状态码 状态码描述
        2. 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。
          a. 状态码都是3位数字
          b. 分类:
          1. 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
          2. 2xx:成功。代表:200
          3. 3xx:重定向。代表:302(重定向),304(访问缓存)
          4. 4xx:客户端错误。
          * 代表:
          * 404(请求路径没有对应的资源)
          * 405:请求方式没有对应的doXxx方法
          5. 5xx:服务器端错误。代表:500(服务器内部出现异常)
      2. 响应头:
        1. 格式:头名称: 值
        2. 常见的响应头:
          1. Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
          2. Content-disposition:服务器告诉客户端以什么格式打开响应体数据
            • 参数:
              • in-line:默认值,在当前页面内打开
              • attachment;filename=xxx:以附件形式打开响应体。文件下载
      3. 响应空行
      4. 响应体:传输的数据

3.响应字符串格式

        HTTP/1.1 200 OK
        Content-Type: text/html;charset=UTF-8
        Content-Length: 101
        Date: Wed, 06 Jun 2018 07:08:42 GMT

        
          
            $Title$
          
          
          hello , response
          
        

4.Response.setContentType 可设置属性

* = application/octet-stream 
.001 = application/x-001 
.301 = application/x-301 
.323 = text/h323 
.906 = application/x-906 
.907 = drawing/907 
.a11 = application/x-a11 
.acp = audio/x-mei-aac 
.ai = application/postscript 
.aif = audio/aiff 
.aifc = audio/aiff 
.aiff = audio/aiff 
.anv = application/x-anv 
.asa = text/asa 
.asf = video/x-ms-asf 
.asp = text/asp 
.asx = video/x-ms-asf 
.au = audio/basic 
.avi = video/avi 
.awf = application/vnd.adobe.workflow 
.biz = text/xml 
.bmp = application/x-bmp 
.bot = application/x-bot 
.c4t = application/x-c4t 
.c90 = application/x-c90 
.cal = application/x-cals 
.cat = application/vnd.ms-pki.seccat 
.cdf = application/x-netcdf 
.cdr = application/x-cdr 
.cel = application/x-cel 
.cer = application/x-x509-ca-cert 
.cg4 = application/x-g4 
.cgm = application/x-cgm 
.cit = application/x-cit 
.class = java/* 
.cml = text/xml :客户端浏览器按XML格式进行解析文档 
.cmp = application/x-cmp 
.cmx = application/x-cmx 
.cot = application/x-cot 
.crl = application/pkix-crl 
.crt = application/x-x509-ca-cert 
.csi = application/x-csi 
.css = text/css :客户端浏览器按CSS格式进行解析文档 
.cut = application/x-cut 
.dbf = application/x-dbf 
.dbm = application/x-dbm 
.dbx = application/x-dbx 
.dcd = text/xml :客户端浏览器按XML格式进行解析文档 
.dcx = application/x-dcx 
.der = application/x-x509-ca-cert 
.dgn = application/x-dgn 
.dib = application/x-dib 
.dll = application/x-msdownload 
.doc = application/msword 
.dot = application/msword 
.drw = application/x-drw 
.dtd = text/xml :客户端浏览器按XML格式进行解析文档 
.dwf = Model/vnd.dwf 
.dwf = application/x-dwf 
.dwg = application/x-dwg 
.dxb = application/x-dxb 
.dxf = application/x-dxf 
.edn = application/vnd.adobe.edn 
.emf = application/x-emf 
.eml = message/rfc822 
.ent = text/xml :客户端浏览器按XML格式进行解析文档 
.epi = application/x-epi 
.eps = application/x-ps 
.eps = application/postscript 
.etd = application/x-ebx 
.exe = application/x-msdownload 
.fax = image/fax 
.fdf = application/vnd.fdf 
.fif = application/fractals 
.fo = text/xml :客户端浏览器按XML格式进行解析文档 
.frm = application/x-frm 
.g4 = application/x-g4 
.gbr = application/x-gbr 
.gcd = application/x-gcd 
.gif = image/gif 
.gl2 = application/x-gl2 
.gp4 = application/x-gp4 
.hgl = application/x-hgl 
.hmr = application/x-hmr 
.hpg = application/x-hpgl 
.hpl = application/x-hpl 
.hqx = application/mac-binhex40 
.hrf = application/x-hrf 
.hta = application/hta 
.htc = text/x-component 
.htm = text/html :客户端浏览器按超文本格式进行解析文档 
.html = text/html :客户端浏览器按超文本格式进行解析文档 
.htt = text/webviewhtml 
.htx = text/html :客户端浏览器按超文本格式进行解析文档 
.icb = application/x-icb 
.ico = image/x-icon 
.ico = application/x-ico 
.iff = application/x-iff 
.ig4 = application/x-g4 
.igs = application/x-igs 
.iii = application/x-iphone 
.img = application/x-img 
.ins = application/x-internet-signup 
.isp = application/x-internet-signup 
.IVF = video/x-ivf 
.java = java/* 
.jfif = image/jpeg 
.jpe = image/jpeg 
.jpe = application/x-jpe 
.jpeg = image/jpeg 
.jpg = image/jpeg 
.jpg = application/x-jpg 
.js = application/x-javascript 
.jsp = text/html :客户端浏览器按超文本格式进行解析文档 
.la1 = audio/x-liquid-file 
.lar = application/x-laplayer-reg 
.latex = application/x-latex 
.lavs = audio/x-liquid-secure 
.lbm = application/x-lbm 
.lmsff = audio/x-la-lms 
.ls = application/x-javascript 
.ltr = application/x-ltr 
.m1v = video/x-mpeg 
.m2v = video/x-mpeg 
.m3u = audio/mpegurl 
.m4e = video/mpeg4 
.mac = application/x-mac 
.man = application/x-troff-man 
.math = text/xml 
.mdb = application/msaccess 
.mdb = application/x-mdb 
.mfp = application/x-shockwave-flash 
.mht = message/rfc822 
.mhtml = message/rfc822 
.mi = application/x-mi 
.mid = audio/mid 
.midi = audio/mid 
.mil = application/x-mil 
.mml = text/xml 
.mnd = audio/x-musicnet-download 
.mns = audio/x-musicnet-stream 
.mocha = application/x-javascript 
.movie = video/x-sgi-movie 
.mp1 = audio/mp1 
.mp2 = audio/mp2 
.mp2v = video/mpeg 
.mp3 = audio/mp3 
.mp4 = video/mpeg4 
.mpa = video/x-mpg 
.mpd = application/vnd.ms-project 
.mpe = video/x-mpeg 
.mpeg = video/mpg 
.mpg = video/mpg 
.mpga = audio/rn-mpeg 
.mpp = application/vnd.ms-project 
.mps = video/x-mpeg 
.mpt = application/vnd.ms-project 
.mpv = video/mpg 
.mpv2 = video/mpeg 
.mpw = application/vnd.ms-project 
.mpx = application/vnd.ms-project 
.mtx = text/xml 
.mxp = application/x-mmxp 
.net = image/pnetvue 
.nrf = application/x-nrf 
.nws = message/rfc822 
.odc = text/x-ms-odc 
.out = application/x-out 
.p10 = application/pkcs10 
.p12 = application/x-pkcs12 
.p7b = application/x-pkcs7-certificates 
.p7c = application/pkcs7-mime 
.p7m = application/pkcs7-mime 
.p7r = application/x-pkcs7-certreqresp 
.p7s = application/pkcs7-signature 
.pc5 = application/x-pc5 
.pci = application/x-pci 
.pcl = application/x-pcl 
.pcx = application/x-pcx 
.pdf = application/pdf :客户端浏览器按PDF格式进行解析文档 
.pdf = application/pdf 
.pdx = application/vnd.adobe.pdx 
.pfx = application/x-pkcs12 
.pgl = application/x-pgl 
.pic = application/x-pic 
.pko = application/vnd.ms-pki.pko 
.pl = application/x-perl 
.plg = text/html 
.pls = audio/scpls 
.plt = application/x-plt 
.png = image/png 
.png = application/x-png 
.pot = application/vnd.ms-powerpoint 
.ppa = application/vnd.ms-powerpoint 
.ppm = application/x-ppm 
.pps = application/vnd.ms-powerpoint 
.ppt = application/vnd.ms-powerpoint 
.ppt = application/x-ppt 
.pr = application/x-pr 
.prf = application/pics-rules 
.prn = application/x-prn 
.prt = application/x-prt 
.ps = application/x-ps 
.ps = application/postscript 
.ptn = application/x-ptn 
.pwz = application/vnd.ms-powerpoint 
.r3t = text/vnd.rn-realtext3d 
.ra = audio/vnd.rn-realaudio 
.ram = audio/x-pn-realaudio 
.ras = application/x-ras 
.rat = application/rat-file 
.rdf = text/xml 
.rec = application/vnd.rn-recording 
.red = application/x-red 
.rgb = application/x-rgb 
.rjs = application/vnd.rn-realsystem-rjs 
.rjt = application/vnd.rn-realsystem-rjt 
.rlc = application/x-rlc 
.rle = application/x-rle 
.rm = application/vnd.rn-realmedia 
.rmf = application/vnd.adobe.rmf 
.rmi = audio/mid 
.rmj = application/vnd.rn-realsystem-rmj 
.rmm = audio/x-pn-realaudio 
.rmp = application/vnd.rn-rn_music_package 
.rms = application/vnd.rn-realmedia-secure 
.rmvb = application/vnd.rn-realmedia-vbr 
.rmx = application/vnd.rn-realsystem-rmx 
.rnx = application/vnd.rn-realplayer 
.rp = image/vnd.rn-realpix 
.rpm = audio/x-pn-realaudio-plugin 
.rsml = application/vnd.rn-rsml 
.rt = text/vnd.rn-realtext 
.rtf = application/msword 
.rtf = application/x-rtf 
.rv = video/vnd.rn-realvideo 
.sam = application/x-sam 
.sat = application/x-sat 
.sdp = application/sdp 
.sdw = application/x-sdw 
.sit = application/x-stuffit 
.slb = application/x-slb 
.sld = application/x-sld 
.slk = drawing/x-slk 
.smi = application/smil 
.smil = application/smil 
.smk = application/x-smk 
.snd = audio/basic 
.sol = text/plain 
.sor = text/plain 
.spc = application/x-pkcs7-certificates 
.spl = application/futuresplash 
.spp = text/xml 
.ssm = application/streamingmedia 
.sst = application/vnd.ms-pki.certstore 
.stl = application/vnd.ms-pki.stl 
.stm = text/html 
.sty = application/x-sty 
.svg = text/xml 
.swf = application/x-shockwave-flash :客户端浏览器按 Flash 格式进行解析文档 
.tdf = application/x-tdf 
.tg4 = application/x-tg4 
.tga = application/x-tga 
.tif = image/tiff 
.tif = application/x-tif 
.tiff = image/tiff 
.tld = text/xml 
.top = drawing/x-top 
.torrent = application/x-bittorrent 
.tsd = text/xml 
.txt = text/plain :客户端浏览器按 纯文本 格式进行解析文档 
.uin = application/x-icq 
.uls = text/iuls 
.vcf = text/x-vcard 
.vda = application/x-vda 
.vdx = application/vnd.visio 
.vml = text/xml 
.vpg = application/x-vpeg005 
.vsd = application/vnd.visio 
.vsd = application/x-vsd 
.vss = application/vnd.visio 
.vst = application/vnd.visio 
.vst = application/x-vst 
.vsw = application/vnd.visio 
.vsx = application/vnd.visio 
.vtx = application/vnd.visio 
.vxml = text/xml 
.wav = audio/wav 
.wax = audio/x-ms-wax 
.wb1 = application/x-wb1 
.wb2 = application/x-wb2 
.wb3 = application/x-wb3 
.wbmp = image/vnd.wap.wbmp 
.wiz = application/msword 
.wk3 = application/x-wk3 
.wk4 = application/x-wk4 
.wkq = application/x-wkq 
.wks = application/x-wks 
.wm = video/x-ms-wm 
.wma = audio/x-ms-wma 
.wmd = application/x-ms-wmd 
.wmf = application/x-wmf 
.wml = text/vnd.wap.wml 
.wmv = video/x-ms-wmv 
.wmx = video/x-ms-wmx 
.wmz = application/x-ms-wmz 
.wp6 = application/x-wp6 
.wpd = application/x-wpd 
.wpg = application/x-wpg 
.wpl = application/vnd.ms-wpl 
.wq1 = application/x-wq1 
.wr1 = application/x-wr1 
.wri = application/x-wri 
.wrk = application/x-wrk 
.ws = application/x-ws 
.ws2 = application/x-ws 
.wsc = text/scriptlet 
.wsdl = text/xml 
.wvx = video/x-ms-wvx 
.xdp = application/vnd.adobe.xdp 
.xdr = text/xml 
.xfd = application/vnd.adobe.xfd 
.xfdf = application/vnd.adobe.xfdf 
.xhtml = text/html 
.xls = application/vnd.ms-excel 
.xls = application/x-xls 
.xlw = application/x-xlw 
.xml = text/xml 
.xpl = audio/scpls 
.xq = text/xml 
.xql = text/xml 
.xquery = text/xml 
.xsd = text/xml 
.xsl = text/xml 
.xslt = text/xml 
.xwd = application/x-xwd 
.x_b = application/x-x_b 
.x_t = application/x-x_t

5.示例代码

/**
    * 设置响应头 By Andrew
     * 2022.05.14
     * @param request
     * @param response
     * @param fileName
     * @throws UnsupportedEncodingException
     */
    public static void setResponseName(final HttpServletRequest request, final HttpServletResponse response, String fileName) throws UnsupportedEncodingException {
        if (request == null || response == null || StringUtils.isBlank(fileName)) {
            throw new IllegalArgumentException();
        }
        response.reset();
        /**服务器告诉客户端本次响应体数据格式以及编码格式,是在获取流之前设置**/
        response.setContentType("application/msword;charset=utf-8");
        
        /**User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。**/
        /**浏览器的 UA 字串标准格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息**/
        if (request.getHeader("User-Agent").indexOf("MSIE") != -1) {
            fileName = new String(new File(fileName).getName().getBytes("UTF-8"), "ISO8859-1");
        }
        else {
            fileName = URLEncoder.encode(fileName, "UTF8");
        }
        
        /**服务器告诉客户端以什么格式打开响应体数据值:in-line:默认值,在当前页面内打开;attachment;filename=xxx:以附件形式打开响应体。文件下载**/
        response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
    }

你可能感兴趣的:(关于Request和Response对象)