[21.09.10] JSP

yed·2021년 9월 10일
0

JSP(java Server Page)

  • HTML 파일 안에 자바 코드를 포함하여 웹서버에서 동적으로 웹페이지를 생성해 브라우저로 리턴해주는 언어다.
  • 런타임 시 JSP 파일(.jsp)이 자바파일(.java)로 변환된다.(서블릿 클래스를 의미함)
  • HTML 표준을 지키기때문에 디자인이 편리함

JSP 구성 요소

  1. <%@ %> : Directive(지시자). JSP 페이지 전체에 적용하는 속성들을 설정한다. (import, page, charEncoding 등)
  2. <%! %> : Declaration(선언문). 멤버변수, 메소드, 내부클래스를 선언하는 부분으로 java에서 전역변수를 선언한 것과 동일한 위치다.
  3. <% %> : Scriptlet(스크립틀릿). 메소드(_jspService) 내부에서 실행되는 자바코드를 작성하는 부분. doService() 공간과 동일하다. 여기서 선언된 변수는 지역변수다.
  4. <%= %> : Expression(표현식). 변수의 값, 메소드의 리턴값 등을 HTML에 표현
  5. <%-- --%> : Comment(주석). JSP주석은 서블릿클래스로 변환될 때 코드로 변환되지 않아 읽지 못한다

JSP에서 출력하는 방법

1) console 로그출력

System.out.println("result="+result);

2) JSPWriter 객체를 이용해서 응답(response)으로 출력

out.write("<p>result ="+ result +"</p>\r\n");
가독성이 떨어지는 문제점이 존재

3) Expression 사용해서 출력. 자주 사용함

<p>결과 = <%=result %></p>

JSP와 Servlet은 거의 같다.
HTML->ServletJSP->Servlet가 가능하다. 그렇다면 JSP->JSP로 데이터 전송도 가능하다.
보통 데이터 가공은 서버사이드에서 다 끝내는게 좋다. 클라이언트 사이드에서 가공하면 사용자 환경에 부담이 되기 때문이다.

백엔드에서 클라이언트로 넘어온 데이터는 보안상의 이유로 어떻게 넘어왔는지에 대한 정보를 알 수 없다.
그래서 개발자툴에서 <%%>속 자바코드는 보이지않고 코드실행 결과로만 보여진다.

Directive(지시자)

기본타입

<%@ directive attribute="value" %>

directive 이름

  • <%@ page..%>
  • <%@ include..%>
  • <%@ taglib..%>

속성(attribute) 종류

  • contentType
  • errorPage
  • extends
  • import 등등
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<style>
.header{
  background-color: lightgreen;
  font-size: 200%;
  text-align: center;
  height: 60px; 
}
</style>
<% 
  String header="헤더 변수";
%>
<div class="header">
여기는 header입니다.
</div>
  • jspf : jsp fragment. jsp의 일부. html 양식이 없어도 오류가 생기지 않음.

jsp에서 필요한 위치에 <%@ include file="header.jspf"%> 사용하기

header.jspf의 url은 노출되지 않고 사용한 jsp 파일에 포함되는 형태로 제공된다.
jspf에서 선언한 변수는 다른 공간에서도 사용할 수 있다.

보통 페이지에서 header와 foot은 페이지 내용이 바뀌어도 똑같아서 하나의 파일로 만들어 사용하는데 그때 사용함.

directive include 특징

  1. JSP 파일이 자바 파일로 바뀔 때 최종적으로는 정적으로 문서에 삽입되어 컴파일된다.

  2. 다수의 JSP 페이지에서 공통으로 사용되는 코드를 작성하는 용도로 사용한다.

  3. 포함되는 jsp 파일에서 선언한 변수들은 포함하는 jsp파일에서 사용할 수 있다! 그래서 중복된 이름의 변수 선언에 주의해야 한다.

에러 처리

<%@ page errorPage="error.jsp" %>

발생하는 에러페이지를 그대로 보여주면 경로가 다 노출되기때문에 따로 페이지를 만들어서 처리를 해야한다.

액션 태그(Action Tag)

  • JSP 내에서 특정 동작을 하도록 지시하는 태그

  • 기본 타입
    <jsp:action_name attribute="value" />

  • action_name의 종류
    jsp:include
    jsp:useBean
    jsp:setProperty
    jsp:getProperty
    jsp:forward

  • 공통 속성
    id, scope, 등등

JSP:forward

<jsp:forward page="호출 경로"></jsp:forward>

  • 현재 페이지를 forward 페이지로 덮어쓴다
<21.10.05 추가>

jsp:include

<jsp:include page="파일 상대경로"></jsp:include>

  • 포함된 jsp파일을 요청할때마다 페이지를 동적으로 수행한다.
  • 별도의 파일에 대한 요청을 처리할 때 사용한다
    ex) 로그인 했을 때 특정 레이아웃만 변경해야 할때
  • 레이아웃의 일부분을 모듈화할때 사용한다. (화면을 나누는 건 directive:include와 동일함)
  • 포함된 jsp파일의 변수를 사용할 수 없다. 전체 페이지에서 불러온 일부분만 동적으로 적용되고 있기때문에 표면적으론 같은 페이지로 보이지만 공간이 분리되어 있는 것.

요즘에는 이 방법보단 ajax 비동기 방식을 사용한다.


주석쓸때 html용 <!-- --> 주석을 써서 <%%>나 액션태그를 쓰면 오류가 나더라구요 주의.,.. jsp주석쓸땐 <%-- --%>을 꼭 쓸것!

다른 폴더 속 하나의 파일에 접근하려면 상대경로는 ../로 현재 폴더 밖으로 나간 뒤에 접근.

profile
6개월 국비과정 기록하기

0개의 댓글