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

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

 

 

 

 

 

posted @ 2018-07-12 13:59  Jeffery336699  阅读(152)  评论(0编辑  收藏