자바 웹 액션 태그

Dear·2025년 6월 12일

TIL

목록 보기
40/74

💙 액션 태그

스크립트릿, 주석, 디렉티브와 함께 JSP 페이지를 이루고 잇는 요소 중 하나

태그의 종류설명
<jsp:forward>다른 사이트로 이동할 때 사용
페이지의 흐름을 제어할 때 사용
<jsp:include>정적 혹은 동적인 자원을 현재 페이지의 내용에 포함시킨다.
페이지를 모듈화할 때 사용
<jsp:param><jsp:forward>, <jsp:include>, <jsp:plugin>과 같이 사용되어
파라미터를 추가할 때 사용
<jsp:useBean>빈(Bean)을 생성하고 사용하기 위한 환경을 정의하는 액션 태그
<jsp:setProperty>액션은 빈에서 속성 값을 할당
<jsp:getProperty>액션은 빈에서 속성 값을 얻어올 때 사용
  • <jsp:forward>나 <jsp:include> 같은 액션 태그는, 원래 JSP의 내장 객체와 자바 코드로 구현할 수 있는 기능을 태그 형태로 쉽게 사용할 수 있게 해주는 것이다.
  • 액션 태그는 xml 문법을 따른다.
    시작 태그와 함께 반드시 종료 태그 포함
    접두어(prefix) "jsp:" 붙여서 "<jsp:"> 로 시작해야한다.
 <jsp: . . . 속성="값" > 내용 </jsp: . . .>

<jsp : forward page = "actionTag.jsp">
  	<jsp : param name = "url" value = "red02.jsp"/>
    <jsp : param name = "news" value = "Happy New Year!"/>
</jsp : forward>

<jsp:... 속성="값" />
<jsp:forward page="yellow.jsp" /
  

<jsp:forward> 액션 태그

현재 JSP 페이지에서 URL로 지정한 특정 페이지로 넘어갈 때 사용하는 태그

<jsp:forward page="relativeURLspec"/>
 
// 서블릿상에서 동일한 동작하는 코드
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("url");
dispatcher.forward(request, response);

<jsp:param> 액션 태그

<jsp:forward> 액션 태그로 이동하는 페이지에 정보를 추가하고 싶을 경우 사용한다.
정보전달에 사용

단독으로 사용하지 못하고 <jsp:include>나 <jsp:forward> 태그의 내부에 사용한다.

<jsp:param name="파라미터" value="파라미터값" />

<jsp:forward page="이동할 페이지 경로">
  <jsp:param value="파라미터값" name="파라미터"/>
</jsp:forward>

<jsp:include> 액션 태그

현재 페이지에 다른 페이지의 내용을 동적으로 포함시키고자 할 경우 사용하는 태그

페이지 상단에 header.jsp, 페이지 하단에 footer.jsp 를 포함시키는데 이렇게 모듈별로 개별적인 여러 개의 페이지로 나눠서 작성하는 것을 모듈화라고 한다.


<jsp:include page = "urlSpec" flush="true" 또는 "false"/>
  • page : 삽입할 페이지의 주소를 기술(상대 경로 or 절대 경로)
  • flush : 출력 버퍼에 저장되어 있는 데이터를 내보낸다.

💙 쿠키(cookie)

사용자의 정보를 지속적으로 유지하기 위한 방법으로 사용

  • 서버가 아닌 클라이언트 컴퓨터의 하드디스크에 사용자의 정보를 저장한다.
  • 서버의 동작에 무리를 주지 않으면서 사용자의 정보를 적절하게 사용할 수 있다.

사용법

  • response 객체를 사용해서 쿠키 정보를 클라이언트에 저장
  • request 객체를 사용하여 가져옴

쿠기 설정

  1. 쿠키 객체를 생성
  2. 쿠키에 속성 값을 설정
  3. response 객체의 addCookie() 메소드를 호출하여 쿠키를 추가
Cookie(java.lang.String name, java.lang.String value)

Cookie info = new Cookie("testCookie","First Cookie!");
메소드설명
void setComment(String)쿠키에 대한 설명을 설정
void setDomain(String)쿠키의 유효한 도메인을 설정
void setMaxAge(int)쿠키의 유효한 기간을 설정
void setPath(String)쿠키의 유효한 디렉토리를 설정
void setSecure(boolean)쿠키의 보안을 설정
void setValue(String)쿠키의 값을 설정
void setVersion(int)쿠키의 버전을 설정
String getComment()쿠키에 대한 설명을 알려줌
String getDomain()쿠키의 유효한 도메인 정보를 알려줌
int getMaxAge()쿠키가 사용할 수 있는 기간에 대한 정보를 알려줌
String getName()쿠키의 이름을 알려줌
String getPath()쿠키의 유효한 디렉토리 정보를 알려줌
boolean getSecure()쿠키의 보안이 어떻게 설정되어 있는지를 알려줌
String getValue()쿠키에 설정된 값을 알려줌
int getVersion()쿠키의 버전을 알려줌

// 1. Cookie 객체 생성
Cookie c = new Cookie("id", "pinksung");

// 2. 유효기간 설정
// 1년을 초 단위로 환산
c.setMaxAge(365 * 24 * 60 * 60);

// 3. 클라이언트에 쿠키 전송
response.addCookie(c);

// 4. 쿠키를 생성하여 클라이언트에 전송
response.addCookie(new Cookie("pwd", "test1234"));
response.addCookie(new Cookie("age", "20"));

서버가 클라이언트로부터 쿠키 정보 얻어오기

  1. 쿠키 객체를 얻어온다.
  2. 쿠키 객체에 설정된 값을 알아낸다.
  • requset 객체의 getCookies() 메소드 사용해 쿠키 객체들을 언어온다.
  • getCookies() 의 리턴값은 배열
Cookie[] cookies = request.getCookies();
for (Cookie c : cookies) {
    out.println(c.getName() + " : " + c.getValue() + "<br>");
}

// 쿠키 삭제 -> 유효기간 만료시키기
Cookie cookie = new Cookie("id", "");
cookie.setMaxAge(0);  // 쿠키의 유효기간을 만료시킴
response.addCookie(cookie);

단점

  • PC방과 같이 여러 사람이 PC를 공유하는 경우에는 개인 정보가 유출될 수 있다.

💙 세션(session)

사용자와 서버 간의 상태를 유지하기 위한 식별 수단

  • 서버 상에 존재하는 객체로서 브라우저 단위당 한 개씩 존재
  • 웹 브라우저를 닫기 전까지 페이지를 이동해도 사용자의 정보를 잃지 않고 서버에 보관할 수 있는 객체이다.

장점

  • JSP(서버)에서만 접근 가능하므로 보안 유지에 강력
  • 저장할 수 있는 데이터에 한계가 없다.

세션 메소드


메소드설명
Object getAttribute(String name)이름에 해당되는 객체 값을 가져온다. 없을 경우 null 반환. 반환값은 Object형이라 형변환 필요
Enumeration getAttributeNames()세션에서 모든 객체의 이름을 Enumeration 형태로 얻어 준다
long getCreationTime()세션이 만들어진 시간을 반환한다
String getId()해당 세션을 가리키는 고유 ID 값을 String으로 반환
long getLastAccessedTime()해당 세션이 마지막으로 요청을 받은 시간을 long으로 반환
int getMaxInactiveInterval()세션이 유지되는 최대 시간을 초 단위로 반환
boolean isNew()세션이 처음 생성되었으면 true, 아니면 false 반환
void removeAttribute(String name)지정된 이름에 해당하는 객체를 세션에서 제거
void setAttribute(String name, Object value)세션에 지정된 이름으로 객체를 추가
void setMaxInactiveInterval(int interval)세션의 최대 유지 시간을 설정 (초 단위)
void invalidate()해당 세션을 제거하고 그 안의 값들도 모두 삭제
session.setAttribute("id", "jjang gu");
session.setAttribute("pwd", "1234");
session.setAttribute("age", 20);
  • 세션에 저장된 값을 가져오는 getAttribute()는 Object 형으로 리턴
  • 세션에 저장된 모든 값을 얻어올때는 getAttributeNames()로 Enumeration 형으로 리턴
String id_str = session.getId();
long lasttime = session.getLastAccessedTime();
long createdtime = session.getCreationTime();
long time_used = (lasttime - createdtime) / 60000;
int inactive = session.getMaxInactiveInterval() / 60;
boolean b_new = session.isNew();

세션 제거

removeAttribute() 메소드 사용
모두 사라지게 하려면 invalidate() 사용

🤍 회고

이번에 액션 태그, 세션, 그리고 쿠키에 대해 학습하였다.
이 세 가지는 JSP에서 웹 프로그래밍을 할 때 매우 자주 사용되는 개념들이기 때문에 정확하게 이해하고 익혀두는 것이 중요하다.
이 세 가지 기술은 각각의 용도와 특징이 다르며, 실무에서 자주 활용되기 때문에 단순히 사용하는 것에 그치지 않고 동작 방식과 차이점까지 명확히 이해하는 것이 중요하다고 느꼈다.

앞으로도 예제를 반복해서 실습하며 자연스럽게 익히고, 언제든 활용할 수 있도록 숙련도를 높여야겠다.

profile
친애하는 개발자

0개의 댓글