본문 바로가기
Programming | Study/JSP | Servlet

Servlet 연결하기 - web.xml 방식

by jinju 2021. 4. 22.

jsp 페이지에 servlet연결하기

servlet은 mvc형태에서 controller역할

 

전에 만들어뒀던 기본 html코드에 간단하게 web.xml연동

서블릿을 만들어 서버에 기능을 넣기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Jsp</title>
</head>
<body>
    <h1>JSP 홈페이지 메인화면!</h1>
    
    <ul>
    <li><a href="first.do">서블릿 연결하기</a></li>
    </ul>
    
</body>
</html>
cs

 

 

-패키지와 클래스 생성

생성한 일반 클래스에서 Servlet연결하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class BasicServlet extends HttpServlet{
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException{
            System.out.println("서버 요청");
            
            
            res.setContentType("text/html; charset=utf-8");
            PrintWriter out = res.getWriter();
            out.write("<html>");
            out.write("<body>");
            out.write("<h1>서블릿에서 반환한 내용 </h>");
            out.write("</body>");
            out.write("</html>");
            
    }
            
    
}
cs

-클래스에서 HttpServlet클래스를 상속받기 -> import javax.servlet.ServletException

-상속을 받은 후 Servlet으로 역할을 실행하기 위해 doGet(), doPost() 두 개의 메소드를 구현

-위 두개의 메소드 구현 시ServletException처리를 해줘야함

 

HttpServletRequest : 사용자가 보낸 데이터를 저장하는 객체 -> 데이터관련된 기능제공하는 객체

HttpServletResponse : 사용자(client)에게 응답할 정보를 가지고 있는 객체 
HttpServletResponse객체를 이용해서 응답 메세지 작성하기 

 

 

이제 생성된 서블릿 web.xml에서 등록하고  mapping하기

-<servlet></servlet>태그를 이용해서 등록

<servlet-name> : web.xml내부에서 사용하는 이름(변수명), 서블릿을 구별함
<servlet-class> : 등록할 서블릿의 경로와 이름 * 패키지명까지 작성

*위에 두태그가 없으면 실행안됨 

 

-<servlet-mapping></servlet-mapping> mapping해주기 등록된 서블릿을 주소와 맵핑

<servlet-name> : 등록한 서블릿의 servlet-name값을 가져와 사용
<url-pattern> : 연결된 주소의 명칭

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  
  <display-name>HelloJSP</display-name>
  <servlet>
  <servlet-name>first</servlet-name>
  <servlet-class>com.servlet.controller.BasicServlet</servlet-class>
  </servlet>
  
  
  <servlet-mapping>
  <servlet-name>first</servlet-name>
  <url-pattern>/first.do</url-pattern>
  </servlet-mapping>
  
  
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
cs

 

 

그러면 실행하고 끝!

콘솔창에서도 서버 요청한거 확인할 수 있음

 

 

+번외) 오류 알기

HTTP 상태 404는 주소값이 잘 못 되었다는 뜻

오타와의 싸움

 

댓글