본문 바로가기

web/Servlet

<form>태그를 이용하여 servlet에 요청하기

#html 측면(servlet에 form 태그 내용 전달하는 방법)

<form> 태그 안의 <submit>을 누르면 

<form> 태그의 action attribute가 가리키는 servlet에 <form>태그의 내용이 전달됩니다.

 

<form action="login">

가령, 위 코드와 같은 경우 servlet mapping이 login인 servlet으로 <form>태그 내용이 전달됩니다.

@WebServlet("/login")

 

 

#servlet 측면(서블릿에서 클라이언트의 요청을 얻는 방법)

|메서드들

메서드 기능
String getParameter(String name) name의 값을 알고 있을 때 그리고 name에 대한 전송된 값을 받아오는데 사용합니다
String[] getParameterValues(String name) 같은 name에 대해 여러 개의 값을 얻을 때 사용합니다.
checkbox, radio button 등
Enumeration getParameterNames() name 값을 모를 때 사용합니다.

 

#실습

##환경설정

1. 새 프로젝트 생성

2. 프로젝트 우클릭 - build path - configure build path 

3. java build path - class path에 포커스 두고 우측 add external jars클릭

4. apachi-tomcat/lib 폴더에 servlet-api.jars 추가 - apply and close

 

##코드 작성

1. html(project/src/main/webapp/login.html)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!--name이 frmLogin인 from 태그, get방식으로 mapping이름이 login인 servlet에 form 내용 전송-->
	<form name="frmLogin" method="get" action="login" encType="UTF-8">
		아이디:<input type="text" name="user_id"><br>
		비밀번호:<input type="password" name="user_pw"><br>
		<input type="submit" value="로그인"><input type="reset" value="초기화">
	</form>
</body>
</html>

2. servlet(project\src\main\java\sec01\ex01\LoginServlet.java)

package sec01.ex01;

import java.io.IOException;
import javax.servlet.ServletConfig;
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 LoginServlet
 */
//servlet mapping이 login임
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("init called");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("destroy called");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
        
		request.setCharacterEncoding("utf-8");
        //요청의 내용을 받아옴(request.getParameter:name을 알고 값이 하나일 때)
		String user_id = request.getParameter("user_id");
		String user_pw = request.getParameter("user_pw");
		System.out.println("아이디:"+user_id);
		System.out.println("비밀번호:"+user_pw);
	}

}

 

##테스트

1. 로컬 서버에서 html파일 실행 - form 내용 입력

web 화면
콘솔 화면

 

2. submit(해당 파일에선 로그인 버튼) 클릭

get방식이었기에 url 뒤에 파라미터가 생긴다.
콘솔화면: LoginServlet.java의 init, doGet이 호출됐음을 알 수 있다

 

 

이런식으로 웹을 통해 클라이언트의 요청을 서버로 받아올 수 있다.

'web > Servlet' 카테고리의 다른 글

Servlet mapping 하는 법(annotation사용)  (0) 2021.07.21
서블릿의 기본 기능 세 가지  (0) 2021.07.06
Servlet mapping 하는 법(xml 사용)  (0) 2021.07.03
아파치 톰캣 다운로드 및 설치  (0) 2021.07.03
Eclipse 설치  (0) 2021.07.03