• Java Servlet实现下载文件


    一.配置servlet

    在WebContent(以前的eclipse版本是WebRoot)文件夹下,有一个web.xml

    修改web.xml ,加入以下代码

     <servlet>
         <servlet-name>helloservlet</servlet-name>
         <servlet-class>my.helloservlet</servlet-class>
       </servlet>    
      <servlet-mapping>
         <servlet-name>helloservlet</servlet-name>
         <url-pattern>/download</url-pattern>
      </servlet-mapping>

    格式就是这样的:

    <servlet>  
        <servlet-name>Servlet的名称(自己起的,不要重复)</servlet-name>  
        <servlet-class>Servlet的类路径(xx.xx.xx.xxservlet)</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>Servlet的名称(与上面的一样)</servlet-name>  
        <url-pattern>/url名字(自己起的,不要重复,注意/,不能丢)</url-pattern>  
    </servlet-mapping>   

    这个配置是为了把输入的/url和创建的servlet绑定到一起,意思是我们访问 /url名字 实际上就是在访问这个helloservlet类

    PS:MyEclipse(收费的)会在servlet创建好时自动帮你在web.xml中配置好,但是Eclipse并不会,所以需要我们自己配置


    二.实现输入QQ号,查询头像的功能

    index.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ page import="java.text.*"  %>
        <%@ page import="java.util.*"  %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
       <form method="get" action="download">
           输入QQ号
           <input type="text" name="qq"/><br/>  
           <input type="submit" value="查询">
       </form>
    </body>
    </html>

    这里action因为之前配置了web.xml,所以download就代表指向helloservlet.java这个文件

    这里也可以写成action=helloservlet,是一样的

    helloservlet.java ——doGet方法:

    在D盘image文件夹下存放头像图片,通过获取参数,然后找到本地图片文件,循环输出给浏览器

    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    	{
    		String qq=request.getParameter("qq");//取得参数
    		String filename=qq+".png";
    		
    		//以文件格式下载
    		/*response.setHeader("Content-Disposition", "attachment;filename="+filename);
    		response.setContentType("application/octet-stream");*/ 
    		
    		//图片png形式下载
    		response.setContentType("image/png");
    		
    		response.setCharacterEncoding("UTF-8");
    		
    		File DirFile=new File("d:/image");
    		File imageFile=new File(DirFile,filename);
    		FileInputStream filestream=new FileInputStream(imageFile);
    		
    	    OutputStream streamOut=response.getOutputStream();
    	    byte[] buf=new byte[4096];
    	    while(true)   //循环输出
    	    {
    	    	int n=filestream.read(buf);
    	    	if(n<=0)
    	    		break;
    	    	
    	    	streamOut.write(buf,0,n);
    	    	streamOut.flush();
    	    }
    	    
    	    filestream.close();
    	    streamOut.close();
    	}


    效果如图所示:

    输入111,点击查询,返回一个png图片




  • 相关阅读:
    红黑树以及与AVL树的区别
    yum安装mysql
    sql注入攻击
    http keep-alive
    csrf和xss
    点击事件跳转QQ 添加好友
    引入百度地图及出现的问题
    node 出现npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID npm ERR! errno ERR_TLS_CERT_ALTNAME_INVALID npm ERR! request to https://registry.cnpmjs.org/vue-cli failed, reason:
    正则表达式校验-大于0的所有数,小数点后保留两位小数和正整数
    vue项目引入富文本编辑器(回显)
  • 原文地址:https://www.cnblogs.com/kevinWu7/p/10163493.html
Copyright © 2020-2023  润新知