zoukankan      html  css  js  c++  java
  • Servlet下载文件和http响应

    下载文件等:

    1、得到公共的内容ServletContext sc = this.getServletContext();

    2、在链接名字后面加个?   

    一个参数?参数1=

    两个参数?参数1=&参数2=

    <a href=”DownLoadServlet?fileName=正则表达式.html”>下载正则表达式.html</a>

    3、得到参数   String fileName = request.getParameter(“fileName”);

       解决乱码:

       String name = new String(fileName.getBytes(“ISO-8859-1”),”utf-8”);

    4、判断文件

       String path = sc.getRealPath(“/ppt/正则表达式.ppt”);

    5、读文件

       FileInputStream fis = new FileInputStream(new File(path));

       ServletOutputStream out = response.getOutputStream();

       byte[] buf = new byte[1024];

       Int length = 0;

       While((length = fis.read(buf)) != -1){

            Out.write(buf,0,length);

       }

       Out.flush();

     

       InputStream input = sc.getResourceStream(/img/图片.jpg);

     

       URL url = sc.getResource(/img/图片.jpg);

       String str = url.getFile();

       String[] ary = str.split(/);

       System.out.println(ary[ary.length-1]);

     

       Set set = sc.getResourcePaths(/); //得到文件夹

       Classesbulid里面

       

    6、告诉浏览器用下载的方式打开

       response.setHeader(“ Content-Disposition”,”attachment;filename=正则表达式.html”);

       换成当前时间 attachment;filename=”System.currentmilis”+.html

    Http响应

    1、响应头:浏览器传给服务器,浏览器应该有的东西

    2、设置状态码:response.setStatus(230);

                   response.setStatus(response.SC_NOT_FOUND);

    3、设置状态信息:response.sendError(“找不到资源...”);

       printWriter pw = response.getWriter();

       response.setContextType(“text/html;charset=utf-8”);

    4302:文件转移位置与location一起使用

       response.setStatus(302);

       response.setHeader(“Location”,”路径”);

       ========重定向的路径:response.sendRedirect(路径”);

    5、请求的文件出现缓存——发送响应头的头部信息

       1)、没有修改的文件,从缓存中取——效率高

       2)、修改的文件中,出现上一次修改的时间

    6、自动刷新  

       response.setHeader(“Refresh”,”5;URL=/myPage/login.html”);

    数据库中limit ?,?; 始终在最后

    客户端=浏览器 请求头 浏览器告诉服务器浏览器的状态,想要服务器如何返回请求的信息

    响应头 服务器告诉浏览器服务器的状态

    默认情况下使用HTTP协议的GET方法提交请求------------a标签提交请求、form表单、直接     输入地址并回车

    GETPOST提交区别:

    1、文本                                  文本、二进制

    2、不超过255字符                        没有限制(理论)——防止传输恶意文件

    3、一部分显示在浏览器地址栏              作为消息体,不可见

    4、缓存在浏览器URL历史状态中            不会被浏览器缓存

     

    静态图片等:GET方法

    发送大数据、上传文件、发送保密信息:POST方法

     

    Request.getRemoteAddr():得到远程地址

    查询自己的IP

    1、设置

    2、以太网

    3、更改适配器

    4、以太网 internet 4 属性中 的IP

    判断使用的浏览器:

        String ueragent = request.getHeader(“Uer-Agent”);

    ueragent.indexOf(“MSIE”);——IE浏览器

    Indexof:判断字符串中字符第一次出现的位置

    Referer:防盗链——盗链时结果为Null

    请求的为post得到参数:用request.setCharacterEncoding(“utf-8”);

    请求的为get得到参数:需要转码

    <a href=”DownLoadServlet?fileName=正则表达式.html”>下载正则表达式.html</a>得到参数   String fileName = request.getParameter(“fileName”);

    解决乱码:

    String name = new String(fileName.getBytes(“ISO-8859-1”),”utf-8”);

    下拉菜单:

    select中得到的是value中的值

    多选框时:用request.getParameterValues(‘name’);

    Enumeration<String> enums = request.getParameterNames();

    While(enums.hasMoreElements){

    String name = enums.nextElement();

    System.out.print(request.getParameter(name));

    }

    form上传时enctype默认为传输字符;上传文件等:enctype=”multipart/form-data”;

    转发和重定向:转发地址不会改变;只发送一次请求

    转发:request.getRequestDispatcher(“/success.html”).foward(request,response);

          Forward();只会打印跳转的地址中的内容

          Include();会打印地址中的内容,接着打印之后的内容

    Forward();——共享request,response

    setAttribute:已经响应完,则不能得到值

    超链接:参数中有中文,则需要转码

    Form表单中默认为get方法提交

     

    重定向:两次请求(客户端浏览器处理) sendRedirect();  setAttribute中的值不能get出来

    派发:一次请求(服务器之间处理)  getRequestDispatchar().forward(request,response);   setAttribute中的值可以get出来

  • 相关阅读:
    djangorestframework的源码认证流程
    centos7 docker更换源地址(阿里云)
    vue 递归 无限极
    Linux文件属性及如何改变文件属性和权限
    centos7 安装docker
    centos7 mysql5.7 忘记密码
    git push 单个文件时超过100M报错,解决方案
    python中的依赖包--导出与安装
    18-----cmdb需求规划以及表结构设计
    17-----vue前端权限管理
  • 原文地址:https://www.cnblogs.com/z1234/p/6107120.html
Copyright © 2011-2022 走看看