web-servlet-response

 

                                                 


    一、Response对象API:
    
        1、关于响应行的方法:   --- setStatus(int);
        
            设置响应的状态码
            200 正确
            302 重定向
            304 查找本地缓存
            404 请求资源不存在
            500 服务器内部错误
            
        2、关于响应头的方法:

            set开头的方法:针对一个key对应一个value的情况。        
        
            --- setHeader(String name,String value);
            
            例如:
            
                比如有一个头 content-Type:text/html  setHeader(“content-Type”,”text/plain”);
                最终得到头的结果:content-Type:text/plain
                
            add开头的方法:针对一个key对应多个value的情况。
            
            --- addHeader(String name,String value);
            
            例如:
            
                比如有一个content-Type:text/html      addHeader(“content-Type”,”text/plain”);
                最终得到头的结果:content-Type:text/html,text/plain
         
        
        3、关于响应体的方法:
        
            --- getOutputStream();  --- 响应的是字节流;
            
            --- getWriter();        --- 响应的是字符流;
            
        4、其他常用的API:
        
            --- sendRedirect(String location);          ---  重定向
            
                例如:实现重定向
                
                    1、通过设置状态码和location响应头结合
                    
                    response.setStatus(302);
                    response.setHeader("location","/工程名/类名");
                    
                    2、通常开发中的方式(重点)
                    
                    response.sendRedirect(“/工程名/类名”);替换重定向两句写法
            
            --- setContentType(String type);            ---  设置浏览器打开页面时候采用的字符集
            
            --- setCharacterEncoding(String charset);   ---  设置响应字符流的缓冲区字符集
            
            --- addCookie(Cookie cookie);               ---  服务器向浏览器回写Cookie的方法


    二、response对象响应的中文乱码处理:
        
            方式一:使用字节流响应中文
            
                1、使用字节流的方式输出中文:
                
                    ServletOutputStream outputstream = response.getOutputStream();
                    outputstream.write("中国".getBytes());
                    
                    如果用这种方式输出中文,可能会出现乱码,也可能不会,取决于使用的浏览器打开默认字符集;
                    
                    解决:将中文转成字节数组的时候和浏览器默认打开的时候采用的字符集一致即可。
                    
                改为:ServletOutputStream outputstream = response.getOutputStream();
                      //设置浏览器默认打开的时候采用的字符集
                      response.setHeader("Content-Type","test/html;charset=UTF-8");
                      //设置中文转成字节数组字符集编码
                      outputstream.write("中国".getBytes("UTF-8"));
                      
            方式二:使用字符流的方式输出中文:
            
                    response.getWriter().println("中国");
                    
                    如果是这样输出中文,必定会出现乱码问题。字符流是有缓冲区的,response获得字符流,
                    
                    response设计默认的缓冲区编码是ISO-8859-1。这个字符集不支持中文的。
                    
                    解决:
                        设置response获得字符流缓冲区的编码和设置浏览器默认打开时候采用的字符集一致即可。
                    
                    改为:  //设置浏览器默认打开的时候采用的字符集
                            response.setHeader("Content-Type","test/html;charset=UTF-8");
                            //设置response获得字符流的缓存区的编码
                            response.setCharacterEncoding("UTF-8");
                            response.getWriter().println("中国");
                            
                    简化:  response.setContentType("text/html;charset=UTF-8");
                            response.getWriter().println("中国");
                                      

   
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            
                                                            


                                                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值