Servlet

Servlet_기본개념

climb-up 2022. 4. 20. 22:28

Client browser요청 request(url) -->          Web Server          -->          **WAS        -->          DB Server
                        <--response(응답)   정적요소들 화면출력   로그인    동적인요소 보여줌    <--로그인 전달해줌
                                                                                                                                Servlet, JSP
브라우저를 요청하면 웹서버가 반환(정적요소)

 

Servlet

: 웹에서 동적인 페이지를 만들기 위해 java로 구현한 프로그램

 

**<서블릿 규약>
1) 모든 서브릿은 javax.servlet.Servlet인터페이스를 상속받아 구현
2) 서블릿 구현 시 Servlet인터페이스와 ServletConfig인터페이스를 javax.servlet.GenericServlet에 구현
**3. HTTP프로토콜을 사용하는 서블릿은 **javax.servlet.http.HttpServlet클래스**로 GenericServlet을 상속한 클래스
4. 서블릿에 대한 예외 처리를 하기 위해서는 javax.servlet.ServletException을 상속받아야 함.

<Servlet 라이프 사이클>
1) 첫 번째 요청일 경우, 객체를 만들면서 init() 메소드 실행
2) 작업이 실행될때마다 servise()메소드가 doGet()/doPost() 호출
-->보낸방식이 form method get-->doGet(), form method post-->doPost()실행
3) 서블릿이 끝나면 destroy()메소드 호출

HttpServletRequest(요청)
- getParameter()
- getParameterValues()
- setAttribute()
- getAttribute()
- setCharacterEncoding()
- getRequestDispatcher()

HttpServletResponse(응답)
- setContentType()
- getWriter()
- sendRedirect()

<서블릿 역할>
1) view에서 보낸 데이터 받아오기 (Controller)
2) 어떤 view에 보낼지 결정
3) 요청 url연결/지정/표기<--뷰에서 오는 데이터도 받을 수 있는 것.
3-1) **web.xml : 배포 서술자(DD, Deployment Descriptor) : 애플리케이션에 대한 전체 설정 정보를 담아오는 곳
3-2)@Annotation : 오버라이딩때 사용

서버하나에 프로젝트 여러개 올려도 상관없다.
하지만 프로젝트 동시에 사용할 때 프로젝트끼리 꼬여서 실행할 때 문제가 될 수 있다.
서버하나에 프로젝트 하나로 나눠줘야 한다.

 

<생성방법>
외부프로그램 다이나믹 웹 프로젝트 생성->next

src자바-->서버가 읽어야 실행 가능(자바가 컴파일이 된.)
WEB-INF로 읽는다.
WebContent/WEB-INF/classes-->웹클래스파일을 서버가 읽기 편하게 변경해준다.

wc화면구성넣는곳

**1_Servlet-->실행(애플리케이션 이름)=Context root
설정한 Context root 이름 설정이 중요하다. 어플이름이 되기 때문에
**세미프로젝트 이런게 아니라 다방이나 직방 이런 브랜드네임으로 설정해야한다

Content directory의 이름을 보안상 WebContent의 이름을 바꾸는게 좋다


delete ~디스크에 체크해서 삭제해야한다.
1) Run on Server : 서버에서 실행 시키기(컨트롤 + f11)
보안경고->액세스허용

윈도우->웹브라우저->크롬선택
: 이클립스에서 열리던 파일이 크롬으로 열림.(액세스 허용)

2) 첫번째꺼는 파일이고, 두번째는 로컬호스트랑 포트번호+어플리케이션이름이 뜬다.

 

3) 프로젝트파일 선택후 런->런온서버
: 뒤에 인덱스.html이 빠졌다. 하지만 결과가 똑같다
3-1)
웹컨텐츠 안에 있다고 다 실행되는건 아니다.
web.xml에 소스에 있는 것들 애플리케이션 실행할때 자동으로 보여줄 파일 지정(welcome file지정)

1)인덱스선택(인덱스만 실행) 2)프로젝트파일 선택(프로젝트 자체 실행) 두가지 방법
2번 방법으로 진행할 것이다.

부트스트랩은 틀이 정해져있다.class들
화면만 변경할 때->서버를 재실행하지않아도된다->브라우저 새로고침
기능단 변경할 때->서버 재실행 해야한다