码迷,mamicode.com
首页 > 编程语言 > 详细

【Head First Servlets and JSP】迷你MVC:JarDownload的完整实现

时间:2017-06-01 00:27:22      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:download   etc   .com   htm   ext   code   for   set   exception   

1、首先,写一个download.html放至D:\apache-tomcat-7.0.77\webapps\JarDownload-v1。

<!DOCTYPE HTML>
<html>
    <body>
        <form action="JarDownload.do" method="get">
            <br />
            提取码:<input type="text" name="passwd" /><br />
            <br />
            <input type="submit" />
        </form>
        
        <br />
        <p>提取码为123456。</p>
    </body>
</html>

 

2、启动tomcat,并通过浏览器测试页面。

先执行命令行指令D:\apache-tomcat-7.0.77\bin>startup.sh

然后打开浏览器,输入URL:http://localhost:8080/JarDownload-v1/download.html

技术分享

 

3、编写web.xml并测试,放至D:\apache-tomcat-7.0.77\webapps\JarDownload-v1\WEB-INF,最好重启一下tomcat。

<?xml version="1.0" encoding="ISO-8859-1" ?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">

    <servlet>
        <servlet-name>Test</servlet-name>
        <servlet-class>com.example.web.JarDownload</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <url-pattern>/JarDownload.do</url-pattern>
    </servlet-mapping>

</web-app>

 

4、准备一个测试Jar包,放在D:\apache-tomcat-7.0.77\webapps\JarDownload-v1

 

5、编写全名为com.example.web.JarDownload的Servlet,编译成.class文件后部署到D:\apache-tomcat-7.0.77\webapps\JarDownload-v1\WEB-INF\classes\com\example\web

package com.example.web;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class JarDownload extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        resp.setContentType("application/jar"); // 想让浏览器知道的事情

        ServletContext ctx = getServletContext();
        InputStream is = ctx.getResourceAsStream("/hello.jar");

        int read = 0;
        byte[] bytes = new byte[1024];

        OutputStream os = resp.getOutputStream();
        while ((read = is.read(bytes)) != -1) {
            os.write(bytes, 0, read);
        } // 把JAR包先读到内存里再转写到输出流中。
        os.flush();
        os.close();
    }
}

 

6、最后,测试一下能否通过网页下载这个Jar包。

技术分享

 

7、经过检查,发现JarDownload.do的的确是hello.jar(只是名称不同罢了),但是文件名却是url-pattern,修改一下html和web.xml就可以了。

技术分享

这里体现了把逻辑名映射到servlet文件的好处。

【Head First Servlets and JSP】迷你MVC:JarDownload的完整实现

标签:download   etc   .com   htm   ext   code   for   set   exception   

原文地址:http://www.cnblogs.com/xkxf/p/6926216.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!