실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌 정리
실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌 - 인프런 | 강의
기본 개념부터 차근차근 설명하며, 실제로 웹환경에서 구동되는 여러 어플리케이션을 만드는 실습을 함으로서 실전적인 지식을 쌓을 수 있도록 도와줍니다. 이 강좌를 모두 이행하기만 하면,
www.inflearn.com
웹 컨테이너 구조
- WAS (Web Application Service) 안에 웹 컨테이너가 있다.
- 컨테이너는 jsp 파일을 기계가 이해할 수 있도록 java 파일로 만들고, 컴파일 및 링크를 수행한다. -> + java 컴파일
Servlet
- 순수 Java 파일
- Servlet 파일 만들기
- URL Mapping
Servlet 맵핑
- Servlet을 외부에서 요청하기 쉽도록 특정 문자를 이용해 맵핑하는 방법
- full path를 사용할 경우, 보안에 취약하고 길고 복잡한 URL이 된다.
- Servlet Mapping을 통해 간결한 URL을 사용할 수 있게 한다.
web.xml 파일을 이용한 Mapping
<servlet>
<servlet-name>DDDD</servlet-name>
<servlet-class>com.xxx.DDDD</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DDDD</servlet-name>
<servlet-class>/짧은경로</servlet-class>
</servlet-mapping>
Java Annotation을 이용한 Mapping
@WebServlet("/짧은경로")
- 해당 servlet 위에 어노테이션을 넣는다.
- 이게 편해보이지만, 경우에 따라 .xml 파일을 이용해야할 수 있다.
Servlet request, response
HttpServlet
ServletConfig (interface) |
Servlet (interface) |
Serializable (interface) |
⬆️GenericServlet(abstract class) |
||
⬆️HttpServlet(abstract class) |
||
⬆️ServletFileName(class) |
- Java 파일을 servlet 객체로 만들 때, 반드시 HttpServlet을 상속 받아서 만들어야 한다.
- 많은 인터페이스와 추상 클래스를 상속받아 서블릿을 만드는 이유는, 웹 서버 어플리케이션과의 통신에서 많은 데이터가 오고가는데 필요한 많은 기능을 표준화해 만들어진 것이기 때문이다.
// 7:00
public class ServletName extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
}
}
HttpServletRequest
- 요청에 대한 정보를 가지고 있는 객체
- doGet() : 서블릿으로 요청되는 데이터 전송 방식이 Get 일 때 사용
- doPost() : 서블릿으로 요청되는 데이터 전송 방식이 Post 일 때 사용
request.getCookies();
request.getSession();
request.getAttribute(null);
request.setAttribute(null, null);
request.getParameter(null);
request.getParameterNames();
request.getParameterValues(null);
HttpServletResponse
- 응답에 대한 정보를 가지고 있는 객체
response.addCookie(null);
response.getStatus();
response.sendRedirect(null);
response.getWriter();
response.getOutputStream();
Servlet Life-Cycle
- @PostConstruct
- init() : 생성
- service : 실행
- destroy() : 종
- @PreDestroy
form 데이터 처리
form 태그
- 참고
- 대표적인 속성 : action, method
doGet
form 관련 태그 : method = "get"
request 객체 : doGet()
- get 메소드로 설정해 submit 버튼을 누르면, 사용자 정보가 URL에 노출되어 서버로 전송된다.
doPost
form 관련 태그 : method = "post"
request 객체 : doPost()
- post 메소드로 설정해 submit 하면, 데이터가 HTTP Request에 포함되어 웹서버로 전송된다.
- get 처럼 데이터가 노출되지 않고, 맵핑 정보만 노출된다.
public class ServletName extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
doGet(request, response);
}
}
- 실무에서 많이 쓰인다고 한다. 코드를 한 쪽으로 모은 것이다.
JSP 스크립트
<!-- 여기는 html 주석 -->
<%-- 여기는 JSP 주석 --%>
- JSP 주석은 jsp 파일이 서블릿 파일로 변환될 때 제외된다.
JSP 내장객체
config 객체
application 객체
out 객체
exception 객체
Servlet 데이터 공유