zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    2019.9.18 Unity3D与Android相互传递消息 & unity与ios相互传递消息
    2019.9.10 IEnumerable 详解C# 迭代器
    Windows Live Writer 之 代码快速插入插件
    目标管理剖析与实践– 献给追梦的人 (转)
    转:简历写法
    Linux下 输入 env 而得到的环境变量解读
    how to install tweepy
    全分布式环境下,DataNode不启动的问题解决
    几个因为hadoop配置文件不当造成的错误
    Hadoop: HDFS 格式化时,出现 “ERROR namenode.NameNode: java.io.IOException: Cannot create directory /usr/hadoop/tmp/dfs/name/current”
  • 原文地址:https://www.cnblogs.com/javscr/p/10285885.html
Copyright © 2011-2022 走看看