1. 배경지식
1-1. Static Pages 와 Dynamic Pages
1. Static Pages
- Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contentes를 반환합니다.
- 항상 동일한 페이지를 반환합니다.
2. Dynamic Pages
- 인자의 내용에 맞게 동적인 contents를 반환합니다
- 즉, 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물
1-2. Web Server와 WAS 차이
1. Web Server 개념
- 정적인 컨텐츠 제공 (html, css, js)
- 소프트웨어와 하드웨어로 구분
- 소프트웨어 : 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠를 제공하는 컴퓨터 프로그램
- 하드웨어 : Web 서버가 설치되어 있는 컴퓨터
2. Web Server의 기능
- HTTP 프로토콜을 기반으로 하여 클라이언트 (웹 브라우저 또는 웹 크롤러)의 요청을 서비스하는 기능을 담당
3. Web Server의 예
- Apache Server, Nginx, llS(Window 전용 Web 서버) 등등
4. Web Server를 사용하는 이유
- WAS 가 해야할 일의 부담을 줄이기 위해서. : WAS 앞에 웹 서버를 둬서 정적인 문서만 처리하도록 하고 WAS는 애플리케이션의 로직만 수행하도록 기능을 분배( 사진참고 )
2. WAS
1. WAS의 개념
- DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어짐
- HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어이다
- 웹컨테이너 혹은 서블릿 컨테이너라고도 불립니다.
- WAS는 JSP, Servlet 구동환경을 제공한다
2. WAS의 역할
- Web Server 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시되었습니다.
- 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산환경에서 사용됩니다.
3. WAS의 주요 기능
- 프로그램 실행 환경과 DB 접속기능 제공
- 여러개의 트랜잭션 관리 기능
- 업무를 처리하는 비즈니스 로직 수행
2. 실행
로그인 페이지에서 로그인을 눌렀을 시 동작하는 로직을 이용하여 싱글톤 패턴과 WAS에 대해서 공부했다
2-1. HTML
<body>
<pre>
<form action="loginAction.jsp">
ID : <input type="text" name="id">
PASSWORD : <input type="pwd" name="pwd">
<input type="submit" value="제출">
</form>
</pre>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td><img alt="이누마키 이미지" src="01.png" width="200" height="200"></td>
<td><img alt="이타도리 이미지" src="02.png" width="200" height="200"></td></tr>
</table>
</body>
수업시간에 table로 레이아웃을 잡은건 강사님 개인 취향이라 넘어가길 바람..
2-2. WAS의 동작 과정(tomcat 사용)
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
폼에서 name 값을 주었고 get 방식으로 보냈기 때문에 주소창에 id와 pwd를 getParameter로 잡아왔다 받아온 내용을 String타입의 id와 pwd의 변수에 넣었다. 주소창에서 받아온 내용은 숫자든 뭐든 다 String 형이기 때문이다
Board board = new Board(0, "홍길동", id, pwd, "", "", new Date(), 0, 0, 0, 0, "file"); // 12개
board = select(board);
미리 사원이 이름을 넣어놓은 생성자를 실행하고 그 값을 뽑아오기 위해서 select 함수를 실행했다
private static Board select(Board input) throws SQLException {
ConnectionPool pool = ConnectionPool.getInstance(url, user, password, 3, 5, true, 1000);
Connection conn = pool.getConnection();
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM BOARD WHERE EMAIL = '" + input.getEmail() + "' and pwd = '" + input.getPwd() + "'";
ResultSet result = stmt.executeQuery(sql);
Board board = null;
ResultSetMetaData meta = result.getMetaData();
System.out.println(meta.getColumnCount());
while (result.next()) {
board = new Board(result.getInt(1), result.getString(2), result.getString(3), result.getString(4),
result.getString(5), result.getString(6), result.getDate(7), result.getInt(8), result.getInt(9),
result.getInt(10), result.getInt(11), result.getString(12));
}
위 코드는 select 함수 전체이다
ConnectionPool pool = ConnectionPool.getInstance(url, user, password, 3, 5, true, 1000);
싱글톤 패턴으로 ConnectionPool 클래스를 만들었기 때문에 getInstance를 사용해서 생성자의 값을 가져온다(싱글톤 패턴의 생성자는 private이다) 또한 우리가 필드 변수로 만들어놓은 url과 user, password를 통해서 보드가 있는지도 확인 할 수있다
다음 pool.getConnection으로 db와 연결한다. sql문을 사용해야하기 때문에 Statement 객체도 생성한다
그 생성해놓은 Statement객체의 execueQuery()함수를 사용하여 sql문을 실행시킨다
처리가 되면 while문을 사용하여 모든 컬럼을 순회하며 뽑아온다
뽑아온 데이터를 return 시키고 그 내용을 출력 시킨다
'IT 연구소' 카테고리의 다른 글
SOLID 법칙과 스프링 (0) | 2023.09.28 |
---|---|
자바예제 수정하며 jsp액션 공부하기 (0) | 2023.09.05 |
참조형과 기본형 메모리 저장에 대하여 (0) | 2023.08.26 |
다형성 (0) | 2023.08.15 |
type casting (0) | 2023.08.14 |