servlet是用java語言編寫的,是一個java類。主要功能是用來接受、處理客戶端的請求,並把處理結果返回到客戶端顯示。Jsp是servlet發展后期的產物。在沒有jsp之前,servlet利用輸出流動態生成整個HTML頁面,輸出內容包括每一個HTML標簽和每個在HTML頁面中出現的內容。HTML文件包含大量標簽和大量靜態文本及格式等,以及所有的表現邏輯,包括布局、色彩及圖像等。這些內容都必須耦合在java代碼中,這樣就導致servlet開發效率低下,令人不勝其煩。jsp出現后彌補了不足,因為jsp文件是通過在標准的HTML頁面中插入java代碼形成的。其靜態的部分無需java程序控制,只有那些需要從數據庫讀取並根據程序動態生成信息時,才使用java腳本控制。所以jsp技術出現后,主要用jsp文件來動態生成HTML文件,然后返回客戶端顯示。現在的servlet,當需要將整個頁面作為結果返回時,不再由其自己去處理,而是調用jsp文件。
下面開發部署一個簡單的servlet程序來展示:
1.創建處理請求的servlet文件:
1 package com.servlet.study; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 public class HelloWorldServlet extends HttpServlet { 12 @Override 13 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 14 super.doGet(req, resp); 15 } 16 @Override 17 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 18 resp.setContentType("text/html;charset=UTF-8"); 19 req.setCharacterEncoding("UTF-8"); 20 String userName = req.getParameter("username"); 21 String passWord = req.getParameter("password"); 22 PrintWriter out = resp.getWriter(); 23 out.print("<html>"); 24 out.print("<head>"); 25 out.print("<title>Helloworld</title>"); 26 out.print("</head>"); 27 out.print("<body>"); 28 out.print("<hr>"); 29 out.println("The username is "+userName); 30 out.println("The password is "+passWord); 31 out.print("</body>"); 32 out.print("</html>"); 33 } 34 }
2.創建HTML文件:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>用戶登錄頁面</title> 6 </head> 7 <body> 8 <h1 align="center">登錄系統</h1><hr> 9 <form action="helloworld_servlet" method = "post">//表單的action其實指明了servlet的url 10 <table> 11 <tr> 12 <td>用戶名</td> 13 <td><input type="text" name="username"></td> 14 </tr> 15 <tr> 16 <td>密碼</td> 17 <td><input type="password" name="password"></td> 18 </tr> 19 <tr> 20 <td><input type="reset" value="重填"></td> 21 <td><input type="submit" value="提交"></td> 22 </tr> 23 </table> 24 </form> 25 </body> 26 </html>
3.在web.xml中配置servlet:
1 <servlet> 2 <servlet-name>HelloWorldServlet</servlet-name> 3 <servlet-class>com.servlet.study.HelloWorldServlet</servlet-class>//實現類 4</servlet> 5 <servlet-mapping>//映射 6 <servlet-name>HelloWorldServlet</servlet-name> 7 <url-pattern>/helloworld_servlet</url-pattern>//“/”是必須的 8 </servlet-mapping>
注:]servlet類必須繼承HttpServlet類,而且得重寫doGet、doPost方法,並創建out對象。doGet方法是HttpServlet類中處理get請求的方法,doPost處理post請求。在表單中聲明method,並在servlet類中編寫相對應方法即可,本例特為post請求。