zoukankan      html  css  js  c++  java
  • HttpServletResponse类

    HttpServletResponse类:

              service方法中的response的类型是ServletResponse,而doGet/doPost方法的response的类型是HttpServletResponse,HttpServletResponse是ServletResponse的子接口,功能和方法更加强大。

      response设置响应行:

                设置响应行的状态码:setStatus()。

    public class LineServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //设置状态码
            response.setStatus(404);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

      response设置响应头:

              addHeader(String name, String value)

              addIntHeader(String name, int value)

              addDateHeader(String name, long date)

              setHeader(String name, String value)

              setDateHeader(String name, long date)

              setIntHeader(String name, int value)

               其中,add表示添加,而set表示设置。 重定向需要:1.状态码:302            2.响应头:location 代表重定向地址

     响应头跳转:

        

    public class Servlet001 extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //跳转到Servlet002
            //设置状态码302
            //response.setStatus(302);
            //设置响应头Location
            //response.setHeader("Location","/Web03/Servlet002");
            //重定向方法
            response.sendRedirect("/Web03/Servlet002");
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }
    public class Servlet002 extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.getWriter().write("hello dandan...");
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    定制时间跳转:         

    public class HeadServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //设置定时刷新头
            response.setHeader("Refresh", "5;url=https://www.baidu.com");
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    定时器跳转:

        

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <script type="text/javascript">
    window.onload=function(){
        //获取span元素
        var second=document.getElementById("second");
        var time=5;
        //设置定时器
        var timer=setInterval(function(){
            second.innerHTML=time;
            time--;
            if(time==0){
                //取消定时器
                clearInterval(timer);
                location.href="https://www.baidu.com";
            
                
            }
        },1000);
    }
    </script>
    <body>
    <span id="second">5</span>
    秒后跳转,如不跳转请点击
    <a href="https://www.baidu.com"> 这里</a>
    </body>
    </html>

    解决中文乱码问题:

            

    public class BodyServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //设置response缓冲区的编码表
            //response.setCharacterEncoding("UTF-8");
            //设置客户端浏览器的解析码表
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().write("你好");
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    写一张图片给客户端:

        

    public class ImageServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //写一张图片给客户端
            //获取图片在服务器上的绝对路径
            String path=getServletContext().getRealPath("download/a.zip");
            //明确数据源
            FileInputStream fis=new FileInputStream(path);
            //明确目的地,获取目的地是客户端的字节输出流
            ServletOutputStream out=response.getOutputStream();
            //开始复制
            byte bytes[]=new byte[1024];
            int len=0;
            while((len=fis.read(bytes))!=-1){
                out.write(bytes,0,len);
            }
            //释放资源
            fis.close();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    文件下载功能:

          

              

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <a href="/Web03/DownServlet?filename=蜡笔.jpg">蜡笔.jpg</a>
    <a href="/Web03/DownServlet?filename=a.wmv">a.wmv</a>
    <a href="/Web03/DownServlet?filename=a.zip">a.zip</a>
    <a href="/Web03/DownServlet?filename=a.txt">a.txt</a>
    </body>
    </html>
    public class DownServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取用户要下载的文件名
            String filename=request.getParameter("filename");
            //解决get请求代码
            filename=new String(filename.getBytes("ISO8859-1"),"UTF-8");
            //获取User-Agent头明确浏览器
            String agent=request.getHeader("User-Agent");
            String filenameEncoder="";
            if (agent.contains("MSIE")) {
                    // IE浏览器
                    filenameEncoder= URLEncoder.encode(filename, "utf-8");
                    filenameEncoder= filenameEncoder.replace("+", " ");
            } else if (agent.contains("Firefox")) {
                    // 火狐浏览器
            BASE64Encoder base64Encoder = new BASE64Encoder();
                    filenameEncoder= "=?utf-8?B?"
                            + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
            } else {
                    // 其它浏览器
                    filenameEncoder= URLEncoder.encode(filename, "utf-8");                
            }
            
            
            //告知浏览器文件的类型
            response.setContentType(getServletContext().getMimeType(filename));
            //告诉浏览器文件以附件方式打开
            response.setHeader("Content-Disposition","attachment;filename="+filenameEncoder);
            //获取文件绝对路径
            String path=getServletContext().getRealPath("download/"+filename);
            //明确数据源
            FileInputStream fis=new FileInputStream(path);
            //明确目的地
            ServletOutputStream out=response.getOutputStream();
            //开始复制
            byte bytes[]=new byte[1024];
            int len=0;
            while((len=fis.read(bytes))!=-1){
                out.write(bytes,0,len);
            }
            //释放资源
            fis.close();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

      

     

  • 相关阅读:
    (转 )Unity对Lua的编辑器拓展
    unity timeline
    unity拖尾粒子问题
    unity shader 波动圈
    linux教程
    Unity Shader 基础
    ugui拖拽
    unity shader 热扭曲 (屏幕后处理)
    英文取名神器
    lua正则表达式替换字符串
  • 原文地址:https://www.cnblogs.com/maxuefeng/p/13970032.html
Copyright © 2011-2022 走看看