국비 49-1

냐아암·2023년 6월 29일
0

국비

목록 보기
62/114
<?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_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>ServletProject1</display-name>
  
  <!-- 메인 페이지 목록 -->
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>default.htm</welcome-file>
  </welcome-file-list>
  
  <!-- ServletEx1 클래스를 Servlet으로 등록(자격 부여) -->
  <servlet>
  
  <servlet-name>example1</servlet-name>
  
  <!-- Servlet으로 등록하고자 하는 클래스 파일의 패키지명 + 클래스명 -->
  <servlet-class>edu.kh.servlet.ServletEx1</servlet-class>
  
  </servlet>
  
  <!-- 요청 주소를 처리할 Servlet과 연결을 지정 -->
  <servlet-mapping>
  	<servlet-name>example1</servlet-name>
  	<url-pattern>/example1.do</url-pattern>
  </servlet-mapping>
  
  <!-- =============================================================== -->
  
  <!-- 클래스를 Servlet으로 등록하고 Servlet 이름 지정 -->
  <servlet>
  	<servlet-name>example2</servlet-name>
  	<servlet-class>edu.kh.servlet.ServletEx2</servlet-class>
  </servlet>
  
  <!-- 특정 요청을 처리할 Servlet을 지정 -->
  <servlet-mapping>
  	<servlet-name>example2</servlet-name>
  	<url-pattern>/example2.do</url-pattern>
  </servlet-mapping>
  
  <!-- ================================================================= -->
  
  <servlet>
  	<servlet-name>example3</servlet-name>
  	<servlet-class>edu.kh.servlet.ServletEx3</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>example3</servlet-name>
  	<url-pattern>/example3.do</url-pattern>
  </servlet-mapping>
  
  
  
</web-app>
package edu.kh.servlet;

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 ServletEx3 extends HttpServlet {
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		String inputId = req.getParameter("inputId");
		String inputPw1 = req.getParameter("inputPw1");
		String inputPw2 = req.getParameter("inputPw2");
		String inputName = req.getParameter("inputName");
		String inputEmail = req.getParameter("inputEmail");
		
		String[] color = req.getParameterValues("color");
		
		resp.setContentType("text/html; charset=UTF-8");
		
		PrintWriter out = resp.getWriter();
		
		out.println("<!DOCTYPE html>");
		out.println("<html>");
		
		out.println("<head>");
		out.println("<title>회원 정보 제출 결과</title>");
		out.println("</head>");
		
		out.println("<body>");
		
		out.println("<ul>");
		
		if(inputPw1.equals(inputPw2)) {
			out.println("<li>아이디 : " + inputId + "</li>");
			out.println("<li>이름 : " + inputName + "</li>");
			out.println("<li>이메일 : " + inputEmail + "</li>");
			if(color != null) {
				out.print("<li>좋아하는 색 : ");
				for(String c : color) {
					out.print(c + " ");
				}
				out.print("</li>");
			}
		} else {
			out.print("<h1>비밀번호가 일치하지 않습니다.</h1>");
		}
		
		out.println("</ul>");
		
		out.println("</body>");
		
		out.println("</html>");
		
		
		
	}

}
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <h1>index라는 이름이 붙은 파일은 메인 페이지 역할을 합니다.</h1>

    <hr>

    <h3>테스트 1</h3>

    <pre>
        form 태그 : 
                    내부에 작성된 input 태그의 값을 지정된 서버 또는 페이지로
                    제출(전달)하는 역할 

                    * 이때, 어떤 input 태그에 작성된 값이 제출된 건지 알 수 있도록
                      input 태그에 name 속성을 반드시 작성한다!!

                    * form 태그 속성
                    - action : input 태그 값을 전달할 서버 또는 페이지 주소를 작성하는 속성
                    - method : 데이터 전달 방식 지정하는 속성(get / post)
    </pre>

    <!-- http://localhost:8080     /ServletProject1/ 
        
        - http://아이피:포트번호 : 통신 규약, 서버 컴퓨터 위치를 지정(고정)
        
        - /ServletProject1/ : 요청하고자 하는 내용을 나타내는 주소
    -->

    <form action="/ServletProject1/example1.do">
        <!-- ServletProject1 프로젝트에 example1.do 라는 요청을 전달한다. 
                -> 예제 1번을 수행해서 결과를 응답할 예정
        -->

        이름 : <input type="text" name="inputName"><br>
        나이 : <input type="text" name="inputAge"><br>

        <button>서버로 제출하기</button>
        
    </form>

    <hr>

    <h3>GET 방식 요청 및 응답</h3>

    <pre>
        Get 방식 : 요청하는 주소 뒤에
                   전달하려는 값(input 태그에 작성된 값)을
                   문자열 형태로 붙여서 서버로 전달하는 방식

        - 장점 : 단순함, 캐싱 가능(요청 저장 가능 == 북마크, 즐겨찾기)
        - 단점 : 보안에 취약함(눈으로 다 보임)

        * form 태그, a태그, 주소창 직접 입력하는 모든 것이 GET 방식
        * form 태그 method 속성 기본값
    </pre>

    <form action="/ServletProject1/example2.do" method="get">

        주문자 : <input type="text" name="orderer"><br>

        <label>
            <input type="checkbox" name="coffee" value="아이스 아메리카노">
            아이스 아메리카노
        </label>
        <br>
        <label>
            <input type="checkbox" name="coffee" value="카라멜 마끼야또">
            카라멜 마끼야또
        </label>
        <br>
        <label>
            <input type="checkbox" name="coffee" value="녹차 라떼">
            녹차 라떼
        </label>
        <br>
        <label>
            <input type="checkbox" name="coffee" value="초코칩 프라페">
            초코칩 프라페
        </label>
        <br>
        <label>
            <input type="checkbox" name="coffee" value="민트초코 프라페">
            민트초코 프라페
        </label>
        <br>
        

        <button>주문서 제출하기</button>

    </form>

    <hr>

    <h3>회원 정보 제출하기</h3>

    <pre>
        
        요청 주소(action) : /ServletProject1/example3.do

        데이터 전달 방식(method) : GET 

        * 비밀번호가 일치하지 않으면
          응답화면에 h1태그로 "비밀번호가 일치하지 않습니다";

          일치하면 가입된 회원 정보 출력

        * 좋아하는 색을 체크하지 않으면 "없습니다" 출력

        (참고) 
        - 서버로 제출된 input 태그 값은 모두 [String] 입니다.

        - input type="password" 는 화면에서만 안보이지 
          서버로 제출된 경우 입력된 값이 그대로 보입니다.
    </pre>

    <form action="/ServletProject1/example3.do" method="GET">

        아이디 : <input type="text" name="inputId"> <br>
        비밀번호 : <input type="password" name="inputPw1"> <br>
        비밀번호 확인 : <input type="password" name="inputPw2"> <br>
        
        이름 : <input type="text" name="inputName"> <br>
        이메일 : <input type="email" name="inputEmail"> <br>

        좋아하는 색<br>
        <label><input type="checkbox" name="color" value="빨강">빨강</label>
        <label><input type="checkbox" name="color" value="노랑">노랑</label>
        <label><input type="checkbox" name="color" value="초록">초록</label>
        <br>
        <label><input type="checkbox" name="color" value="파랑">파랑</label>
        <label><input type="checkbox" name="color" value="분홍">분홍</label>
        <label><input type="checkbox" name="color" value="검정">검정</label>

        <br>

        <button>회원 정보 제출하기</button>
        
    </form>




</body>
</html>
profile
개발 일지

0개의 댓글