传智播客JavaWeb day03

ServletContext

这堂课主要讲ServletContext这个web域(可以看得见范围的)对象,web在启动的时候会创建唯一的ServletContext域对象。

作用:1.用来web域共享数据

    1.1 通过设置域属性(SetAttribute)和获取域属性(GetAttribute)来实现数据共享

   2. 实现转发

    2.1 转发与重定向的区别

      转发一次请求一次响应(获取转发对象RequestDispatcher,通过forward方法实现转发);重定向两次请求两次响应

   3. 读取资源文件

    3.1 获取真实的文件路径(通过父类中的GetRealPath方法获取文件的真实路径)

2015-02-27

Response:向客户端发送数据

 主要讲了向客户端发送数据以及解决乱码的问题

1.Response.GetOutputStream字节流

  1.1 通过str.GetBytes("utf-8")指定编码

  1.2 SetHeader("content-type","text/html;charset=utf-8")指定客户端的解析码表

2.Response.GetWriter字符

  2.1 Response.setCharacterEncoding("utf-8")设置服务器码表

3. 由于setheader使用频率比较高所以封装了一个方法SetContentType,这个既能设置服务器端编码又能设置客户端编码

2015-02-28

Response--下载文件

1. 输入流  首先要有一个输入流读取附件

2.输出流 此时的输出流就是response中的输出流

3.将输入流的数据读取到输出流中  通过一个字节数组缓冲区转

4. 设置头部信息  设置content-disposition值为attachement;filename="xx"如果有中文利用URLEncoder.encode("美女.jpg","utf-8");

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setHeader("content-disposition", "attachement;filename="+URLEncoder.encode("美女.jpg","utf-8"));
        InputStream in = new FileInputStream(this.getServletContext()
                .getRealPath("spring.jpg"));
        OutputStream out = response.getOutputStream();
        byte[] bs = new byte[1024];
        int count = 0;
        while ((count =in.read(bs))!=-1) {
            out.write(bs, 0, bs.length);            
        }
        
        in.close();
    }
View Code

ps:response会自动关闭输出流

2015-03-02

Response--定时刷新页面

定时刷新页面可以通过以下两种方式实现一个是设置http头部还有一个是通过设置meta来模拟,应用场景如注册成功后跳转到首页。

1.设置http头部

SetHeader("Refresh","3;url=")

2.设置meta标签

 <meta http-equiv="refresh" content="3;url=/Day03/servlet/ResponseServlet">

Response--控制缓存

通过设置头部expires(0,-1)、cache-control(no-cache)、pragma(no-cache)

Response--重定向

重定向的原理就是302+location

1.setstatus

2.response.setHeader("location", "/Day03/servlet/CacheServlet");

由于这个方法常用故封装了一个方法SendRedirect("url")

 Response--输出验证码图片

1.内存图  首先要实例化一张内存图对象

2. 获取这张图的画板 当一个内存图对象的时候还不能够直接往上面画东西,得获取图片的画板对象

3. 设置颜色(好比我们操作画图软件时设置一个颜色) 

4.边框

5.干扰点、线  防止机器注册

6.画字

7.输出   从内存中输出到输出流中来

原文地址:https://www.cnblogs.com/lihongchen/p/4302906.html