본문 바로가기

BackEnd/JSP

MVC Model2 - 서블릿 구현하는 방법

1. 서블릿 파일 생성

웹 프로젝트 -> Java Resources -> 패키지 생성 -> 서블릿 파일 생성

 

 

 

Class name에 서블릿의 이름을 입력합니다.

Superclass에 javax.servlet.http.HttpServlet 클래스가 슈퍼 클래스인데 이 클래스를 구현하기에 서블릿이라 칭합니다.

 

 

 

저는 doGet과 doPost를 체크하여 생성했습니다.

위 이미지와 같이 다른 쓸 데 없는 코드는 삭제해주어도 상관없습니다.

 

여기서 중요!

@WebServlet("/HelloWorld") 에서 HelloWorld은 URL 뒤에 붙는 서블릿 이름입니다.

Ex) http://kalsweb.tistory.com/HelloWorld

 

2. 서블릿 코드 작성

package control;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		reqPro(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		reqPro(request, response);
	}
	
	// 일괄처리 메서드
	protected void reqPro(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// JSP로 넘겨질 데이터 설정
		String msg = "Hello World~! 안녕하세요.";
		Integer data = 12;
		
		// JSP로 데이터를 request에 부착하여 넘겨줌
		request.setAttribute("msg", msg);
		request.setAttribute("data", data);
		
		// 서블릿에서 jsp를 호출하면서 데이터를 같이 넘겨주는 객체를 선언
		RequestDispatcher rd = request.getRequestDispatcher("helloWorld.jsp"); // JSP 파일명 기술
		rd.forward(request, response);
	}

}

 

reqPro라는 메서드를 따로 만들어 doGet과 doPost에서 reqPro 메서드를 호출하는 일괄처리 방식을 사용하겠습니다.

파라미터와 예외처리는 doGet과 doPost 처럼 동일하게 선언합니다.

 

그리고 msg와 data 변수를 JSP로 넘겨주어야겠죠.

 

request.setAttribute를 이용하여 변수의 이름을 지정하고 값을 담아줍니다.

 

RequestDispatcher를 이용하여 위에서 초기화한 변수를 넘겨줄 JSP 파일명을 입력해줍니다.

그리고 forward 메서드로 넘겨주는 역할을 합니다.

이제 WebContent에 helloWorld.jsp 라는 JSP 파일을 생성하겠습니다.

 

 

 

 

주소를 보시면 서블릿 코드에서 매핑한 HelloWorld 주소로 연결되고 서블릿에서 작성한 코드가 잘 전달이 되었습니다.

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<h2>회원가입</h2>
		<form action="mproc2" method="post">
			<table width="400" border="1" bordercolor="gray">
				<tr height="40">
					<td width="150">아이디</td>
					<td width="250"><input type="text" name="id"></td>
				</tr>
				<tr height="40">
					<td width="150">비밀번호</td>
					<td width="250"><input type="password" name="password"></td>
				</tr>
				<tr height="40">
					<td width="150">이메일</td>
					<td width="250"><input type="email" name="email"></td>
				</tr>
				<tr height="40">
					<td width="150">전화번호</td>
					<td width="250"><input type="tel" name="tel"></td>
				</tr>
				<tr height="40">
					<td width="150">주소</td>
					<td width="250"><input type="text" name="address"></td>
				</tr>
				<tr height="40" align="center">
					<td calspan="2"><input type="submit" value="회원가입"></td>
				</tr>
			</table>
		</form>
	</body>
</html>

 

memberJoin2.jsp 파일을 만들어 회원가입을 예제로 작성해보았습니다.

 

form 태그의 action 경로가 다릅니다.

서블릿으로 데이터를 전송할 것이기 때문에 곧 아래에서 매핑할 mproc2 라는 이름으로 적어줍니다.

 

서블릿으로 넘어가서 request.getParameter .... setAttribute ... 회원가입에서 받아내는 항목 5가지 모두를 코드로 작성하기 전 MVC 패턴을 최대한 활용하기 위해 자바 리소스에 model 이라는 패키지를 만들고 MemberBean 클래스 파일을 생성해줍니다.

 

3. URL과 서블릿 매핑(Mapping)

이미 위에서 @WebServlet(String url) 이라는 어노테이션을 이용해 매핑을 해주었습니다.

xml을 이용하는 방법도 있지만 이게 가장 편하고 많이 쓰는 방법이라 xml로 쓰는 방법은 다루지 않겠습니다.

 

 

받아낼 항목들의 멤버변수를 private으로 지정해주고 Getter/Setter 코드를 작성합니다.

 

 

 

control 패키지에 MemberJoinProc2 라는 서블릿을 만들어 위와 같이 MemberBean 객체를 생성하고

그 객체에 request.getParameter로 파라미터 값을 MemberBean에 저장하고 request 객체에 저장한 MemberBean 클래스를 추가 후 memberView.jsp 페이지에 담아주었습니다.

 

 

 

memberView.jsp 파일을 만들어 EL 표기법으로 아이디와 패스워드를 출력합니다.

 

 

 

회원가입 페이지에서 정보를 입력합니다.

 

4. 실행 후 웹 브라우저에서 결과 확인

 

이렇게 mb(MemberBean) 객체에 저장해둔 아이디와 패스워드를 받아와 출력을 해보았습니다.

 

 

 

 

'BackEnd > JSP' 카테고리의 다른 글

MVC Model2 - 짧은 글로 이해하기  (0) 2020.05.09
JSP 내장 객체의 영역  (0) 2020.05.06
JSTL (JSP Standard Tag Library)  (0) 2020.05.05
EL (Expression Language) 예제  (0) 2020.05.05
JSP의 태그 종류  (0) 2020.05.05