JSP培訓(6)——使用Servlet作為控制器實現MVC模式

來源:互聯網
上載者:User
 

目標:l         初步理解MVC模式;l         掌握Servlet的編寫;l         使用MVC模式完成登入功能。主要內容:l         分析JSP+JavaBean模式存在的問題,並介紹JSP+JavaBean+Servlet模式,以及和MVC模式的關係;l         通過簡單一實例介紹Servlet的編寫、配置和運行;l         採用Servlet完成登入功能的控制。1、 JSP+JavaBean這種模式存在的問題?JSP的強大之處在與人互動,也就是完成輸入輸出的功能。但是在JSP+JavaBean這種模式中,JSP不僅僅完成輸入輸出的功能,還完成系統的控制功能(接收使用者請求,調用JavaBean,然後根據調用的結果,選擇介面對使用者進行響應)。所以在JSP發展的第三個階段中,把控制功能從JSP中分離出來,使用Servlet來實現,形成JSP+JavaBean+Servlet這種模式,JSP僅僅完成輸入和輸出,JavaBean完成處理,而Servlet完成控制。2、 JSP+JavaBean+ServletJSP負責輸入輸出,JavaBean負責實現商務邏輯(功能),Servlet完成控制。這種模式通常也被認為是MVC模式的一種實現。MVC模式把系統的商務邏輯、控制和輸入輸出進行分離,在開發應用的時候,可以單獨考慮某一部分,簡化開發。V,表示視圖,與人交戶的部分,M,表示模型,完成功能,C,表示控制器。JSP通常充當視圖,JavaBean是模型,Servlet作為控制器。3、 什麼是ServletServlet也是一種Web組件,從完成的功能上來說,與JSP是相同的。Servlet是純Java檔案,是特殊的Java類。Servlet與JavaBean有什麼區別呢?都是Java類,但是Serlvet可以接收使用者的請求,用戶端可以直接存取。但是JavaBean不能被用戶端直接存取,必須由JSP或者其他的Java檔案(包括Servlet)來調用。4、 執行個體:HelloServlet下面是一個Servlet,完成的功能是輸出一句話“Servlet測試!”。1)檔案編寫package servlet;// Servlet開發所需要的包import java.io.*;import javax.servlet.*;import javax.servlet.http.*; public class HelloServlet extends HttpServlet{   public void doGet(HttpServletRequest request,HttpServletResponse response) throw IOException,ServletException   {      response.setContentType(“text/html;charset=gb2312”);      PrintWriter out = response.getWriter();      out.print(“Servlet測試!”);   }}2)編譯需要把C:/Program Files/Apache Software Foundation/Tomcat 6.0/lib/servlet-api.jar配置到classpath中,然後編譯。3)配置在設定檔web.xml中寫。包括兩部分:聲明和訪問方式設定。聲明:<servlet>   <servlet-name>hello</servlet-name>   <servlet-class>servlet.HelloServlet</servlet-class></serlvet>訪問方式設定:<servlet-mapping>   <servlet-name>hello</servlet-name>   <url-pattern>/hello</url-pattern></servlet-mapping>5、 測試訪問:http://127.0.0.1:8080/ch6/hello6、 如何採用這種模式實現登入功能?介面介面和響應介面都不需要修改,JavaBean完成處理,也不需要改變,只是使用Servlet來替換原來的login-process.jsp,完成控制功能。1)參考代碼如下:package servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import javabean.*; public class LoginProcess extends HttpServlet{   public void doGet(HttpServletRequest request,HttpServletResponse response)     throws IOException,ServletException   {      // 第一步:擷取使用者的輸入資訊      String username = request.getParameter(“username”);      String userpass = request.getParameter(“userpass”);       // 第二步:調用JavaBean      User user = new User();      user.setUsername(username);      user.setUserpass(userpass);      boolean b = user.check();       // 第三步:選擇一個介面對使用者進行響應      String forward;      if(b)         forward = “success.jsp”;      else         forward = “failure.jsp”;      RequestDispatcher rd = request.getRequestDispatcher(forward);      rd.forward(request,response);   }}上面的代碼基本上展示了Servlet作為控制器的準系統。2)配置   <servlet>      <servlet-name>process</servlet-name>      <servlet-class>servlet.LoginProcess</servlet-class>   </servlet>   <servlet-mapping>      <servlet-name>process</servlet-name>      <url-pattern>/process</url-pattern>   </servlet-mapping>3)修改登入介面的action屬性<%@ page contentType="text/html;charset=gb2312"%>請登入<br><form name="form1" method="post" action="process">   使用者ID:<input type="text" name="username"><br>   口令:<input type="password" name="userpass"><br>       <input type="submit" value="登入"><input type="reset" value="重設"></form><%@ include file="contact.jsp"%>7、 測試回合訪問登入介面,輸入資訊,然後提交。這時候會報錯,提示請求方式不支援。需要在Servlet中增加如下方法:   public void doPost(HttpServletRequest request,HttpServletResponse response)     throws IOException,ServletException   {      doGet(request,response);   }因為JSP頁面中的請求方式為post,所以Servlet中需要提供doPost方法,方法的定義和doGet相同,這裡方法的實現只需要調用doGet方法即可。8、 Servlet的主要方法init方法,用於初始化;服務類方法:doGet方法和doPost方法destroy方法,釋放資源9、 生命週期伺服器接收到請求之後,會把請求資訊封裝成HttpServletRequest對象和HttpServletResponse對象。第一次訪問servlet的時候,載入類,建立對象,初始化(init方法),調用服務類方法(如果是get請求,調用doGet方法,如果是post請求,調用doPost方法)。後續訪問,直接調用伺服器類方法。卸載Servlet的時候,或者關閉伺服器的時候,調用destroy方法釋放資源。參考教材:《Java Web程式設計基礎教程》

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.