Request和Response

Posted jeffery336699

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Request和Response相关的知识,希望对你有一定的参考价值。

1.Response重定向

(1).原始访问路径

技术分享图片

(2)重定向后的路径

 技术分享图片

(3).效果图(url路径有所变化)

 (4).截图效果技术分享图片

 技术分享图片

2.Response定时刷新

 (1)写入html中的代码

 技术分享图片

(2)效果图

 3.常见响应头技术分享图片

 技术分享图片

4.响应流输出一个表格

 (1)代码

 技术分享图片

(2)效果图

 技术分享图片

 (3)注意

☆两个流互斥(response.getWriter()和response.getOutputStream())
☆当响应完成之后,服务器会判断一下流是否已经关闭,若没有关闭,服务器会帮我们关闭.(底层使用的缓冲流)

 

5.文件下载之超链接下载(开发中一般不用)

 (1)代码:

 技术分享图片

(2)效果图:       

 技术分享图片

 6.文件下载之编码下载

 (1)代码

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取下载文件的名称
        String filename = request.getParameter("name");
        
        //注意中文乱码:
        filename=new String(filename.getBytes("iso8859-1"),"utf-8");
        
        ServletContext context = this.getServletContext();
        //文件下载
        //1.设置文件的mimeType
        String mimeType = context.getMimeType(filename);
        response.setContentType(mimeType);
        
        //常见的浏览器将文件名称使用utf-8 不推荐 不兼容火狐
        //response.setHeader("content-disposition", "attchment;filename="+URLEncoder.encode(filename, "utf-8"));
        
        //方式1:通过的方式 通过工具类编码
        //String _filename=DownLoadUtils.getName(request.getHeader("user-agent"), filename);
        //response.setHeader("content-disposition", "attachment;filename="+_filename);
        
        //方式2:网络上的方式 (8成好使)
        response.setHeader("content-disposition", "attachment;filename="+new String(filename.getBytes("gbk"),"iso8859-1"));
        //3.对拷流
        //获取输入流
        InputStream is = context.getResourceAsStream("/download/"+filename);
        
        //获取输出流
        ServletOutputStream os = response.getOutputStream();
        
        /*int len=-1;
        byte[] b=new byte[1024];
        
        while((len=is.read(b))!=-1){
            os.write(b, 0, len);
        }*/
        
        IOUtils.copy(is, os);
        
        os.close();
        is.close();
    }

(3).下载工具类

* 因为常见浏览器下载如果有中文需要把下载文件名进行utf-8编码
* 而火狐浏览器不仅要进行utf-8编码还需要进行Base64编码
* IE浏览器需要进行utf-8编码后还需要把其中的空格替换成+

 

 (4). 下载文件名转换工具类

public class DownLoadUtils {
    public static String getName(String agent, String filename) throws UnsupportedEncodingException {
        if (agent.contains("MSIE")) {
            // IE浏览器
            filename = URLEncoder.encode(filename, "utf-8");
            filename = filename.replace("+", " ");
        } else if (agent.contains("Firefox")) {
            // 火狐浏览器
            BASE64Encoder base64Encoder = new BASE64Encoder();
            filename = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
        } else {
            // 其它浏览器
            filename = URLEncoder.encode(filename, "utf-8");
        }
        return filename;
    }
}

 

 (5).流的对拷贝这里推荐appache组织的commons-io工具类

方法:IOUtils.copy(is, os);

 7.验证码:

 (1).思路

 技术分享图片

(2).验证码servlet可以网上搜索,一大堆

8.请求行

(1) 常见的方法

技术分享图片

9.请求头

 (1)常见方法:

 技术分享图片

10.请求参数

 (1)示例

 技术分享图片

11.请求乱码问题

 (1).原因

 技术分享图片

(2).post方式

 技术分享图片

12.域对象之Request

 (1)定义

 技术分享图片

(2).示

 技术分享图片

(3).目的servlet

 技术分享图片

(4).效果图

 13.注册Demo技术分享图片

(1).概括

 技术分享图片

(2).

 技术分享图片

                   图 1

 技术分享图片

                                    图 2

 (3).效果图

 技术分享图片

 14.重定向和请求转发的区别

 技术分享图片

 

 

 

 

以上是关于Request和Response的主要内容,如果未能解决你的问题,请参考以下文章

Request和Response

javaWeb中request请求转发和response重定向

request重定向或者是response转发请求后面的代码依然执行

WinForm窗体程序中使用CefSharp获取加载后的资源截取request参数拦截response数据注入jquery文件和js代码-拦截response数据

WinForm窗体程序中使用CefSharp获取加载后的资源截取request参数拦截response数据注入jquery文件和js代码-截取request参数

Request和Response