淺談servlet與jsp的關系


      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請求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM