//클라이언트의 요청을 얻는 작업
-Form태그를 이용한 html작성
클라이언트에서 서블릿으로 데이터를 전송할때 사용
<html>
<head>
<title>테스트</title>
</head>
<body>
<form name='f' method='post/get' action='처리할서블릿' enctype='인코딩타입'>
 <input type='text' name='text'>텍스트
 <input type='password' name='password'>비밀번호
 <input type='file' name='file'>
 <input type='checkbox' name='checkbox' value='value1'>value1
 <input type='checkbox' name='checkbox' value='value2'>value2
 <input type='radio' name='radio' value='value1'>value1
 <input type='radio' name='radio' value='value2'>value2
 <input type='button' name='button' value='버튼'>버튼
 <textarea name='textarea' rows='3'></textarea>
 <select name='combobox' size='1'>
  <option value='value1'>combo1</option>
  <option value='value2'>combo3</option>
 </select>
 <input type='submit' name='submit' value='전송'>
 <input type='reset' name='reset' value='취소'>
 <input type='hidden' name='hidden'>
</form>
</body>


/form태그의 속성
name : 폼태그의 이름을 명시
method : 폼데이터를 처리할 동작 방식. get or post. default = get
action : 폼데이터를 처리할 서블릿(또는 jsp)지정
encType : 폼데이터의 인코딩 타입지정(파일업로드의 경우 multipart/form-data)

/서블릿에서 폼데이터 처리 방법(javax.servlet.http.HttpServletRequest)
메소드                              리턴타입                   용도
getParameter(String name)           String                     해당 name값을 알고있을때
getParameterValues(String name)     String[]                   name에 해당하는 value값이 여러개인경우
getParameterNames()                 Enumeration                폼데이터가 많거나 name값을 모르는 경우

 
예제) loginForm.html  LoginForm.java
<form method='get' action='login'>
 <input type='text' name='userId'>
 <input type='password' name='password'>
 <input type='checkbox' name='checkValues' value='JAVA'>JAVA
 <input type='checkbox' name='checkValues' value='C++>C++
 <input type='checkbox' name='checkValues' value='DB'>DB
 <input type='submit' value='전송'>
</form>

<web-app>
 <servlet>
  <servlet-name>aaa</servlet-name>
  <servlet-class>test.web.LoginForm</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>aaa</servlet-name>
  <url-pattern>/login</url-pattern>
 </servlet-mapping>
</web-app>


public class LoginForm extends HttpServlet{
 public void doGet(HttpServletRequest req, HttpServletResponse res){
  req.setChracterEncoding("euc-kr");     //한글인코딩 처리
  res.setContentType("text/html; charset=euc-kr");
  PrintWriter out = res.getWriter();
  String id = req.getParameter('userID');l
  String pw = req.getParameter('password');
  out.println("<html><body>");
  out.println("userID는"+ id+ "<br>");
  out.println("password는"+pw+"<br>");
  String checkValues[] = req.getParameterValues("checkValues");
  for(int i =0; i<checkValues.length; i++){
   out.println("관심분야는 "+checkValues[i]+"<br>");
  }
  Enumeration enu = req.getParameterNaems();
  while(enu.hasMoreElements()){
   String name = (String)enu.nextElement();
   String value = req.getParameter(name);
  out.println("name값은 " + name+"value값은 "+ value+"<br>");
  }
  out.println("</body></html>");
 }
}

>javac -d . *.java
톰캣스타트
http://localhost:8090/webapp/LoginForm.html 요청

//클라이언트에서 서버로 데이터가 전달되는 방식
/GET방식
 데이터가 URL 끝에 key=value형태로 전달(여러개는 &으로 구분)
 보안 취약, 데이터수제한(255자), 기본방식, 사용간편, 폼태그가 아닌 직접 URL에 입력해서 전송도 가능
/POST방식
 데이터가 전송, header에 숨겨져 넘어감

/get/post혼합
public class LoginForm extends HttpServlet{
 public void doPost(~~ req, ~~ res){
  doProcess(req, res);
 }
 public void doPGet(~~ req, ~~ res){
  doProcess(req, res);
 }
 public void doProcess(req, res){
  로직
 }
}

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by 대절님

댓글을 달아 주세요



티스토리 툴바