일단 간단히 HTML 태그를 알아보자.
태그의 종류를 지정 합니다.
속성(type, name, value)
type = text
일반적으로 데이터를 입력하기 위해 사용한다.
type = password
로그인, 회원가입 페이지 등에서 비밀번호 입력하기 위해 사용한다.
type = submit
form 내의 데이터를 전송할 때 사용한다.
type = reset
form 내의 데이터를 초기화 할 때 사용한다.
type = checkbox
데이터값을 여러개 전송해야 할 때 사용한다.
type = radio
check box와 달리 여러 개의 데이터 값 중 한개의 값만 전송할 때 사용한다.
select
리스트 형태의 데이터를 사용한다.
//text
<input type="text" name="name" size="10">
//password
<input type="password" name="name" size="10">
//submit
<input type="submit" value="전송">
//reset
<input type="reset" value="초기화">
//checkbox
<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">취침
독서
요리
조깅
수영
취침
//radio
<input type="radio" name="major" value="kor">국어
<input type="radio" name="major" value="eng" checked="checked">영어
<input type="radio" name="major" value="mat" >수학
<input type="radio" name="major" value="des" >디자인
국어
영어
수학
디자인
//select
<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>
http
ftp
smtp
pop
form 태그는 Html의 form태그는 서버쪽으로 정보를 전달할 때 사용하는 태그이다. action, method같은 기능들을 담고 있다. 매우 중요한 태그이다. Input 태그들의 값을 서버로 전송하기 위한 정보를 담고 있다.
//form
<form action="FormEx" method="post">
여기서 action은 요청하는 컴포넌트이다. (ex. join.jsp, info.html등) method는 요청을 처리하는 방식이다. get,post가 있다.
get과 post의 차이는 url을 어떻게 처리하냐이다. 즉, 어디까지 보여주느냐이다.
Get : http://IP주소:port번호/컨텍스트/path/MemberJoin?id=“abcdefg”&name=“홍길동”
Post : http://IP주소:port번호/컨텍스트/path/MemberJoin
post는 id부터 없이 나오는 것을 볼 수 있다.
form 태그 예제를 보자!
FormEx.java(Servlet)
package com.javalec.ex;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FormEx
*/
@WebServlet("/FormEx")
public class FormEx extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public FormEx() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String[] hobbys = request.getParameterValues("hobby");
String major = request.getParameter("major");
String protocol = request.getParameter("protocol");
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>");
}
}
form.html
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="FormEx" method="post">
이름 : <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">국어
<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="전송"><input type="reset" value="초기화">
</form>
</body>
</html>
출력
console에는 doPost가 찍이는 것을 확인할 수 있다. 왜냐하면 form 태그에서 post방식을 사용하기로 정했기 때문이다.
Get 방식과 post 방식의 한글 인코딩 방식이 다르다.
Get: <server.xml>을 수정해주면 된다. connector부분 URIEncoding = "EUC-KR"을 추가하면 된다.
post: request.setCharaterEncoding("EUC-KR");을 추가해주면 된다.
이렇게 두 가지 방식에 따라 한글 인코딩 방식이 다르다.
간단하게 form태그를 이용해서 보내는 방식과 input 태그를 정리해보았다. 또한, 한글 인코딩하는 방식도 정리했다. 이또한 간단한 웹구조임을 알 수 있다.