Servlet response request 对象

Web服务器收到客户端的http请求,会针对每一次http请求,分别创建一个用于代表请求的request对象,和代表相应的respose对象。

respose
请求相应包括 响应状态行、响应头、响应数据。
setStaus();//发送响应行
setHeader();//发送响应头
getWrite().write();//写响应数据(字符流)
getOutPutStream().write();//写响应数据(字节流)

关于字符编码的问题

public class ServletDemo extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //高度浏览器 用哪种码表来打开数据   一定要写这个   要是不对应的话会出现乱码的问题
        response.setHeader("content-type", "text/html;charset=UTF-8");
        //自己根据那个码表来查询  把查询好的数据发送给浏览器 
        response.getOutputStream().write("中国".getBytes("UTF-8"));
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

在开发中尽量使用字符流,不用字节流。

public class ServletDemo extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //便捷的方法  写了这个  这个也包含了 response.setCharacterEncoding("UTF-8"); 不用设置本地的码表了就
        //response.setContentType("text/html;charset=UTF-8");
        
        //告诉 servlet response 去查询码表(当字符变字节的时候)的时候根据 UTF-8来查  这句一定写在response.getWriter() 之前
        response.setCharacterEncoding("UTF-8");
       //告诉浏览器 用哪种码表来打开数据   一定要写这个   要是不对应的话会出现乱码的问题
        response.setHeader("content-type", "text/html;charset=UTF-8");

        //自己根据那个码表来查询  把查询好的数据发送给浏览器 
        response.getWriter().write("中国");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

**Demo 用浏览器来下载图片 用操作字节来做 不要用字符来做 **

    /**
     * 用字节流来读   注意  字符流只能处理文本   字节流什么都可以处理。因为在字符转字节的需要查码表 很可能里面没有所对应的  导致缺失数据
     * @param response
     */
    private void test2(HttpServletResponse response) {
         try {
             //得到 图片的路径 以便一会用来截取它的名字
            String path= this.getServletContext().getRealPath("/demo宋.jpg");
            //得到 图片的名字
            String pathName=path.substring(path.lastIndexOf("\\")+1); 
            //当图片的名字中包含中文的时候   下面的很必要
            pathName=URLEncoder.encode(pathName,"UTF-8");
            //设置头
            response.setHeader("content-disposition", "attachment;filename="+pathName);
            //读图片
            InputStream inputStream=new FileInputStream(path);
            OutputStream out=response.getOutputStream();
            int len=0;
            byte[] buffer =new byte[1024];
            while((len=inputStream.read(buffer))>0)
            {
                out.write(buffer,0,len);
            }
            out.close();
            inputStream.close();
        } catch (Exception e) {
             
        } 
    }

你可能感兴趣的:(Servlet response request 对象)