Programming Language/JAVA
[Servlet/서블릿] What is a Servlet? / Methods in the Servlet lifecycle / Servlet operation process
나수비니
2023. 11. 10. 17:04
728x90
1. FirstServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet {
@Override
public void init() throws ServletException{
System.out.println("메시지 호출");
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("메소드 호출.");
}
@Override
public void destroy() {
System.out.println("destroy 메소드 호출.");
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" id="WebApp_ID" version="5.0">
<servlet>
<servlet-name>aaa</servlet-name>
<servlet-class>sec01.ex01.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>aaa</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
</web-app>
Output
2. SecondServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SecondServlet extends HttpServlet {
@Override
public void init() throws ServletException{
System.out.println("메시지 호출");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException{
System.out.println("doGet 메소드 호출>>>");
}
@Override
public void destroy() {
System.out.println("destroy 메소드 호출>>>");
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" id="WebApp_ID" version="5.0">
<servlet>
<servlet-name>aaa</servlet-name>
<servlet-class>sec01.ex01.FirstServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>bbb</servlet-name>
<servlet-class>sec01.ex01.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>aaa</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>bbb</servlet-name>
<url-pattern>/second</url-pattern>
</servlet-mapping>
</web-app>
When a request is made with the mapping name "/second"
Output
3. Life Cycle of a Servlet
There are three life cycle methods of a Servlet :
- init()
- The Servlet.init() method is called by the Servlet container to indicate that this Servlet instance is instantiated successfully and is about to put into service.
@Override public void init() throws ServletException{ System.out.println("메시지 호출"); }
- service()
- The service() method of the Servlet is invoked to inform the Servlet about the client requests.
- This method uses ServletRequest object to collect the data requested by the client.
- This method uses ServletResponse object to generate the output content.
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ System.out.println("doGet 메소드 호출>>>"); }
- req is the ServletRequest object which encapsulates the connection from client to server
- resp is the ServletResponse object which encapsulates the connection from server back to the client
- destroy()
- The destroy() method runs only once during the lifetime of a Servlet and signals the end of the Servlet instance.
@Override public void destroy() { System.out.println("destroy 메소드 호출>>>"); } }
4. @WebServlet
@WebServlet annotation is used to map the servlet with the specified name.
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 ThirdServlet
*/
@WebServlet("/third")
public class ThirdServlet extends HttpServlet {
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
System.out.println("ThridServlet init 메소드 호출.");
}
/**
* @see Servlet#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("ThirdServlet doGet 메소드 호출.");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("ThirdServlet destroy 메소드 호출.");
}
}
Example of simple servlet by annotation
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("<html><body>");
out.print("<h3>Hello Servlet</h3>");
out.print("</body></html>");
System.out.println("ThirdServlet doGet 메소드 호출.");
}
Output
5. Requesting a servlet using the <form> tag
The following picture depicts that workflow with Java servlet on the server side:
Reference
https://www.codejava.net/java-ee/servlet/handling-html-form-data-with-java-servlet