hello2部分源碼解析
先放代碼:GreetingServlet.java
/**
* Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
*
* You may not modify, use, reproduce, or distribute this software except in
* compliance with the terms of the License at:
* https://github.com/javaee/tutorial-examples/LICENSE.txt
*/
package javaeetutorial.hello2;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* This is a simple example of an HTTP Servlet. It responds to the GET method of
* the HTTP protocol.
*/
@WebServlet("/greeting")
public class GreetingServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setBufferSize(8192);
try (PrintWriter out = response.getWriter()) {
out.println("<html lang=\"en\">"
+ "<head><title>Servlet Hello</title></head>");
// then write the data of the response
out.println("<body bgcolor=\"#ffffff\">"
+ "<img src=\"resources/images/duke.waving.gif\" "
+ "alt=\"Duke waving his hand\">"
+ "<form method=\"get\">"
+ "<h2>Hello, my name is Duke. What‘s yours?</h2>"
+ "<input title=\"My name is: \" type=\"text\" "
+ "name=\"username\" size=\"25\"/>"
+ "<p></p>"
+ "<input type=\"submit\" value=\"Submit\"/>"
+ "<input type=\"reset\" value=\"Reset\"/>"
+ "</form>");
String username = request.getParameter("username");
if (username != null && username.length() > 0) {
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/response");
if (dispatcher != null) {
dispatcher.include(request, response);
}
}
out.println("</body></html>");
}
}
@Override
public String getServletInfo() {
return "The Hello servlet says hello.";
}
}
對裏面的部分代碼分析:
String username = request.getParameter("username"); //獲取通過URL或者form傳遞過來的數據並賦值給username
if (username != null && username.length() > 0) { //對數據進行驗證,滿足不為空和長度大於0的條件
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/response");
//獲取jsp上下文裏邊存儲了各變量的信息(值),把一個命令發送到瀏覽器,讓瀏覽器對指定的URL提出請求(此處的URL只能使用絕對路徑)
if (dispatcher != null) {
dispatcher.include(request, response); //如果接收到的客戶端的請求不為空時,記錄保留request和response,以後不能再修改response裏表示狀態的信息。
}
}
hello2部分源碼解析