Servlet - #4 form태그

임다이·2023년 10월 27일

Jsp/Servlet

목록 보기
4/10

form 태그

  • action
    데이터를 보낼 주소
  • name
    데이터 이름
  • submit
    데이터를 보내는 시점

→ 이 3가지는 무조건 외우기!


  • 데이터 전송 방식


실습

  • send.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1> 데이터 전송해보기 </h1>
    <!-- 1. action : 데이터 보낼 주소
         2. name : 데이터 이름
         3. submit : 데이터 보낼 시점 -->
    
         <!-- action에는 servlet의 url mapping값을 작성
         action에 작성한 페이지를 요청한다는 의미 -->
    <form action="Ex04_get">
        DATA <input type="text" name="data">
        <input type="submit">
    </form>
    
    </body>
    </html>

    -action에는 servlet의 url mapping값을 작성
    -action에 작성한 페이지를 요청하는 의미

  • get.java

    public class Ex04_get extends HttpServlet {
        private static final long serialVersionUID = 1L;
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // Ex04_send.html 에서 보낸 데이터를 받아줄 공간
            // data이름을 가진 값을 받아주기
            // html페이지에서 이 servlet을 요청 -> 요청할 때 data를 가지고 왔음
            // 요청과 관련된 정보가 들어있는 request 객체에서 꺼내와야한다!
            // .getParameter("form태그에 작성했던 name값")
            String data = request.getParameter("data");
            System.out.println(data);
    
            // 500 에러 : 문법 에러 -> 요청한 페이지의 문법, 코드 확인
            // 404 에러 : Not Found -> 보통 경로 문제, 경로 확인
        }
    
    }
    

    -Ex04_send.html 에서 보낸 데이터를 받아줄 공간
    -data이름을 가진 값을 받아주기
    -html페이지에서 이 servlet을 요청 -> 요청할 때 data를 가지고 왔음
    -요청과 관련된 정보가 들어있는 request 객체에서 꺼내와야한다
    -.getParameter("form태그에 작성했던 name값")

    → 결과는 consol창


  • sendName.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <form action="Ex05_getName">
        당신의 이름은? <input type="text" name="name">
        <br>
        당신의 나이는? <input type="text" name="age">
        <br>
        <input type="submit">
    </form>
    
    </body>
    </html>

  • getName.java

    public class Ex05_getName extends HttpServlet {
        private static final long serialVersionUID = 1L;
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // Ex04_sendName에서 보낸 이름과 나이 데이터 받아와서
            // Web에 출력하기
    
            // 1. 데이터 받아오기
            String name = request.getParameter("name");
            String age = request.getParameter("age");
    
            // 2. Web에 출력하기 -> PrintWriter
            // 응답할 문서에 대한 설정
            response.setContentType("text/html; charset=utf-8");
            PrintWriter out = response.getWriter();
            out.print("제 이름은 " + name + "입니다. <br>");
            out.print("제 나이는 " + age + "살입니다.");
        }
    
    }
    

    -Ex04_sendName에서 보낸 이름과 나이 데이터 받아와서 Web에 출력하기
    -Web에 출력하기 -> PrintWriter
    -응답할 문서에 대한 설정

    response.setContentType("text/html; charset=utf-8");


  • plus.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <form action="Ex06_plus">
        <input type="text" name="num1">
        +
        <input type="text" name="num2">
        <input type="submit" value="연산">
    </form>
    
    </body>
    </html>

  • plus.java

    public class Ex06_plus extends HttpServlet {
        private static final long serialVersionUID = 1L;
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 입력한 두 수 받아서 web에 출력하기
            // 1. 입력한 두 수 받아오기
            String num1 = request.getParameter("num1");
            String num2 = request.getParameter("num2");
            // 형변환 Integer객체의 parseInt메소드 사용
            // int num1 = Integer.parseInt(request.getParameter("num1"));
            // int num2 = Integer.parseInt(request.getParameter("num2"));
            // int result = num1 + num2;
    
            int intValue1 = Integer.parseInt(num1);
            int intValue2 = Integer.parseInt(num2);
    
            // 2. 응답할 문서에 대한 설정
            response.setContentType("text/html; charset=utf-8");
            // 3. 출력 스트림 열기
            PrintWriter out = response.getWriter();
            // = response.getWriter().print("")
            out.print(num1 + "과 " + num2 + "의 합은 " + (intValue1+intValue2) + "입니다.");
        }
    
    }
    

    -형변환 Integer객체의 parseInt메소드 사용

    int num1 = Integer.parseInt(request.getParameter("num1"));
    int num2 = Integer.parseInt(request.getParameter("num2"));
    int result = num1 + num2;
    // 출력 스트림 열기
    PrintWriter out = response.getWriter();
    // = response.getWriter().print("")
    out.print()


  • makeTable.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <h1> 방 만들기 </h1>
    
    <form action="Ex07_makeTable">
        방 개수 : <input type="text" name="room">
        색깔 : <input type="color" name="color">
        <input type="submit">
    </form>
    
    </body>
    </html>

  • makeTable.java

    public class Ex07_makeTable extends HttpServlet {
        private static final long serialVersionUID = 1L;
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 방 개수, color 받아와서 table형태로 웹에 출력 -> 반복문
    
            // 1. 방 개수, color 받아오기
            int room = Integer.parseInt(request.getParameter("room"));
            String color = request.getParameter("color");
    
            response.setContentType("text/html; charset=utf-8");
    
            // 2. 웹에 출력
            PrintWriter out = response.getWriter();
    
            // 3. table 형태로 출력하기
            // table -> 1개, tr -> 1개, td -> 사용자가 입력한 방의 개수
            out.print("<table border=1 style=background-color:"+color+"><tr>");
            for(int i=1; i<=room; i++) {
                out.print("<td>" + i + "</td>");
            }
            out.print("</tr></table>");
        }
    
    }
    

    -방 개수, color 받아와서 table형태로 웹에 출력 -> 반복문
    -table -> 1개, tr -> 1개, td -> 사용자가 입력한 방의 개수


→ 500 에러 : 문법 에러 -> 요청한 페이지의 문법, 코드 확인
→ 404 에러 : Not Found -> 보통 경로 문제, 경로 확인

profile
노는게 제일 좋아~!

0개의 댓글