zoukankan      html  css  js  c++  java
  • 【Head First Servlets and JSP】迷你MVC:JarDownload的完整实现

    1、首先,写一个download.html放至D:apache-tomcat-7.0.77webappsJarDownload-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.77in>startup.sh

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

    3、编写web.xml并测试,放至D:apache-tomcat-7.0.77webappsJarDownload-v1WEB-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.77webappsJarDownload-v1

    5、编写全名为com.example.web.JarDownload的Servlet,编译成.class文件后部署到D:apache-tomcat-7.0.77webappsJarDownload-v1WEB-INFclassescomexampleweb

    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文件的好处。

  • 相关阅读:
    爬楼梯
    字母异位词分组
    发射子弹过程
    删除元素
    删除排序数组中的重复项
    JAVA编程-------------9、查找1000以内的完数
    JAVA-------------8、计算a+aa+aaa+.....
    JAVA编程----------7、统计一段字符串中的英语字母数,空格数,数字和其他字符数
    JAVA编程---------6、最大公约数和最小公倍数
    JAVA编程----------5、利用条件运算符的嵌套来完成:成绩>=90(A) 60-89(B) 60分以下(C)
  • 原文地址:https://www.cnblogs.com/xkxf/p/6926216.html
Copyright © 2011-2022 走看看