티스토리 뷰

이번 포스팅에서 배울 내용은 실제로 Servlet을 코딩하면서 가장 많이 사용하는 부분임.

 

1. HTML Form 태그

 - Html의 form태그는 서버쪽으로 정보를 전달할 때 사용 (Servelt과 Data를 주고 받고함)

 ex) 회사의 그룹웨어, 회원가입 등 ID, Password 등의 정보를 넣어 요청할 때 form태그에 넣어져서 넘겨짐

 - 웹프로그래머로서 Html을 어느 정도는 할 수 있어야한다. 

 

 

 

1-1 input 태그

 - 태그의 종류를 지정

 - 속성(type, name, value)

 

 1) type: 태그 종류 지정

 ex) text (어떤 사이트에 로그인 할 때 ID부분의 Type은 text, password는 password type, submit (서버로 정보를 전달하는 태그, checkbox (다중선택을 나타낼 때 사용), radio (단독선택할 때 사용), rest

 

 2) name: input태그 이름 

 ex) 클라이언트에서 이름 정한 것을 서버에서 받을 때, C에서 정한 이름을 서블릿에서도 동일하게 받음

 3) value: name에 해당하는 값(ex. name = value)

 

ex) 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

	<form action="FormEx" method="post">  -form: input 태그들의 값을 서버로 전송하기 위한 정보를 담음.
    	-action: input type에서 submit을 눌렀을 때, 어느 서블릿, JSP 또는 html로 데이터를 보낼 것인지 선택.
        -"FormEX": 요청하는 컴포넌트 이름 ex) join.jsp, info.html, Hworld 등
        -method: doget() or dopost()중 어떤 메서드를 호출 할 것인지 결정
		-"post": 요청을 처리하는 방식 ex) get, post
		-Get: URL로 정보를 흘려, 정보 보안에 취약
		-Post: 보안에 강함, URL이후 정보가 없음
		이름 : <input type="text" name="name" size="10"><br/> -일반적인 데이터를 입력하기 위해 사용.
		아이디 : <input type="text" name="id" size="10"><br/>
		비밀번호 : <input type="password" name="pw" size="10"><br/> -로그인, 회원가입 페이지 등에서 비밀번호를 입력하기 위해 사용.
		취미 : <input type="checkbox" name="hobby" value="read">독서 -데이터값을 여러 개 전송해야 할 때 사용 (복수선택)  
		<input type="checkbox" name="hobby" value="cook">요리
		<input type="checkbox" name="hobby" value="run">조깅
		<input type="checkbox" name="hobby" value="swim">수영
		<input type="checkbox" name="hobby" value="sleep">취침<br/>
		<input type="radio" name="major" value="kor">국어 -checkbox와 달리 여러 개의 데이터 값 중 한 개의 값만을 전송할 때 사용. 
		<input type="radio" name="major" value="eng" checked="checked">영어
		<input type="radio" name="major" value="mat" >수학
		<input type="radio" name="major" value="des" >디자인<br/>
		
		<select name="protocol"> -리스트형태의 데이터를 사용.
			<option value="http">http</option>
			<option value="ftp" selected="selected">ftp</option>
			<option value="smtp">smtp</option>
			<option value="pop">pop</option>
		</select><br/>
		<input type="submit" value="전송"> -form내의 데이터를 전송할 때 사용. form 태그 안에있는 내용이 서버로 전달
       	 <input type="reset" value="초기화"> -form내의 데이터를 초기화 할 때 사용.
	</form>
	
</body>
</html>

 

위의 HTML코드가 클라이언트에게는 이런 형식으로 보여진다  

 

2. Servlet Parameter

 

 

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("doPost");
		
        //웹브라우저에서 사용자가 입력한 id를 받아서 String타입의 id 변수에 저장
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		
        //getParameterValues(name) : 값이 여러개일 때 여러개 반환
		String[] hobbys = request.getParameterValues("hobby");
		String major = request.getParameter("major");
		String protocol = request.getParameter("protocol");
		
        //응답하는 부분, HTML코드를 자바형식으로 작성한다 
		response.setContentType("text/html; charset=EUC-KR");
		PrintWriter writer = response.getWriter();
		
		writer.println("<html><head></head><body>");
		writer.println("아이디 : " + id + "<br />");
		writer.println("비밀번호 : " + pw + "<br />" );
		writer.println("취미 : " + Arrays.toString(hobbys) + "<br />");
		writer.println("전공 : " + major + "<br />");
		writer.println("프로토콜 : " + protocol);
		writer.println("</body></html>");
		
	}

}

 

3. 한글처리

- Tomcat 서버의 기본 문자 처리 방식은 IOS-8859-1 방식. 

- 개발자가 별도의 한글 인코딩을 하지 않으면 한글이 깨져 보이는 현상이 있음. (영어는 1byte, 한글은 2byte이기 때문에) 

(jsp_7_3_ex1_encodingex)

 

3-1 Get방식 요청

 - <server.xml 수정>

  -> server -> Tomcat 폴더 -> server.xml -> 64번째 줄 <connector 부분에 URlEncoding="EUC-KR"  입력

    -> publish to the server (synchronized)

 

3-2 Post방식 요청

 - 자바 파일에 

request.setCharacterEncoding("EUC-KR"); 직접 입력 

 

 

댓글