控制層 Servlet【JavaEE】


Servlet是用Java語言編寫的服務器端程序,是由服務器端調用執行、按照Servlet自身規範編寫的Java類

Servlet可以處理客戶端傳來的HTTP請求,並返回響應。

一、Servlet編程接口

設計Servlet要在Servlet框架約束下進行,並遵守其中所要求的規則。

Servlet框架是由javax.servletjavax.servlet.http兩個Java包組成。

功能

類和接口

Servlet實現

javax.servlet.http.HttpServlet

Servlet異常

javax.servlet.ServletException

請求和響應

javax.servlet.ServletRequestjavax.servlet.ServletResponse

javax.servlet.ServletInputStreamjavax.servlet.ServletOutputStream

javax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletResponse

會話跟蹤

javax.servlet.http.HttpSession

Servlet上下文

javax.servlet.ServletContext

Servlet協作

javax.servlet.RequestDispatcher

二、設計Servlet

設計Servlet需要繼承javax.servlet.http.HttpServlet類,其結構:

package …;//省略了包名
import …; //省略了導入包

public class Servlet類名稱 extends HttpServlet{
    public void init(){}
    public void doGet (HttpServletRequest request,HttpServletResponse response){}
    public void doPost(HttpServletRequest request,HttpServletResponse response){}
    public void destroy(){}
}

PS:Servlet的父類HttpServlet中包含重要方法:
    doGet():當請求的類型是“get”時,調用該方法。
    doPost():當請求的類型是“post”時,調用該方法。
在設計時只需要重寫doGet()和doPost()方法即可,同時配置Servlet。

三、配置Servlet

Servlet只有配置後纔可以使用

配置有兩種方式 

在webxml配置:直接在源代碼中採用註釋配置,我們採用註釋配置Servlet

註釋配置:註釋配置Servlet,是在Servlet類定義的上方直接使用註釋標記“@WebServlet實現配置。

註釋配置格式

@WebServlet("/請求名稱")
public class 類名稱 extends HttpServlet {
    //實現代碼
}

四、使用樣例

/**
實現一個簡單的用戶登錄驗證程序,
如果用戶名是abc,密碼是123,則顯示歡迎用戶的信息,否則顯示“用戶名或密碼不正確”。

採用JSP頁面只完成提交信息和驗證結果的顯示,而驗證過程由Servlet完成。
兩者之間通過request(或HttpServletRequest)對象實現數據共享。
由提交頁面將數據傳遞給Servlet,
而Servlet獲取數據並實現驗證,根據驗證結果,轉向顯示驗證結果的頁面。
假設,組件之間共享數據的參數爲:username(用戶名稱)和userpwd(密碼)。
**/
系統需要設計3個組件。

//(1)登錄表單頁面:login.jsp
<%@ page  pageEncoding="UTF-8"%>
<html>
  <head><title>登錄頁面</title></head>
  <body>
   <form action="loginCheck" method="post">
       請輸入用戶名:<input type="text" name="username"/><br/>
       請輸入密碼:<input type="password" name="userpwd"/><br/>
   <input type="submit" value="登錄"/>
   <input type="reset"/>
   </form>
  </body>
</html>
//(2)處理登錄請求並驗證Servlet:LoginCheckServlet.java
package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/loginCheck")
public class LoginCheckServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;   
    public LoginCheckServlet() {
        super();       
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
    	String userName=request.getParameter("username");
	    String userPwd=request.getParameter("userpwd");
	    String info="";
	    if(("abc".equals(userName))&&"123".equals(userPwd)){
	    	info="歡迎你"+userName+"!"; 
	    }else{
	    	info="用戶名或密碼不正確!";
	    }
	    request.setAttribute("outputMessage", info);
	    request.getRequestDispatcher("/Info.jsp").forward(request,response);
   }
}
//(3)顯示提示的頁面:info.jsp
<%@ page  pageEncoding="UTF-8"%>
<html>
   <head><title>顯示結果頁面</title></head>  
   <body> <%=request.getAttribute("outputMessage") %> </body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章