毛哥的快樂生活 二十一章 讓Servlet理解使用者的需求

w39發表於2021-09-09

本章原始碼:

程式是幹啥的

還記得最開始的程式嗎,無非是輸出。

System.out.println("Hello World");

此時使用者的請求只有一個目標,就是這個程式,輸出也是固定的內容。

但是在現實世界中,使用者的請求,可能是很複雜的。而使用者期望得到的結果,也是個性化的。個性化的結果就來自於個性化的要求。

所以程式就是,接收輸入,理解輸入,計算結果,輸出結果。

OK,如下就是:

public static void main(String[] args) {
		//1獲取輸入
        Scanner input=new Scanner(System.in);
        double num1,num2;
        System.out.print("請輸入第1個數字:");
        num1=input.nextDouble();
        System.out.print("請輸入第2個數字:");
        num2=input.nextDouble();
        //2理解輸入
        //..有什麼好理解的,兩個數字
        //3計算結果
        double sum=num1+num2;
        //4輸出結果
        System.out.println(sum);
        input.close();    //關閉input
	}

Servlet是幹啥的

Servlet乾的事情比較專業一點,就是專門接收使用者透過瀏覽器發出的請求,然後返回結果的。

OK,之前已經瞭解如何輸出了,那麼Servlet如何獲取使用者的請求資訊呢。

毛哥仔細觀察了這個方法:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		PrintWriter out = resp.getWriter();//從響應物件裡面獲取一個PrintWriter,有點像打字機
		out.println("<div>In the futurem, you will thank youself for the fighting today</div>");//英語不錯
	}

resp是用來向瀏覽器輸出的,那req是幹嘛的?req是HttpServletRequest型別的物件,不就是代表請求嗎。然後輸入req.(會自動提示該物件具備的方法)如下圖:

圖片描述

果然有一個req.getParameter方法,應該就是獲取瀏覽器提交的請求引數的。

瀏覽器的請求引數從何而來

終於走到問題的關鍵了,使用者透過瀏覽器中的動態網頁發起請求,但是引數怎麼傳遞給Servlet呢。

不像Java語言,可以將引數放在函式里。此時就要從日常的觀察中得出一些提示了。

毛哥百度了下servlet,點選百度一下之後,發現瀏覽器位址列變為下面的東西,發現wd=servlet了嗎?


嗯,再試下html,發現瀏覽器位址列變為下面東西,發現wd=html了嗎

%2FC2elkFCpwxAJPOsBFU&rqlang=cn&rsv_enter=0&rsv_sug3=16&rsv_sug1=15&rsv_sug7=100&rsv_sug2=0&inputT=1522&rsv_sug4=1522

也就是說,瀏覽器可以透過在請求地址後面新增引數,將引數傳遞給動態網頁的處理程式。

嘗試傳遞引數

我們在上一章的NoticeSite下面新增一個ParamterReceiveServlet,專案結構如圖:

圖片描述

程式碼如下:

//測試接收引數的Servlet
@WebServlet("/ParamterReceiveServlet")
public class ParamterReceiveServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//獲取一個名字叫name的瀏覽器輸入引數
		String input=req.getParameter("name");
		String output="你好:"+input;
		//輸出
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter out = resp.getWriter();
		out.println(output);
	}
}

重啟伺服器,位址列輸入:,結果如下:

圖片描述

毛哥的暢想

大吉大利,今晚吃雞!

好像眼前所有的障礙都掃除了啊。

現在可以用Servlet接收使用者的輸入,然後透過Java語言動態組裝html字串後返回給使用者。

明天,就可以叫上小范妹子,分工協作,開始研發。

嗯,自己竟然如此優秀,進步之快令人髮指。

努力後的夜晚往往是酐睡。

還有什麼,比奮鬥進取的日子更美麗呢。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/854/viewspace-2821405/,如需轉載,請註明出處,否則將追究法律責任。

相關文章