Java HttpServletResponse

Posted 博客张C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java HttpServletResponse相关的知识,希望对你有一定的参考价值。

客户端访问地址   tomcatweb.xml中根据地址 找到servlet

并创建servlet对象 (第一次访问) 包含

(请求信息封装)请求对象和

(空/从中获取响应信息)响应对象 servlet对象对其进行操作

servlet 对象   写入响应缓冲区+响应...封装

public class Servlet01 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponseresponse) throws ServletException, IOException {

//添加响应头

response.addHeader("name", "zhangsan"); //字符串

response.addHeader("name", "lisi"); //多个值逗号拼接

response.addIntHeader("age", 28); //整形数字

Date date=new Date()

long bir=date.getTime()

response.addDateHeader("birthday", bir); //长数字

 

//设置响应头  没有添加 有修改

response.setHeader("name", "wangwu");

response.setIntHeader("age", 29);

response.setDateHeader("birthday", 10000000000L);

 

//重定向      在doGet()方法末尾

//response.setStatus(302); //设置响应行 状态码 302:重定向

//response.setHeader("Location", "/WEB0003/Servlet02");//重定向地址

response.sendRedirect("/WEB0003/Servlet02");//重定向+地址

 

//设置定时跳转 五秒以后跳转到百度

//response.setHeader("refresh", "5;url=https://www.baidu.com");

 

//设置字体   响应的流不用关

PrintWriter writer=response.getWriter();//响应字符缓冲区对象

ServletOutputStream out=response.getOutputStream();

response.getOutputStream()response.getWriter() 只能调一个

//response.setCharacterEncoding("utf-8"); //文字编码格式

//response.setHeader("Content-Type", "text/html;charset=UTF-8");

//客户端解码格式

response.setContentType("text/html;charset=UTF-8");//编码解码格

writer.write("中国");//写入响应对象的缓冲区

}

 

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

WebContent/index.jsp:   5秒后跳转
<body>
恭喜你,注册成功
  <span id="second" style="color:red">5</span>秒以后跳转,
  如不跳转点击<a href="https://www.baidu.com">这里</a>
</body>
</html>
<script>
    window.onload=function(){/*跳转倒计时*/
        var time=5;
        var secondEle=document.getElementById("second");
        var timer=setInterval(function(){
            secondEle.innerHTML=time;
            time--;
            if(time==0){
                clearInterval(timer);
                location.href="https://www.baidu.com";/*跳转*/
            }
        },1000);
    }
</script>

 

通过响应,下载文件

通过响应 下载文件
WebContent/download.jsp:http://localhost:8080/WEB0003/download.jsp
<body>
    <h1>a标签指向服务器资源位置  浏览器 不能解析的才下载</h1>
    <a href="/WEB0003/download/a.txt">a.txt</a>
    <h1>使用服务器端编码的方式实现文件的下载</h1>
    <a href="/WEB0003/DownloadServlet?filename=骚猪.txt">骚猪.txt</a>
</body>

 

public class DownloadServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
        //获取要下载的文件名称
        String filename=request.getParameter("filename");


//解决request对象中get方式 解决中文乱码//ISO解码utf-8编码 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"); }

//告知客户端浏览器该文件的MIME类型 String filemime=getServletContext().getMimeType(filename); response.setContentType(filemime); //告知浏览器该文件以附件的形式下载 而不是 解析 response.setHeader("Content-Disposition","attachment;filename="+filenameEncoder);


String realpath
=this.getServletContext().getRealPath("download/"+filename);//获取该文件在服务器上的绝对路径
        FileInputStream fis=new FileInputStream(realpath);        //数据源
        ServletOutputStream out=response.getOutputStream();    //目的地
        int len=0;
        byte[] bytes=new byte[1024];
        while((len=fis.read(bytes))!=-1){            //复制文件
            out.write(bytes,0,len);
        }
        fis.close();    //释放资源
    }
    public void doPost(...){doGet(request, response);}
}

 验证码服务

src/com.oracle.demo02/CheckImgServlet.java  复制到 路径下  验证码服务
WebContent/WEB-INF/new_words.txt  验证码词库
WebContent/WEB-INF/web.xml添加:
   <servlet>
          <servlet-name>CheckImgServlet</servlet-name>
          <servlet-class>com.oracle.demo02.CheckImgServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CheckImgServlet</servlet-name>
        <url-pattern>/CheckImgServlet</url-pattern>
    </servlet-mapping>

WebContent/register.jsp添加:
<body>
    <form action="#" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        验证码:<input type="text" name="code"><br>
        <img src="/WEB0003/CheckImgServlet" onclick="checkImg(this)">
        <input type="submit" value="提交">
    </form>
</body>
<script>
    function checkImg(obj){//每点击一次 请求一次 请求参数为时间戳
        obj.src="/WEB0003/CheckImgServlet?time="+new Date().getTime();
    }
</script>

 








以上是关于Java HttpServletResponse的主要内容,如果未能解决你的问题,请参考以下文章

Java HttpServletResponse

Java中的HttpServletResponse响应

JAVA基础之HttpServletResponse响应

在java中HttpServletResponse响应中文出现乱码。

[原创]java WEB学习笔记08:ServletResponse & HttpServletResponse

HttpServletRequest,HttpServletResponse