標籤: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的完整實現