[Servlet] 인코딩, 데이터 전송

데이터 요청

request.getParameter("변수명") 사용
문자열(String) 형식으로만 반환

String a = request.getParameter("cat");	
//name이 "cat"인 데이터를 a라는 문자열변수에 담는다.

데이터 출력

PrintWriter : 출력 스트림

PrintWriter out = response.getWriter(); //데이터 출력 스트림 생성
out.print(a)

데이터 전송을 위한 조건 세가지

action : 데이터를 전송할 경로 지정
name : 전송할 데이터 지정
submit : 값을 보낼 시점

<form action = "Ex01Create"> <!--데이터 보낼 주소 지정-->
  이름: <input type="text" name="cat"> <!--사용자의 입력값이 cat에 저장-->
  <input type="submit"> <!--제출버튼을 누르면 데이터 전송-->
</form>

실습: 데이터 받아오기

html

<body>
	<form action="test1">
		num1: <input type = "text" name = "num1">
		<select name="op">
		<option>+</option>
		<option>-</option>
		<option>*</option>
		<option>/</option>
		</select>
		num2: <input type = "text" name = "num2">
		<input type="submit" value="cal">
	</form>
</body>

servlet

int num1= Integer.parseInt(request.getParameter("num1"));
int num2= Integer.parseInt(request.getParameter("num2"));
String op = request.getParameter("op");
PrintWriter out = response.getWriter();
out.print("<html>");
out.print("<body>");
if(op.equals("+")) {	//java처럼 기능구현 가능
	out.print(num1 + " + " + num2 + " = " + "<h2>"+ (num1+num2) + "</h2>");
	}else if(op.equals("-")){
	out.print(num1 + " - " + num2 + " = " + "<h2>"+ (num1-num2) + "</h2>");
	}else if(op.equals("*")){
	out.print(num1 + " * " + num2 + " = " + "<h2>"+ (num1*num2) + "</h2>");
	}else if(op.equals("/")){
	out.print(num1 + " / " + num2 + " = " + "<h2>"+ (num1/num2) + "</h2>");
	}
	out.print("</body>");
	out.print("<html>");


요청 데이터 인코딩 방식 지정

가장 먼저 지정해준다.

request.setCharactorEncoding("UTF=8");

응답 데이터 인코딩 방식 지정

response.setCharactorEncoding("UTF=8");

응답 페이지에 대한 환경설정

출력보다 더 위에 지정해준다.

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

name이 여러개일 때!

checkbox처럼 같은 그룹안에 name여러개일때는 어떻게 가져와야할까?
html

사과 <input type="checkbox" name="fruits" value="apple">
바나나 <input type="checkbox" name="fruits" value="banana">
오렌지 <input type="checkbox" name="fruits" value="orange">


servlet

//배열 형태로 받아온다.
String[] fruits = request.getParameterValues("fruits");
// for~each문 : 배열이나 리스트의 값을 꺼내올 때 유용
for( Strinf f : fruits){
	System.out.print( f );}

좋은 웹페이지 즐겨찾기