서블릿의 비즈니스 로직 처리 방법

2022. 1. 31. 07:36·Back/JSP

웹 프로그램은 클라이언트의 요청에 대해서 비즈니스 처리 기능을 이용해 데이터 저장소에서 데이터를 조회한 후 서블릿의 응답 기능을 이용해 클라이언트에게 결과를 전송한다.

 

서블릿의 비즈니스 작업의 대표적인 예

∙ 웹사이트 로그인 요청 처리 작업

∙ 쇼핑몰 상품 주문 처리 작업

 

서블릿의 비즈니스 처리과정

 

서블릿의 데이터베이스 연동과정

 

서블릿에서 데이터베이스와 연동하는 과정은 자바의 데이터베이스 연동 과정과 같다.

클라이언트로부터 요청을 받으면 서블릿은 SQL문을 사용해 데이터베이스에 접근하여 작업한다.

이 과정에서 DAO와 VO 클래스가 사용된다.

 

회원 정보 조회 과정

 

t_member 구성

회원정보 테이블을 생성한 후 회원 정보를 추가하여 웹 브라우저에서 서블릿으로 요청, 데이터베이스와 연동해 회원 정보를 웹 브라우저로 출력하는 작업

 

--회원 테이블 생성
create table t_member(
    id varchar2(10) primary key,
    pwd varchar2(10),
    name varchar2(50),
    email varchar2(50),
    joinDate date default sysdate
);

--회원 정보 추가
insert into t_member
values('hong', '1212', '홍길동', 'hong@gmail.com', sysdate);

insert into t_member
values('lee', '1212', '이순신', 'lee@test.com', sysdate);

insert into t_member
values('kim', '1212', '김유신', 'kim@jweb.com', sysdate);

commit;

select * from t_member;

오라클 데이터베이스와 연동하는데 필요한 드라이버인 ojdbc6.jar을 프로젝트의 [WebContent]-[Web/INF]-[lib]에 복붙한다.

MemberServlet.java

package sec01.ex01;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;

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("/member")
public class MemberServlet extends HttpServlet 
{
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		response.setContentType("text/html;charset=\"UTF-8\"");
		PrintWriter out = response.getWriter();
		
		MemberDAO dao = new MemberDAO();
		List<MemberVO> list = dao.listMembers();
		
		out.print("<html><body>");
		out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
		out.print("<td>아이디</td> <td>비밀번호</td> <td>이메일</td> <td>가입일</td>");
		
		for(int i=0; i < list.size(); i++)
		{
			MemberVO memberVO = list.get(i);
			String id = memberVO.getId();
			String pwd = memberVO.getPwd();
			String name = memberVO.getName();
			String email = memberVO.getEmail();
			Date joinDate = memberVO.getJoinDate();
			
			out.print("<tr><td>" + pwd + "</td><td>" + name + "</td><td>" + email + "</td><td>" + joinDate + "</td><tr>");			
		}
		out.print("</table></body></html>");
	}
}

MemberDAO.java

package sec01.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


public class MemberDAO 
{
	//필드
	private Statement stmt;
	private Connection con;
	
	String url = "jdbc:Oracle:thin:@localhost:1521:xe";
	String user = "scott";
	String pwd = "tiger";
	
	public MemberDAO() {
		
	}
	
	//메소드
	public List<MemberVO> listMembers()
	{
		List<MemberVO> list = new ArrayList<MemberVO>();
		
		try {
			connDB(); //네 가지 정보로 데이터베이스를 연결한다.
			String query = "select * from t_member";
			System.out.println(query);
			ResultSet rs = stmt.executeQuery(query);
			
			while(rs.next()) {
				String id = rs.getString("id");
				String pwd = rs.getString("pwd");
				String name = rs.getString("name");
				String email = rs.getString("email");
				Date joinDate = rs.getDate("joinDate");
				
				MemberVO vo = new MemberVO(); //객체 생성
				vo.setId(id);
				vo.setPwd(pwd);
				vo.setName(name);
				vo.setEmail(email);
				vo.setJoinDate(joinDate);
				
				list.add(vo);
			}
			
			rs.close();
			stmt.close();
			con.close();	
		}catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}//listMembers()메소드
	
	private void connDB()
	{
		try 
		{
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("Oracle 드라이버 로딩 성공");
			
			con = DriverManager.getConnection(url, user, pwd);
			System.out.println("Connection 생성 성공");
			
			stmt = con.createStatement();
			System.out.println("Statement 생성 성공");
		}
		catch(Exception e) 
		{
			e.printStackTrace();
		}	
	}
}

MemberVO.java

package sec01.ex01;

import java.sql.Date;

public class MemberVO 
{
	//필드
	private String id;
	private String pwd;
	private String name;
	private String email;
	private Date joinDate;
	
	//생성자
	public MemberVO() {
		System.out.println("MemberVO 생성자 호출");
	}
	
	//Getter/Setter 메소드
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getJoinDate() {
		return joinDate;
	}

	public void setJoinDate(Date joinDate) {
		this.joinDate = joinDate;
	}
}

저작자표시

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

세션을 이용한 웹페이지 연동기능  (0) 2022.02.05
DataSource 이용해 데이터베이스 연동하기  (0) 2022.02.05
Port 8080 required by Tomcat v9.0 Server at localhost is already in use. 오류  (0) 2022.01.31
자바스크립트로 서블릿에 요청하기  (0) 2022.01.31
서블릿의 응답 처리 방법  (0) 2022.01.31
'Back/JSP' 카테고리의 다른 글
  • 세션을 이용한 웹페이지 연동기능
  • DataSource 이용해 데이터베이스 연동하기
  • Port 8080 required by Tomcat v9.0 Server at localhost is already in use. 오류
  • 자바스크립트로 서블릿에 요청하기
soyeon26
soyeon26
  • soyeon26
    개발 일지
    soyeon26
  • 전체
    오늘
    어제
    • 분류 전체보기 (107)
      • Web (22)
        • Web (1)
        • HTTP (0)
      • Language (29)
        • Java Script (3)
        • Type Srcipt (1)
        • Java (25)
      • Front (19)
        • HTML+CSS (4)
        • React (15)
      • Back (41)
        • Spring(Springboot) (9)
        • JSP (21)
        • Database (5)
        • NestJS (6)
      • Devops (6)
        • Docker (1)
        • Git & SVN (5)
      • App (7)
        • Android (7)
      • IT 정보 (3)
  • 블로그 메뉴

    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java의 정석
    Spring
    Next.js 필요성
    Java
    프론트엔드
    백엔드
    SQL강의 추천
    스프링부트
    서블릿
    React Next.js
    과학기술인등록번호 조회
    인프런
    sql강의
    자바스크립트set
    csr과ssr의 차이
    데이터베이스 강의
    과학기술인 등록
    김영한
    SSR
    React
    과학기술인 번호 발급
    csrvsssr
    과학기술인 등록번호 발급
    강의후기
    Next.js
    javascript
    과학기술인번호 조회
    강의 후기
    springboot
    중복제거
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
soyeon26
서블릿의 비즈니스 로직 처리 방법
상단으로

티스토리툴바