아무거나

[Servlet] 간단 예제 본문

Java & Kotlin/JSP & Servlet

[Servlet] 간단 예제

전봉근 2019. 6. 12. 10:25
반응형

Servlet 란?

- 동적 웹어플리케이션 컴포넌트

- java 확장자

- 클라이언트의 요청에 동적으로 작동하고, 응답은 html을 이용

- java thread이용하여 동작

- MVC패턴에서 Controller로 이용됨.

 

[이클립스 기준]

1. Project 오른쪽 클릭 -> new -> dynamic web project

   - 계속 next누르고 마지막에 Generate web.xml deployment descriptor 체크하고 finish

 

2. 서블릿 생성

   - 프로젝트 오른쪽클릭 -> new -> servlet 클릭하여 생성

     # 패키지 : com.javalec.ex

     # 클래스 : HelloWorld

     # 서블릿은 일반 클래스와 달리 슈퍼클래스로 HttpServlet을 기본적으로 상속받고있다.

 

     ** 다 입력 후 next

   - 매핑하는곳 -> 기본적으로 클래스명하고 똑같이 되어있다.

   - URL 매핑하는곳을 확인하자(URL접근할때 경로이다.) 그리고 next

   - 기본적으로 사용할 메소드를 선택 후 finish

 

3. 실행 확인

   [Helloworld.java]

/**
 * Servlet implementation class HelloWorld
 */
@WebServlet("/HWorld") // url mapping
public class HelloWorld extends HttpServlet { // HttpServlet를 상속
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloWorld() {
		super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    System.out.println("HellowWorld~~~");
    	// response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	doGet(request, response);
    }
}

    - http://localhost:8080/helloworld/HWorld 로 접근하자.

 

4. web.xml에 서블릿 맵핑

   너무 길고, 보안에 노출되어 있는 경로를 간단하게 매핑하는 것.

 

   - 기존 경로 : http://localhost:8090/helloworld/servlet/com.javalec.ex.HelloWorld  // 주소가 너무 길고 정보가 노출되었다.

   - URL 매핑 경로 : http://localhost:8090/helloworld/HWorld

 

5. web.xml 매핑 방법

   - 소스에 url mapping 애노테이션 제거

     [HelloWorld.java]

 ....

//@WebServlet("/HWorld") // url mapping
public class HelloWorld extends HttpServlet { // HttpServlet를 상속

....

 

   - WebContent경로에 있는 web.xml파일

     [web.xml]

........

  <display-name>helloworld</display-name>
  <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>

  <servlet>
    <servlet-name>helloworld</servlet-name> <!-- 임의의 이름을 만든다 -->
    <servlet-class>com.javalec.ex.HelloWorld</servlet-class> <!-- 매핑할 클래스 파일명을 패키지명을 포함하여 정확히 입력 -->
  </servlet>
  <servlet-mapping>
    <servlet-name>helloworld</servlet-name>
    <url-pattern>/hw</url-pattern> <!-- servlet-class의 클래스를 매핑할 임의의 이름을 입력한다. 주의할점은 /로 시작해야된다 -> 웹 브라우저 접근경로 -->
  </servlet-mapping>  
</web-app>

** helloworld클래스가 실행되면 /hw로 실행되라.

- http://localhost:8090/helloworld/hw 로 접속해서 확인하자. 

 

6. 어노테이션을 이용한 서블릿 매핑 방법

   - 소스에 url mapping 애노테이션 추가

     [HelloWorld.java]

....
@WebServlet("/HWorld") // url mapping
public class HelloWorld extends HttpServlet { // HttpServlet를 상속
....

   - http://localhost:8090/helloworld/HWorld 로 접속

 

 

** JSP는 HTML 코드 안에다가 JSP코드를 넣고 Servlet는 JAVA파일이므로 class의 속성 super class를 가질 수 있고 확장자가 java이다.

   Servlet는 반드시 매핑해야된다.​ 

 

참고: https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-jsp-%EA%B0%95%EC%A2%8C/dashboard

반응형

'Java & Kotlin > JSP & Servlet' 카테고리의 다른 글

[JSP] 학습 1  (0) 2019.12.21
[Servlet] 서블릿 학습(4)  (0) 2019.12.21
[Servlet] 서블릿 학습(3)  (0) 2019.12.21
[Servlet] 서블릿 학습(2)  (0) 2019.12.21
[Servlet] 서블릿 학습 (1)  (0) 2019.12.21
Comments