Response1

来源:互联网 发布:mac本的压缩文件是什么 编辑:程序博客网 时间:2024/06/05 20:18

Response对象

1。缓存数据

2。处理字符乱码

3。监听器中的定时器

4。权限检查标签

一.简介:

1.Web服务器收到客户端的http请求,针对每一次请求,分别创建一个用于代表请求request对象、和代表响应response对象

2.requestresponse对象代表请求响应获取客户机提交数据,找request对象(封装了请求的相关信息)。向客户机输出数据response对象(输出信息封装在其中,传给客户端)

二.HttpServletResponse简介

1WEB服务器回送给WEB客户端的HTTP响应消息分为三个部分

1状态行(显示的是http协议,状态码,状态码的描述)

2响应消息头(包含内容类型,是否缓存,编码等)

3消息正文(也叫实体内容)实体内容和响应消息头之间有空行

2Servlet API中定义的ServletResponse接口类用于创建响应消息

3HttpServletResponse专用于HTTP协议的ServletResponse子接口,它用于封装HTTP应消息

4HttpServletResponse定义了一系列用于描述各种HTTP状态码的常量

5、在service()方法内部调用HttpServletResponse对象各种方法创建响应消息

三.产生响应状态行

1HTTP响应消息的响应状态行包括HTTP版本、状态代码和一条相关的提示信息

例:HTTP/1.1 200 OK

2HttpServletResponse定义若干与状态码数值对应的常量,每个常量的名称以前缀SCStatusCode的简写)开头然后状态码HTTP 1.1规范中所表示的状态信息的英文单词的组合,每个单词之间用下划线连接,所有字母都大写

      状态码404对应的常量为HttpServletResponse.SC_NOT_FOUND 

3setStatus方法用于设置HTTP响应消息的状态码,并生成响应状态行

4sendError方法用于发送表示错误信息的状态码(一般是404找不到客户机所请求的资源)到客户端,并清除缓冲区中的内容。

四.构建响应消息头

1、设置头部方法:

1addHeader:(添加一个响应头部)与setHeader方法:(设置一个响应头部)

区别消息头是可以重复的,如果消息头已经存在addHeager就是在次添加setHeader就是对原来的进行设置,用新值代替旧值,如果原来不存在,那么setHeager也相当于添加新的设置

2addIntHeadersetIntHeader方法

3addDateHeadersetDateHeader方法

为了方便大家操作

4setContentLength方法:设置内容长度

2setContentType方法:用于设置Servlet输出内容的MIME类型,对于HTTP协议来说,就是设置Content-Type响应头字段的值。如“text/html;charset=UTF-8

3setCharacterEncoding方法:用于设置输出内容的MIME声明中的字符集编码,对HTTP协议来说,就是设置Content-Type头字段中的字符编码部分

4HttpServletResponse对象服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法

五.response常见应用(写出的是处理乱码和下载文件)

1向客户端输出中文数据(分别OutputStreamPrintWriter输出)

代码说明:

public class Response1extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponseresponse)

               throws ServletException, IOException {

        //test1(response);

        test4(response);

}

public void test1(HttpServletResponse response){

        //没有乱码,个体Bytes()默认是GB2312,浏览器默认也是GB2312

        try {

               String str="北京欢迎你!!";

               OutputStream out=response.getOutputStream();

               out.write(str.getBytes());

        } catch (IOException e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

        }

}

        public void test2(HttpServletResponse response) throwsIOException{

        //有乱码,因此要进行处理

        String str="河北软件职业技术学院";

        //发送消息头,通知浏览器以UTF-8打开内容

        response.setContentType("text/html;charset=UTF-8");

        OutputStream out=response.getOutputStream();

        out.write(str.getBytes("UTF-8"));

}

public void test3(HttpServletResponse response){

        //不发送http头,而是发送了一段html内容来控制浏览器以utf-8打开。

        try {

               String str="我的未来不是梦!!!!";

               OutputStream out=response.getOutputStream();

               out.write("<meta http-equiv='content-type'content='text/html; charset=UTF-8'>".getBytes());

               out.write(str.getBytes("UTF-8"));

        } catch (IOException e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

        }

}

        public void test4(HttpServletResponse response){

        //采用字符输出流,response默认的编码是iso8859-1

        try{

               String str="让我们都加油去超越自己!!!";

               response.setContentType("text/html;charset=UTF-8");

               PrintWriter pw=response.getWriter();

               pw.print(str);

        }catch(Exception e){

               e.printStackTrace();

        }

}

public void doPost(HttpServletRequest request, HttpServletResponseresponse)

               throws ServletException, IOException {

        doGet(request, response);

}

}

2文件下载和中文文件的下载

代码说明:

publicclass Response2 extends HttpServlet {

public void doGet(HttpServletRequest request,HttpServletResponse response)

              throws ServletException,IOException {

       //1.获取要下载的资源

       Stringpath=this.getServletContext().getRealPath("/TV/ServletContext2.avi");

       int i=path.lastIndexOf("\\");

       String fileName=path.substring(i+1);

       System.out.println(fileName);

       //2.通知浏览器以下载方式打开发送过来的数据

      response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(fileName,"UTF-8"));

       //3.读取资源内容

       FileInputStream fis=newFileInputStream(path);

       byte[] buffer=new byte[1024];

       int len=0;

       while((len=fis.read(buffer))>0){

              response.getOutputStream().write(buffer,0,len);

       }

       fis.close();

}

public void doPost(HttpServletRequest request,HttpServletResponse response)

              throws ServletException,IOException {

       doGet(request, response);

}

}

 

原创粉丝点击