본문 바로가기

JAVA

Servlet의 세가지 기본기능

  • 톰캣과 같은 WAS(Web Aplication Server, 웹 애플리케이션 서버)가 처음 나왔을때 웹 브라우저 요청을 스레드 방식으로 처리하는 기술이 Servlet이였다.
  • 서블릿 기본 기능 수행 과정
    • 클라이언트로 부터 요청 -> 톰캣 컨테이너(Servlet) -> DB
  • 서블릿 응답과 요청 수행 API 가능
    • 요청 관련 API
      • javax.servlet.http.HttpServletRequest 클래스
    • 응답 관련 API
      • javax.servlet.http.HttpServletResponce 클래스
  • Servlet 에서 Client의 요청을 얻는방법
    • 요청을 받아오는 메서드
      • String getParameter(String name)
        • 요청된 name의 값을 알고있을때 그리고 name에 대한 전송된 값을 받아올때 사용
      • String getParameterValues(String name)
        • 요청된 같은 name에 대해 여러개의 값을 전송받았을때 배열 형태로 값을 얻은 후 사용
      • Enumeration getParameterNames()
        • 요청된 name의 값을 모를때 사용
    • 한개의 name을 가진 form 요청 처리방법
      • login.html
        • <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>로그인</title>
          </head>
          <body>
          <form name="frmLogin" method="get" action="login" enctype="UTF-8">
          아이디 : <input type="text" name="user_id"></br>
          비밀번호 : <input type="password" name="user_password"></br>
          <input type="submit" value="로그인">
          <input type="reset" value="다시입력">
          </form>
          </body>
          </html>
        • LoginServlet.java
          • @WebServlet(value = "/login")
            public class LoginServlet extends HttpServlet {
            @Override
            public void init() throws ServletException{
            System.out.println("init call");
            }
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            String user_id = request.getParameter("user_id");
            String user_password = request.getParameter("user_password");
            System.out.println("유저 아이디 : " + user_id);
            System.out.println("유저 비밀번호 : " + user_password);
            }

            @Override
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

            }
            @Override
            public void destroy(){
            System.out.println("server destroy");
            }
            }
        • 다중의 name을 가진 Servlet 요청방법
          • input.html
            • <html lang="en">
              <head>
              <meta charset="UTF-8">
              <title>다중 input</title>
              </head>
              <body>
              <form name="frmInput" action="input" method="get">
              아이디 : <input type="text" name="user_id"></br>
              비밀번호 : <input type="password" name="user_password">
              <input type="checkbox" name="subject" value="java" checked> 자바
              <input type="checkbox" name="subject" value="php" checked> php
              <input type="checkbox" name="subject" value="jsp" checked> jsp
              <input type="checkbox" name="subject" value="c" checked> c++
              <input type="checkbox" name="subject" value="android" checked> 안드로이드 </br>
              <input type="submit" value="전송">
              <input type="reset" value="초기화">

              </form>
              </body>
              </html>
          • InputServlet.java
            • @WebServlet(value = "/input")
              public class InputServlet extends HttpServlet {
              @Override
              public void init() throws ServletException{
              System.out.println("init call");
              }
              @Override
              protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              request.setCharacterEncoding("utf-8");
              String user_id = request.getParameter("user_id");
              String user_password = request.getParameter("user_password");
              System.out.println("유저 아이디 : " + user_id);
              System.out.println("유저 비밀번호 : " + user_password);
                String [] subject = request.getParameterValues("subject"); // getParameterValues 메서드 통한 다중 name에 대한 배열 저장
              for(String str : subject) //foreach문 통한 선택된 checkbox 요소 수량 출력
              {
                  System.out.println("선택 과목 : " + str);
              }
              }

              @Override
              protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

              }
              @Override
              public void destroy(){
              System.out.println("server destroy");
              }
          • getParameterNames()메서드를 이용한 요청 처리
            • input2.html
              • <!DOCTYPE html>
                <html lang="en">
                <head>
                <meta charset="UTF-8">
                <title>다중 input</title>
                </head>
                <body>
                <form name="frmInput" action="input2" method="get">
                아이디 : <input type="text" name="user_id"></br>
                비밀번호 : <input type="password" name="user_password">
                <input type="checkbox" name="subject" value="java" checked> 자바
                <input type="checkbox" name="subject" value="php" checked> php
                <input type="checkbox" name="subject" value="jsp" checked> jsp
                <input type="checkbox" name="subject" value="c" checked> c++
                <input type="checkbox" name="subject" value="android" checked> 안드로이드 </br>
                <input type="submit" value="전송">
                <input type="reset" value="초기화">

                </form>
                </body>
                </html>
                </body>
                </html>
            • InputServlet2.java
              • @WebServlet(value = "/input2")
                public class InputServlet2 extends HttpServlet {
                @Override
                public void init() throws ServletException{
                System.out.println("init call");
                }
                @Override
                protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                request.setCharacterEncoding("utf-8");
                Enumeration enu = request.getParameterNames(); // 전송된 다수의 name 속성을 Enumeration 타입으로 받아온다.
                while (enu.hasMoreElements())
                {
                String name = (String) enu.nextElement(); //enu 객체를 통한 요소 값들을 저장
                String [] subject = request.getParameterValues(name); //name 내 저장된 값들을 배열로 저장
                for(String str : subject)
                {
                System.out.println("선택 과목 : " + name + ",values : " + str);
                }
                }

                }

                @Override
                protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                }
                @Override
                public void destroy(){
                System.out.println("server destroy");
                }
                }

'JAVA' 카테고리의 다른 글

javaScript를 이용한 Servlet 요청  (0) 2021.07.26
Servlet의 응답 처리방법  (0) 2021.07.23
서블릿의 생명주기 메서드  (0) 2021.07.21
Servlet 특징 정리  (0) 2021.07.21
DAO, DTO  (0) 2021.07.17