首先說說我們的Tomcat7.0的目錄結構:
包括目錄:
bin
conf
lib
logs
temp
webapps
work
bin檔案:
存放各種平台下啟動和關閉Tomcat的指令檔。
startup.bat是windows下啟動tomcat的檔案。
shutdown.bat是關閉tomcat的檔案。
conf目錄:
Tomcat的各種設定檔,tomcat啟動時需要讀取的設定檔:server.xml
lib目錄:
存放Tomcat所需的各種jar檔案。
logs目錄:
存放Tomcat的記錄檔。
temp目錄:
臨時檔案目錄,用於存放Tomcat運行時的臨時檔案。
webapps目錄:
web應用的發布目錄,把java編寫的web應用或打包成的war格式的web應用檔案放入該目錄下,就能通過Tomcat伺服器訪問了。
work目錄:
Tomcat把JSP檔案編譯產生Servlet檔案存放在這個目錄下。
資料傳送流程:
java servlet:
我們要在webapps目錄下建立一個我們javaweb項目的目錄結構test_servlet:
WEB-INF/classes web.xml lib
lib檔案:存放java包,資料庫驅動程式等等。
classes檔案:存放已編譯好的類。
Web.Xml:配置一些資訊,例如Servlet的配置,名字,路徑等,告訴我們的Tomcat我們使用的哪個Servlet。
我們依次來寫:
servlet代碼:
//引入java的包。import javax.servlet.http.*;import java.io.*;import javax.servlet.*;//第一個Servlet程式。public class LoginServlet extends HttpServlet{//指定調用哪個servlet。//get提交和post提交兩種方式。public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{//取得用戶端的資料。String username = request.getParameter("username");String password = request.getParameter("password");System.out.println("username" + username);System.out.println("password" + password);//向瀏覽器上寫資料。可以有流。字元流。//setContext設定響應的內容類型。設定為html類型或者中文。response.setContentType("text/html;charset=GB18030");//response.getWriter().println("Login Success!!!");//response.getWriter().println("登入成功!!!");response.getWriter().println("<html>");response.getWriter().println("<head>");response.getWriter().println("<title>登入資訊</title>");response.getWriter().println("</head>");response.getWriter().println("<body>");response.getWriter().println("歡迎【" + username + "】登入成功!!!");response.getWriter().println("</body>");response.getWriter().println("</html>");}//採用post的提交方式。public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{doGet(request,response);}}
雖然我們引入了jar包,但是程式是否能從找到tomcat的servlet jar包,我們需要配置一下使用者的環境變數,把lib\servlet-api.jar包配置到classpath變數。當然tomcat也是java編碼的,所以我們也配置一下JAVA_HOME變數,可以在tomcat的批處理命令startup.bat中進行配置,set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43。
然後把這個java檔案編譯成.class 檔案,放到classes檔案夾中。
html代碼:
<html><head><title>登入</title></head><body> <!--這是絕對路徑--><!--相對路徑寫法:action="LoginServlet"--><form action="http://127.0.0.1:8080/test_servlet/LoginServlet">使用者:<input type="text" name="username"><br>密碼:<input type="password" name="password"><br><input type="submit" value="登入"></form></body></html>
Web.Xml :
<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <servlet><servlet-name>MyServlet</servlet-name><servlet-class>LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/LoginServlet</url-pattern></servlet-mapping></web-app>
啟動Tomcat就可以執行成功。
下面是servlet的調用過程,也可以用HTTPLook軟體來跟蹤:
作為一個java的初學者來說,開始一個servlet讓我很模糊,什麼是servlet呢?有道上說是servlet(小服務程式),學過了發現,也是26個英文字母的組合,其實說白了就是java代碼,但是因為他的用途,人們給他抽象總結了一個層次,叫做servlet,。就相當於縣長首先是人,再是縣長~,貌似搞得這兒複雜~不也是個幹活的麼~
同樣是網頁,.net開發的網頁和java開發的有什麼區別呢?.net中有沒有servlet?據說.cs檔案寫“servlet”就相當於servlet了。呵呵,有待更深的研究,加油!