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) {
             
        } 
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,952评论 19 139
  • API定义规范 本规范设计基于如下使用场景: 请求频率不是非常高:如果产品的使用周期内请求频率非常高,建议使用双通...
    有涯逐无涯阅读 2,993评论 0 6
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 5,368评论 3 82
  • 一天闲着没事,我到生产队的社房转悠,看到木桩上拴着一头小毛驴,长长的耳朵,全身黝黑,尾巴尖有一撮白毛,两只驴眼骨碌...
    都市闲人_35da阅读 804评论 0 0

友情链接更多精彩内容