JSP (4) Servlet 3

JeJune Lee·2021년 8월 23일
0

JSP

목록 보기
4/8

일단 간단히 HTML 태그를 알아보자.

Input 태그

태그의 종류를 지정 합니다.

속성(type, name, value)

  • type : 태그 종류 지정(ex. text, password, submit, checkbox, radio, reset)
  • name : input태그 이름
  • value : name에 해당하는 값(ex. 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 태그

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 태그를 정리해보았다. 또한, 한글 인코딩하는 방식도 정리했다. 이또한 간단한 웹구조임을 알 수 있다.

profile
Being Server developer

0개의 댓글