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出来

原文地址:https://www.cnblogs.com/z1234/p/6107120.html