[JSP] 홈페이지 만들기 (1) : Servlet이란?

·2023년 11월 14일
0

jsp

목록 보기
13/18
post-thumbnail

1. Servlet 이란?

Servlet(서블릿) 은 Java 언어를 기반으로 하는 웹 애플리케이션 개발을 위한 기술이다.. Servlet은 동적인 웹 페이지를 생성하거나, 데이터베이스와 상호 작용하며 웹 어플리케이션의 백엔드 로직을 구현하는 데 사용된다. Servlet은 Java EE(Enterprise Edition) 스펙의 일부이며, Java의 표준 API에 속한다.

📌 Servlet 의 역할

  1. HTTP 요청 처리: 클라이언트로부터의 HTTP 요청을 받아들이고, 이에 대한 응답을 생성한다.
  2. 동적인 콘텐츠 생성: HTML, XML, JSON과 같은 동적인 콘텐츠를 생성하여 클라이언트에게 제공한다.
  3. 세션 관리: 클라이언트와 서버 간의 세션을 유지하고, 상태 정보를 관리한다.
    데이터베이스 연동: 데이터베이스와의 상호 작용을 통해 데이터를 검색하면 갱신한다.
  4. 웹 어플리케이션의 로직 구현: 비즈니스 로직을 처리하고, 웹 어플리케이션의 핵심 기능을 구현한다.

그럼 앞으로 내가 구현한 MyHome 을 서블릿으로 바꾸어 구현해 보고자 한다.

(1) Servlet 기본 : DB 설정

📌 0jdbc8.jar 파일 넣어주기


WEB-INF 파일 안에 있는 lib 에 jar 파일 넣어주기

📌 톰캣에서 제공하는 DB PoolBean 사용하기

이미 구축되어 있는 서버에 들어가 보면 server.xml 이 뜬다.

<Resource auth="Container" 
	type="javax.sql.DataSource" 
	name="jdbc/oracle" 
	driverClassName="oracle.jdbc.driver.OracleDriver" 	
	url="jdbc:oracle:thin:@localhost:1521:xe"
	password="fin01" 
	username="fin01"
	maxActive="10" 
	maxIdle="5" 
	maxWait="-1" 
/>

DB 관련 명령어 추가해 주기.


이런 식으로 context 태그 안에 써 줘야 하는데 원래는 context 태그가 /> 식으로 닫혀 있으므로 <Context>DB명령어</Context> 이렇게 맞춰 줘야 한다.

📌 DAO 에서 사용하는 법

1. DB 불러오기

package member;

import java.sql.*;
import java.util.*;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class MemberDAO {
	Connection con;
	PreparedStatement ps;
	ResultSet rs;
	
	static DataSource ds;
	static {
		try {
			Context initContext = new InitialContext();
			Context envContext = (Context)initContext.lookup("java:comp/env");
			ds = (DataSource)envContext.lookup("jdbc/oracle");
		}catch(NamingException e) {
			e.printStackTrace();
		}
	}
}

쉽게 보고자 작동하고 있는 MemberDAO 를 가져왔다.
여기서 중요한 점은 이전처럼 더이상 DB를 poolBean으로 떼왔다 반납하는 것이 아닌 톰캣에서 직접 제공하는 poolbean 을 사용하고 있기 때문에 DataSource 클래스로 이용이 가능하다는 것이다. jdbc/oracle 이라는 이름을 미리 정해 뒀기 때문에 그러한 방식을 따른다.

그렇다면 메소드는 어떻게 바뀌어야 할까.

2. DB 사용하기

	public int insertMember(MemberDTO dto) throws SQLException {
		try {
			con = ds.getConnection();
			String sql = "insert into member values"
					+ "(member_seq.nextval, ?,?,?,?,?,?,?,?,?,sysdate)";
			ps = con.prepareStatement(sql);
			ps.setString(1, dto.getName());
			ps.setString(2, dto.getId());
			ps.setString(3, dto.getPasswd());
			ps.setString(4, dto.getSsn1());
			ps.setString(5, dto.getSsn2());
			ps.setString(6, dto.getEmail());
			ps.setString(7, dto.getHp1());
			ps.setString(8, dto.getHp2());
			ps.setString(9, dto.getHp3());
			int res = ps.executeUpdate();
			return res;
		}finally {
			if (ps != null) ps.close();
			if (con != null) con.close();
		}
	}

insert 멤버 메서드로 보면 ds.getConnection() 을 통해 톰캣에서 제공하는 디비 열기로 들어가는 과정을 볼 수 있고, con을 닫아 반납하는 것을 볼 수 있다.

(2) Servlet 기본 : jsp 파일 위치

지금까지 jsp 에서 우리는 유효성 검사를 항상 해왔다.
왜? 만약 사용자가 url 을 타고 회원 가입 페이지에 들어왔을 경우 인증 받지 않은 DB 침입을 막을 수 없기 때문이다.

📌 WEB-INF 파일

WEB-INF 안에 들어있는 JSP 파일은 URL 을 통한 직접적인 접근 이 불가능하다.
업로드중..

이렇게 허용된 접근만 받을 수 있는 파일로 넣어 줘서 효율적으로 jsp 파일을 관리할 수 있다.

profile
자바 백엔드 개발자 개인 위키

0개의 댓글

관련 채용 정보