0919 서블릿

정혜지·2022년 9월 20일

2022.09.19
http://www.ictweek.kr/
https://tomcat.apache.org/tomcat-8.5-doc/deployer-howto.html
https://docs.oracle.com/cd/B14099_19/web.1012/b14017/overview.htm#i1003587

[학습]

  1. Server
  • Web Server
    • 웹 브라우저를 클라이언트로부터 HTTP요청을 받아들이고 HTML 문서와 같은 웹 페이지를 반환
    • 정적 컨텐츠 제공
    • 동적 컨텐츠를 위한 요청 전달
  • WAS(Web Application Server)
    • 인터넷 상에서 HTTP프로토콜을 통해 사용자 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어
  • Web Server와 WAS
    - 기능을 분리하여 서버의 부하 방지
    • 물리적으로 분리하여 보안 강화
    • 여러대의 WAS 분산시켜 서비스를 제공
  1. Servlet
  • 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술

  • 특징

    • 클라이언트의 Request에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
    • 기존의 정적 웹 프로그램의 문제점을 보완하여 동적인 여러 가지 기능을 제공
    • JAVA의 스레드를 이용하여 동작
    • MVC패턴에서 컨트롤러로 이용됨
  • 생명주기 Life Cylce

    1. 초기화 : init()
    • 서블릿 요청 시 맨 처음 한 번 호출
      • 서블릿 생성 시 초기화 작업
    1. 작업 수행 : doGet(), doPost()
    • 서블릿 요청 시 매번 호출
    • 클라이언트가 요청하는 작업 수행
  1. 종료 : destroy()
    • 서블릿이 기능을 수행하고 메모리에서 소멸
    • 서블릿의 마무리 작업
  • API

    1. HttpServletRequest

      • client가 전송하는 데이터를 보유하고 서버에 제공하는 기능
      • 요청하는 client 의 정보를 모든 정보 보유
      • 회원가입이라 가정
        : 가입정보를 이 객체로 부터 받아서 검증 후에 db에 insert
      1. 주요 메소드
        1. String getParameter("key")
          • client가 전송하는 web querry string 데이터 반환하는 메소드
    2. HttpServletResponse

      • 요청한 client에게 응답하는 기능
      1. 주요 메소드
        1. setContentType("응답 포맷(MIME type과 인코딩)")
          • 브라우저에 서비스 하는 데이터 포맷과 인코딩
        2. PrintWriter getWriter()
          • 2byte단위로 한글 데이터를 브라우저에 출력
    3. HttpServlet

      1. client와 server간의 인터넷상 통신 규약인 http를 이미 완벽에 가깝게 구현한 클래스
      2. 사용자 정의 servlet 들이 상속
      3. 주요 메소드
        1. protected void doGet(HttpServletRequest, HttpServletResponse)
        2. protected void doPost(HttpServletRequest, HttpServletResponse)
  • JSP Java Server Page
    - *.jsp
    • 용도 : view 로직
    • 요소 : HTML / CSS / JS / JSP Tags / 순수 자바
    • 권장 : 가급적 순수 자바 코드는 최소화 개발

// CustomerDAO
private static CustomerDAO instance = new CustomerDAO();
public static CustomerDAO getInstance() {
return instance;
}

public static ArrayList<Customer> userData = new ArrayList<Customer>();

static {
	userData.add(new Customer("it1", "it1", "S"));
	userData.add(new Customer("it2", "it2", "A"));
	userData.add(new Customer("it3", "it3", "B"));
	userData.add(new Customer("it4", "it4", "C"));
	userData.add(new Customer("it5", "it5", "D"));
}






	// 시나리오
	/* 
	 * 1) add.html (회원가입)
	 * 	- form - input : id, pw, grade, - input : submit 가입
	 * 2) /check (회원 검증)
	 * 	- 입력된 아이디가 가상의 db 존재한다면! -> 회원 가입 실패 : fail(Servlet)
	 * 		- "회원 가입 실패 : 동일한 id 존재"
	 * 	- 입력된 아이디가 가상의 db 존재하지 않는다면! -> 회원 가입 성공 : success(Servlet)
	 * 		- "{getAttribute("company") -> "IT" } 회원 가입 성공 : {입력한 id}"
	 */

String id = request.getParameter("id");
String pw = request.getParameter("pw");
String grade = request.getParameter("grade");

	boolean t = false;

	ArrayList<Customer> users = CustomerDAO.userData;
	for(Customer i : users) {
		if(i.getId().equals(id)) {

// System.out.println("회원 가입 실패 : 동일한 id 존재");
// response.sendRedirect("fail");
// break ;
t = true;

		}

// else {
// request.setAttribute("company", "IT");
// System.out.println(request.getAttribute("company") +"회원 가입 성공 : " + id);
// request.getRequestDispatcher("success").forward(request, response);
// break ;
//
//
// }
}
if( t == true) {
response.sendRedirect("fail");
} else {
request.setAttribute("company", "IT");
System.out.println(request.getAttribute("company") +"회원 가입 성공 : " + id);
request.getRequestDispatcher("success").forward(request, response);

profile
오히려 좋아

0개의 댓글