Servlet-02

1.在doGet()的respon 中添加响应头,3秒刷新,并跳转到其他页面

response.setContentType("text/html;charset=utf-8");
        // 添加响应头=> Refresh
        response.addHeader("Refresh", "3;url=http://localhost:8080");
        // 让页面有倒计时的效果
        response.getWriter().write("您将在<span id='one'>3</span>秒后跳转!" +
                "<script type='text/javaScript' >" +
                "var span = document.getElementById('one');" +
                "var i =3;" +
                "function fun(){" +
                "i--;" +
                "if(i>=0){" +
                "span.innerHTML = i;" +
                "}" +
                "}" +
                "window.setInterval(fun,1000);" +
                "</script>");

注意:在java代码中书写 script 太麻烦,太尴尬了;

2.防止中文乱码

  • 字节流的处理
//控制解码码表
        response.setHeader("Content-Type", "text/html;charset=GBK");
        //控制编码码表
        response.getOutputStream().write("尽头".getBytes("GBK"));
  • 字符流的处理
1.  

            //设置解码码表
            response.setHeader("Content-Type", "text/html;charset=utf-8");

            //设置编码mabiao
            response.setCharacterEncoding("gbk");

            2.
            response.setContentType("text/html;charset=utf-8");

            response.getWriter().write("典当");

结论:

1.的两行,可以用2.的 一行来代替
response.setContentType(); 设置解码格式, 同时自动设置编码码表

建议:

1 输出中文建议使用字符流
2 解决字符流乱码 使用setContentType放可以同时设置编码解码两端的码表.
3 注意: 码表的设置一定放到输出之前
4 注意: 字符流与字节流不能同时使用

3. WEB-INF下 的文件的 查看 和下载

  • 查看图片的操作案例:(和听音乐代码差不多)
public class FServlet extends HttpServlet {

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

                // 1.得到输入流
                InputStream is = getServletContext().getResourceAsStream(
                        "/WEB-INF/aa.jpg");

                // 2.得到输出流
                OutputStream so = response.getOutputStream();
                // 3.对接
                byte[] buffer = new byte[1024];
                int len = 0;
                while ((len = is.read(buffer)) != -1) {
                    so.write(buffer, 0, len);
                    so.flush();
                }
                so.close();
                is.close();
            }

         }
  • 下载文件(zip,exe,mp3,mp4……..)
public class GServlet extends HttpServlet {

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

                // 设置响应正文类型
                String type = getServletContext().getMimeType("sss.zip");
                response.setContentType(type);
                // 设置相应头,提示用户保存下载名称
                response.setHeader("Content-Disposition",
                        "attachment;filename=apache-tomcat-7.0.42-src.zip");

                InputStream is = getServletContext().getResourceAsStream(
                        "WEB-INF/apache-tomcat-7.0.42-src.zip");

                OutputStream os = response.getOutputStream();

                byte[] buffer = new byte[1024];
                int len = 0;
                while ((len = is.read(buffer)) != -1) {
                    os.write(buffer, 0, len);
                    os.flush();
                }
                os.close();
                is.close();
            }
        }

注意:

1.设置响应正文类型,
String type = getServletContext().getMimeType("sss.zip");
            response.setContentType(type);
2.提示用户下载保存名称
response.setHeader("Content-Disposition",
                        "attachment;filename=apache-tomcat-7.0.42-src.zip");
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值