회사/JSP

[JSP] 기본 개념

daykim 2023. 10. 6. 14:34
실전 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


  1. @PostConstruct
  2. init() : 생성
  3. service : 실행
  4. destroy() : 종
  5. @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 데이터 공유