⭐ 서블릿이란?
: 서버쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스
⭐ 특징
- 서버쪽에서 실행되면서 기능을 수행한다
- 기존의 정적인 웹 프로그램의 문제점을 보완하여 동적인 기능을 제공한다
- 스레드 방식으로 실행된다
- 자바의 특징(객체 지향)을 가진다
- 독자적으로 실행되지 못하고 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다.
- 컨테이너의 종류에 상관없이 실행된다
- 보안기능을 적용하기 쉽다
- 웹브라우저에서 요청시 기능을 수행한다
⭐ Servlet : JAVA로 만든 웹서비스파일!
- ## 웹이 가지고 있는 자원들을 자바가 사용하고자 하는 것 ##
- 조건: JAVA 파일이 extends HttpServlet (상속) 하고있어야 한다
- servlet은 url에서 바로 요청할 수 없기 때문에 요청 주소를 생성해줘야 한다
주소 생성 방식 : web.xml에서 설정 / annotation
⭐ web.xml에서 servlet 매핑하기
브라우저에서 서블릿 이름으로 요청하려면, 프로젝트 이름 뒤에 패키지 이름이 포함된 클래스 이름 전부를 입력한다.
위의 방법은 클래스 이름이 길어지면 입력하기 불편하고, 보안에도 좋지 않다.
따라서, 서블릿 클래스 이름에 대응되는 서블릿 매핑 이름으로 실제 서블릿을 요청하도록 한다.
WebContent > WEB-INF > web.xml에 아래의 코드 추가
<servlet>
<servlet-name>frontcontroller</servlet-name>
<servlet-class>com.board.FrontBoardController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>frontcontroller</servlet-name>
<url-pattern>/board</url-pattern>
</servlet-mapping>
- <servlet> : 브라우저에서 요청하는 매핑 이름에 대해 실제로 실행하는 서블릿 클래스를 설정하는 태그
- <servlet-name> : 명칭을 부여해서, servlet내그와 servlet-mapping 태그를 연결시켜주는 역할
- <servlet-class> : 브라우저에서 요청하는 매핑 이름에 대해, 실제로 기능을 수행하는 클래스 서블릿 클래스 설정
- <servlet-mapping> : 브라우저에서 요청하는 논리적인 서블릿 설정
- <url-pattern> : 브라우저에서 실제 서블릿을 요청하는 논리적인 서블릿 이름
## 즉, 위와 같이 설정하면 url에 [/board]가 들어갈 때, [com.board.FrontBoardController]서블릿을 수행한다 ##
🚨 서블릿 매핑을 잘못한 상태로 톰캣을 실행하면, 웹 브라우저에서 정상적으로 실행되지 않는다.
서블릿 매핑을 할 때 문법이나 태그의 대소문자까지 주의해서 입력해야 한다.
🚨 다수의 서블릿을 매핑할 경우, web.xml에 태그와 태그를 각각 분리해서 작성해야 하고,
각 태그의 값이 같으면 안된다.
⭐ annotation 이용해서 servlet 매핑하기
서블릿 클래스 위에 annotation을 선언해줌으로써 위의 web.xml에 작성한 코드를 대신해줄 수 있다.
- HttpServlet을 상속받은 서블릿 클래수 위에 [ @WebServlet("/서블릿 매핑이름"); ] 선언
🚨 annotation 사용시, 매핑 이름이 이미 사용된 다른 매핑 이름과 중복되지 않도록 주의해야 한다.
⭐ 서블릿에서 클라이언트의 요청을 얻는 방법
String getPrarameter(String name) | name에 대한 전송된 값을 받아온다 |
String[] getparameterValues(String name) | 같은 name에 대해 여러 개의 값을 얻을 때 사용 |
Enumeration getParameterNames() | name값을 모를 떄 사용 |
⭐ 서블릿 함수 처리 순서
1. 한글처리
- request.setCharacterEncoding("UTF-8");
2. 데이터 받기
- String 변수명 = request.getParameter("name");
3. 요청 판단하기 (command방식 / URL주소 방식)
4. 결과 저장
5. view 지정
- RequestDispatcher dis = request.getRequestDispatcher(viewpage);
6. view에게 request객체 forward하기
- dis.forward(Request, response);
'Back > Java' 카테고리의 다른 글
[Spring] 파일업로드, 파일다운로드 (1) (0) | 2022.03.25 |
---|---|
RESTApi / XML로 데이터 응답하기 (0) | 2021.09.17 |
JDBC 기초 (0) | 2021.07.21 |
클래스의 개념 (Java) (0) | 2021.07.17 |