본문 바로가기
BACK-END/Java

[JAVA] Sevlet, JSP

by 로햐 2022. 1. 16.

0. 세팅

workspace 세팅

  • java EE, window>show View>Navigator, window>preferences에서 encoding 값들 "UTF-8"(모든 작업환경 통일)

 

Server 설정

  • 서버 생성->생성할 서버 선택 -> 설치한 서버 폴더 선택(Apache Tomcat 등)
  • 서버 설정값>Server Options>Serve modelus without publishing 체크, Ports HTTP/1.1을 8080이외의 다른 번호로(현재 내 작업환경에서 Oracle 포트번호가 8080)

 

Dynamic Web Project

  •  
    생성할 때 Default output folder를  WebContent/WEB-INF/classes로 설정. WebContent가 배포되는 폴더이므로 내부에 Java Class를 올리기 위해서는 경로를 바꿔줘야함.
  • Context root : 배포될 프로젝트의 이름. 사람들에게 노출되는 이름. 추후에 수정 가능. Generate web.xml은 Context root
  • 서버에 Add and Remove로 애플리케이션 등록

 


1. Servlet이란?

Servlet = Server+Applet

Java의 클래스 유형 중 하나로, Web Project 시 사용자의 요청을 가공하여 Service-DAO를 통해 DB로 전달할 수 있도록 작동하는 Controller 역할을 수행한다.

 

*MVC 패턴을 적용한 자바 웹 프로젝트의 구성

Model ValueObject, DataAObject...

View : JSP, HTML...

Controller : Servlet

 

설정한 서버 매핑값으로 request 요청이 들어올 경우, 요청에 따른 일련의 작업들을 수행한 후 응답을 전달한다.

servlet을 생성하면 생성되는 class인 RequestGetServlet은 HttpServlet을 상속받고있고, HttpServlet자체에 GET과 POST외에 PUT이나 HEAD, TRACE 등 여러가지 방법이 존재. request의 method는 다양한 방식을 설정할 수 있으며, 'do메소드'의 형태로 오버라이딩해서 사용

 

Web Application에서 자주 사용하는 전송방식 Get과 Post

  • GET : 요청한 내용을 쿼리스트링에 담아 전달
  • POST : URL에 노출하지 않고 바디 부분에 넣어 전달. 요청하는 URL은 요청받는 연결 모두 확인 가능하므로 보안을 위해 post 선택. 길이 제약이 없음, 최대 요청 시간이 존재. POST는 기본적으로 IOS-8859-1방식이므로 request.getCharacterEncoding("UTF-8");로 인코딩 방식 지정을 해줘야 글씨가 깨지지않고 출력된다.

※doPost도 내부에서 doGet 메소드를 호출하므로, 실질적인 코드는 결국 doGet에 작성한다.

protected void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
    //코드들...
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
	throws ServletException, IOException {
	doGet(request, response);
}

servlet 내에서 응답페이지를 출력하는 방법

response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();

out.append("test");
out.println("<html>");

servlet에서 페이지를 이동하는 방법

request.getRequestDispatcher("이동할 페이지.jsp").forward(request, response); : 페이지에 재요청하면서 request를 유지

response.sendRedirect("요청할 페이지"); : 응답 페이지를 지정. 새로운 페이지로 이동.

 

전체 처리 과정

jsp/html

    ↓

request의 Parameter에 값을 넣어 저장

    ↓

servlet

    ↓

requets의 Parameter에서 값을 추출하여 활용. DB와의 통신 등 기타 작업

    ↓

request의 Attribute에 값을 넣어 응답 페이지 처리

    ↓

jsp/html

 

객체

page : 해당 페이지

request : JSP, HTML문서 등 요청과 응답의 대상

session : 해당 세션

Application : 해당 애플리케이션 전체


2. JSP란?

HTML 안에 Java code를 사용할 수있는 문서 형식으로, 기본적인 사용은 일반적인 HTML 문서와 동일하나 Java code를 Scripting Element로 감싸서 기술한다.

 

Scripting Element

  • <%    %> : Scriptlet : 문서 내에서 Java Code를 기술할 때 사용.
  • <%=  %> : Expression : Java Code의 값을 출력할 때 사용. 자동으로 ;가 붙은 것처럼 활용되므로 ;를 붙이지 않는다.
  • <%!   %> : Declaration : 해당 JSP 상에서만 사용할 수 있는 클래스, 멤버 변수 선언 ->메서드 안에서 메소드는 만들 수 없다. ->확인해볼것
  • <%@ %> : Directive : JSP 문서의 정보를 제시. 
    • page : contentType, errorPage, import, language, pageEncoding 등의 속성이 있다.
    • taglib : JSP 기능을 확장. 라이브러리 등록
    • include : JSP 안에 JSP 파일 삽입
  • <%-- --%> : Comment : JSP방식 주석. 개발자 도구 탭에 노출 X. 주석은 HTML방식과 JSP 방식 모두 사용 가능. 

 

'BACK-END > Java' 카테고리의 다른 글

[JAVA] 컬렉션과 배열들 간 자료형 바꾸는 방법  (0) 2022.04.03
[JDBC] Servlet Filter  (0) 2022.02.16
[JAVA] API-JDBC  (1) 2021.12.07
[Java] API-Stream(Input & Output)  (0) 2021.11.25
[Java] API-Collection과 Map  (0) 2021.11.23