• 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.重定向和请求转发的区别

     

     

     

  • 相关阅读:
    关于new 这个动作怎么理解面试遇到过
    _proto_ 和prototype自己的理解
    关于原始input的一些事情
    关于promise自己的理解
    event loop事件循环机制
    详解text-overflow 与 word-wrap ---------->>>>css加省.....英文换行处理
    vue滚动事件销毁,填坑
    vue中检测敏感词,锚点
    让文字两端对齐
    中文分词系列(一) 双数组Tire树(DART)详解
  • 原文地址:https://www.cnblogs.com/jeffery336699/p/9299147.html
Copyright © 2020-2023  润新知