8강 : form 데이터 처리

16114 단어 인프런jspjsp

출처

해당 게시글은 모두 인프런 실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌 https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-jsp_renew/dashboard에 출처를 두고 있습니다. 간략히 정리한 글 입니다.




내용

클라이언트가 전송한 HTML에 존재하는 <form>태그 내에 정보들을 바탕으로 서비스를 제공하기 위해 데이터를 처리하는 과정입니다.



HTML

	<form action="mSignUp" method="get">
		name : <input type="text" name="m_name"> </br>
		password : <input type="password" name="m_pass"></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>

<form>태그의 속성부터 살펴보겠습니다.
action : 어느 URL(매핑)에 정보를 넘겨줄지 지정합니다
method : GET방식과 Post방식을 선택할 수 있습니다. 각각 URL에 정보를 포함하느냐 내부에 숨겨서 포함하느냐에 따라 다릅니다.

다음은 <input>, <select> 태그 입니다.
type : 여러 입력 방식을 지정합니다. HTML5를 참조
name : 변수명, 키, 등등 데이터를 지정하는 식별자입니다.
value : 라디오나 체크박스 등에서 선택시 가지는 값 입니다.

이외의 태그와 속성들은 HTML를 참조하시길 바랍니다.



서블릿

	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);
		}
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println(" -- doPost() -- ");
		doGet(request, response);
	}

HttpServletRequest request객체를 적극 활용하여 HTML이 전송한 데이터를 추출 합니다.

request.getParameter("name") : HTML에서 name속성에 지정해뒀던 값을 이용하여 해당 데이터를 추출합니다.
request.getParameterValues("name") : 체크박스나 여러개의 값을 가지는 데이터를 가지고 올때 사용합니다. getParameter와 다른 점은 복수를 허용하므로 배열을 리턴합니다.
request.getParameterNames() : 태그에 사용된 name들을 반환합니다. 보통 어떤 데이터들을 전송했는지 확인할때 사용됩니다.

Enumeration<E> enu : Iteratro + Sync로 생각하면 편합니다. VectorHashSet등 동기화를 지원하는 컬랙션에 순회하는 용도입니다.
enu.hasMoreElements() : 컬랙션에 순회할 데이터가 남아있는지 확인합니다.
enu.nextElement() : 현재순서의 데이터를 반환하고 다음 순서로 넘어갑니다.




후기

request.getParameter()가 데이터를 처리하는데 중요한 역할을 하는것 같습니다.




GitHub

https://github.com/ds02168/Study_JSP/tree/master/8%EA%B0%95

좋은 웹페이지 즐겨찾기