Servlet Lifecycle
methods
さぎょうげんり
WASがサーブレット要求を受信した場合は、そのサーブレットがメモリ内にあることを確認します.
if(メモリにありません){
- このテンプレートクラスをメモリに格納(コンストラクタを呼び出す)
- Init()メソッドの実行
}
- サービス()メソッドの実行->リクエストの受信時に、応答する必要があるすべてのコンテンツをサービスメソッドに保存する必要があります.
package examples;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class LifecycleServlet
*/
@WebServlet("/LifecycleServlet")
public class LifecycleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LifecycleServlet() {
System.out.println("LifecycleServlet 생성");
// TODO Auto-generated constructor stub
}
public void init(ServletConfig config) throws ServletException {
System.out.println("init 호출");
}
public void destroy() {
System.out.println("destroy 호출");
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("service 호출");
}
}
doGetとdoPostの利用
->service()メソッドrequestメソッドに従ってdoGet、doPost、...じっこうかんすう
クライアントの要求がGET/POSTの場合、独自のdoGet/doPost(request,response)メソッドが呼び出されます.
ex)該当するテンプレートに直接URLアドレスを入力するか、リンク->GETをクリックしてサーバに要求を送信する
->呼び出しサービス()呼び出しdoGet()メソッド
package examples;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
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("/LifecycleServlet")
public class LifecycleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LifecycleServlet() {
System.out.println("LifecycleServlet 생성");
// TODO Auto-generated constructor stub
}
public void init(ServletConfig config) throws ServletException {
System.out.println("init 호출");
}
public void destroy() {
System.out.println("destroy 호출");
}
//service() 메서드 비활성화
// protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// System.out.println("service 호출");
// }
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head><title>form</title></head>");
out.println("<body>");
out.println("<form method='post' action='/firstweb/LifecycleServlet'>"); //form: action의 url으로 method를 요청한다는 의미
out.println("name : <input type='text' name='name'><br>");
out.println("<input type='submit' value='ok'><br>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
out.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
String name = req.getParameter("name"); //request의 요청 정보로부터 name값을 가져옴
out.println("<h1> hello " + name + "</h1>");
out.close();
}
}
Reference
この問題について(Servlet Lifecycle), 我々は、より多くの情報をここで見つけました https://velog.io/@oliviarla/Servlet-Lifecycleテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol