본문 바로가기
☕Java/Java EE(Jakarta EE)

[20210625] 자바 서블릿(Servlet), 자바 빈(Java bean)

by 캔 2021. 6. 25.

서블릿

서블릿은 클라이언트의 요청을 받아 처리하고 그 결과 값을 출력하여 웹 페이지(HTML 문서)를 생성하기 위한 자바 코드 또는 기술을 말한다. JSP와 동일한 기능을 수행한다. JSP는 HTML 문서에 자바 코드를 삽입한 파일이라고 한다면, 서블릿은 자바의 HttpServlet 클래스를 상속받아 만든 자바 코드라고 할 수 있다.

import java.io.IOException;
import java.io.PrintWriter;

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("/servlet")//애노테이션(annotation): 웹 폼에서 호출할 때 필요한 이름을 지정
public class Servlet extends HttpServlet{

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String str = request.getParameter("fruit");
		response.setContentType("text/html; charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<head>");
		out.println("</head>");
		out.println("<body>");
		
		out.println(str + " 좋아하시는군요");
		out.println("</body>");
		out.println("</html>");
	}
}

자바 코드와 다른 점은 main() 메서드를 쓰는 대신 service(), doGet(), doPost() 메서드를 HttpServlet 객체에서 오버라이드한다는 것이다. 임포트 문과 메서드 선언 사이에 @WebServlet("/servlet")과 같이 애노테이션을 적어 웹 폼에서 호출 시 코드를 실행할 수 있도록 해놓는다.

자바 빈(Java Bean)

자바에서 데이터 구조를 정의한 객체이며, 공식적으로는 자바 빈즈 컨벤션(Java Beans Convention)을 따라야 한다. 자바에서 데이터들을 private으로 선언하고, 생성자를 선언했으며, 접근자인 getter(get으로 시작하는 메서드)와 setter(set으로 시작하는 메서드)를 생성해놓은 형태의 자바 표준 데이터 구조를 가리킨다.

public class employee {
	private int empno;
	private String ename;
	private String hiredate;
	private int sal;
	private int manager;
	
	public int getEmpno() {
		return empno;
	}
	
	public void setEmpno(int empno) {
		this.empno = empno;
	}
	
	public String getEname() {
		return ename;
	}
	
	public void setEname(String ename) {
		this.ename = ename;
	}
	
	public String getHiredate() {
		return hiredate;
	}
	
	public void setHiredate(String hiredate) {
		this.hiredate = hiredate;
	}
	
	public int getSal() {
		return sal;
	}
	
	public void setSal(int sal) {
		this.sal = sal;
	}
	
	public int getManager() {
		return manager;
	}
	
	public void setManager(int manager) {
		this.manager = manager;
	}
	
	public int getDeptno() {
		return deptno;
	}
	
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}
	private int deptno;
}

이런 식으로 자바 빈 구조의 자바 파일을 만들어놓고 JSP 파일에서는 다음과 같이 불러올 수 있다.

//자바 빈 객체를 사용.
<jsp:useBean id="employee" class="employee" />
//자바 빈 객체의 변수(속성)에 값을 생성.
<jsp:setProperty name="employee" property="ename" value="홍길동" />

//값 호출 시에는 다음과 같이 사용
<jsp:getProperty name="employee" property="ename" />