카테고리 없음

Servlet이란?

최종군 2024. 9. 13. 22:23

서블릿이란 자바 기반의 웹 프로그램 개발을 위한 기술이다 

자바로 작성된 프로그램을 실행할 수 있는 서버 소프트웨어(톰캣)을 통해 

관리가 된다. 

즉 서블릿을 실행 시키기 위해서는 톰캣과 같은 서블릿 컨테이너가 필요하다 

 

동적인 페이지를 자바로 구현할 수 있게 도와주는 서버측 프로그램이다 

(Java로 html 구현)

 

</head>
<body>
        <h1>안녕? 서블릿!</h1>
       
        <h2>* Servlet</h2>
       
        <p>
            서블릿 : 웹 서비스를 위한 <b>자바 클래스</b>. 자바를 사용해서 웹을 만들기 위한 기술
            => 사용자의 요청을 받아서 처리하고 그에 해당하는 응답페이지를 만들어서
                 다시 사용자에게 전송하는 역할을 하는 클래스이다 (Controller) <br>
            => 웹에서 동적인 페이지를 자바로 구현할 수 있게 도와주는 서버측 프로그램 (Java로 HTML 구현)
        </p>
       
        <hr>                    
        <!--
            * 절대경로 : / 부터 작성 (/ => 루트경로)
             => 톰캣 서버 기준으로 ip주소: 포트번호 뒤에 요청한 url 주소를 붙여서 찾는다.
             ex) /1_servlet/views/requestTest_GET.html
             
             * 상대경로 : 현재 페이지의 url 주소에서 마지막/ 뒤에 요청한 url 주소를 붙여서 찾음.
                    => localhost:8888/1_servlet/요청한 url 주소                 
         -->                    
                           
        <h3><a href="views/requestTest_GET.html">Get 방식 테스트</a></h3>
       
       
        <h3><a href="views/requestTest_POST.html">Post 방식 테스트</a></h3>
   
       
   
</body>
</html>

 

 

 

 

WEB_INF 디렉토리 

WEBAPP 루트 디렉토리 아래에 위치한다 

용도로는 웹 애플리케이션의 내부 구성 파일을 포함하며 웹 애플리케이션의 

구조와 동작을 정의한다 

 

WEB_INF 디렉토리 : 클라이언트가 직접 접근을 할 수 없다 

다시 말하자면 웹 브라우저를 통해서 직접 접근할 수 없으면

오직 서블릿이나 JSP등 서버 측에서만접근이 가능하다

 

 

 


POST 방식 

 

request.setCharacterEncoding("UTF-8");

POST 방식의 경우 데이터를 처리하기 전에 인코딩이 필요하다 

이때 사용하는 것이 

setCharacterEncoding 메소드이다 

예시)

- setCharacterEncoding("UTF-8")

 

 

method="post"

 <form action="/1_servlet/test2.do" method="post">

 

form action= /1_servlet/test2.do


GET 방식 :

 

 

  <form action="/1_servlet/test.do" method="get">
        <div>
        <label for="userName">이름 : </label>
        <input type="text" id="userName" name="userName">
        </div>

 

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

request에는 요청 시 전달된 내용들이 담겨져 있다 

사용자가 입력한 값, 요청방식, 요청자의 ip 주소 등 

 

respones에는 요청 처리 후 응답할 때 사용되는 객체이다 

 

요청 시 전달된 데이터 추출 request 객체의 parameter 영역 안에 데이터가 

담겨져 있다 request.getParameter("key")

<select name="address" id="address">

 

name= 

속성에 address가 그 key값이다 

 

 

String userName = request.getParameter("userName");
String gender = request.getParameter("gebder");   // NULL  전달된 값이 없을 경우 
int age = Integer.parseInt(request.getParameter("age"));
String address = request.getParameter("address");
double height = Double.parseDouble(request.getParameter("height"));

 

같은 키 값으로 여러개의 데이터가 전달되는 경우 : getParameterValues("key") : String[]

String[] foods = request.getParameterValues("food");

 

전달되는 값은 String이다

 

getParameterValues() : 메소드를 사용한다.

 

인코딩 처리 : 응답데이터의 문서 형식 및 인코딩 방식 설정 
response.setContentType("text/html; charset=utf-8");

 

PrintWriter 응답 시 사용할 스트림 객체(응답 페이지를 작성)

 

PrintWriter pw = response.getWriter();

}

 

RequestDispatcher은 서블릿 컨테이너에서 요청과 응답을 다른 리소스로 전달하는데 

사용이 된다 이를 통해서 클라이언트의 요청을 처리하는 동안 서버 측에서 추가적인 리소스를 

사용하여 작업을 처리할 수 있다 

 

RequestDispatcher view = request.getRequestDispatcher("views/responsePage.jsp");

즉 요청을 다른 서블릿이나 JSP 페이지로 전달하는 데 사용이 되는 객체이다 

 

view.forward(request, response);

 

forward 메소드는

클라이언트의 요청을 다른 서블릿이나 JSP 페이지로 전달하는 데 사용됩니다.

요청을 포워딩하면,

현재 서블릿의 처리가 완료된 후에 다른 리소스가 요청을 처리하게 됩니다.

클라이언트의 브라우저 URL은 변경되지 않으며,

서버 측에서 요청 처리가 연속적으로 이어집니다.

 

 


응답 페이지

 

응답 페이지에서 데이터를 정리하여 전달하는 방법 

request 객체의 attribute라는 공간을 사용한다 

 

request.setAttribute("name", userName);
request.setAttribute("gender", gender);