form 데이터 처리

김규원·2024년 1월 22일

24.01: 실전! JSP(完)

목록 보기
6/13
post-thumbnail

인프런 강의 <<실전 JSP(renew ver.) 수강 후 공부를 위해 정리한 글입니다.

form 태그


사용자에게서 받은 응답 데이터를 request 할 때 우리는 2가지 메서드 사용이 가능.

  1. doGet
  2. doPost
    doGet으로 응답을 받을 것인지 doPost로 응답을 받을 것인지는 form 관련 태그로 결정됨.
    위의 코드는 form 관련 태그가 method="post"로 작성되어 있음. ==> doPost가 응답을 가져감.
<form action = "msignup" method="post">

의미: 사용자가 submit을 누르면 msignup파일의 dopost 메서드에게로 데이터를 전송하시오

action

action = "url"

  • sumbit 버튼을 누르면 action이 가리키는 파일(주소)로 데이터 전송.
  • url(주소)는 절대 주소나 상대 주소 모두 ok
  • 절대 주소 예시
    "https://velog.io/@gimgyuwon/posts"
  • 대부분 절대 주소로 사용. 상대 주소는 위험이 있기 때문

method

method = "전송방법(get/post)"

doGet 메서드

method="get"
doGet 메서드를 사용할 경우 데이터가 웹 브라우저 URL에 노출되어 웹 서버로 전송. 보안에 취약함. 또한 URL의 텍스트 글자수 제한이 존재하기에 많은 응답을 받았을 경우 URL이 짤릴 수 있음.

doPost 메서드

method="post"
doPost 메서드를 사용할 경우 doGet 메서드의 단점을 보완할 수 있음. doPost는 데이터가 HTTP Request에 포함되어 맵핑된 후 웹 서버로 전송함.

코드 구현

  • html 페이지
  • 콘솔 창 결과
  • dopost메서드 사용
  • doget메서드 사용
http://localhost:8090/lec08Pjt001/mSignUp?m_name=dfdfd&m_pass=dfd&m_gender=M&m_residence=seoul
<form action="mSignUp" method="get">
		name : <input type="text" name="m_name"> </br>
		nickname : <input type="text", name="m_nick"> </br>
		password : <input type="password" name="m_pass"></br>
		phone : <input type="password" name = "m_phone"> </br>
		gender : Man<input type="radio" name="m_gender" value="M" checked="checked">, Woman<input type="radio" name="m_gender" value="W"></br>
		hobby : Sport<input type="checkbox" name="m_hobby" value="sport">, 
				Cooking<input type="checkbox" name="m_hobby" value="cooking">, 
				Reading<input type="checkbox" name="m_hobby" value="reading">,
				Travel<input type="checkbox" name="m_hobby" value="travel"></br>
		residence : <select name="m_residence">
						<option value="seoul" selected="selected">Seoul</option>
						<option value="gyeonggi">Gyeonggi</option>
						<option value="chungcheong">Chungcheong</option>
						<option value="jeonra">Jeonra</option>
						<option value="jeju">Jeju</option>
						<option value="gyeongsang">Gyeongsang</option>
						<option value="gangwon">Gangwon</option>
					</select></br>
					<input type="submit" value="sign up">
	</form>

다양한 type

text

: text 입력 받음

name : <input type="text" name="m_name"> </br>

password

: password 형식으로 입력 받음

  • 입력시 위 처럼 검정 동그라미로 보안 유지
password : <input type="password" name="m_pass"></br>

radio

: 단일 응답

gender : Man<input type="radio" name="m_gender" value="M" checked="checked">, Woman<input type="radio" name="m_gender" value="W"></br>

checkbox

: 다중 응답 가능

hobby : Sport<input type="checkbox" name="m_hobby" value="sport">, 
				Cooking<input type="checkbox" name="m_hobby" value="cooking">, 
				Reading<input type="checkbox" name="m_hobby" value="reading">,
				Travel<input type="checkbox" name="m_hobby" value="travel"></br>

select 박스와 option

: 셀렉트 박스와 옵션은 대부분 같이 쓰임

residence : <select name="m_residence">
						<option value="seoul" selected="selected">Seoul</option>
						<option value="gyeonggi">Gyeonggi</option>
						<option value="chungcheong">Chungcheong</option>
						<option value="jeonra">Jeonra</option>
						<option value="jeju">Jeju</option>
						<option value="gyeongsang">Gyeongsang</option>
						<option value="gangwon">Gangwon</option>
					</select></br>

: value 값은 전해 줄 때의 값이고
: >seoul</option> 처럼 괄호 사이에 끼어이있는 이름들은 select box 내에서 보일 이름들

submit

<form> 태그 내에 입력된 데이터를 서버로 전달

<input type="submit" value="sign up">

value = ...
에 적힌 값이 버튼 안에 적힘

java에서 응답 값을 받기

doget

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		System.out.println(" -- doGet() -- ");
		
		String m_name = request.getParameter("m_name");
		String m_pass = request.getParameter("m_pass");
		String m_gender = request.getParameter("m_gender");
		String[] m_hobbys = request.getParameterValues("m_hobby");
		String m_residence = request.getParameter("m_residence");
		
		System.out.println("m_name : " + m_name);
		System.out.println("m_pass : " + m_pass);
		System.out.println("m_gender : " + m_gender);
		System.out.println("m_hobbys : " + Arrays.toString(m_hobbys));
		System.out.println("m_residence : " + m_residence);
		
		Enumeration<String> names = request.getParameterNames();
		while (names.hasMoreElements()) {
			String name = (String) names.nextElement();
			System.out.println("name : " + name);
		}
		
	}

dopost

: 여기에서는 dopost 메서드를 사용할 경우 doget메서드로 옮기고 있음.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		System.out.println(" -- doPost() -- ");
		
		doGet(request, response);
	}
profile
행복한 하루 보내세요

0개의 댓글