일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JavaScript
- useMemo
- React.memo
- prettier-plugin-tailwindcss
- useEffect
- TypeScript
- useCallback
- prettier
- Sparkplug
- 프로세스
- linux 배포판
- Render Queue
- Event Loop
- docker
- CS
- 주니어개발자
- Compound Component
- Dockerfile
- 타입 단언
- task queue
- Microtask Queue
- Headless 컴포넌트
- react
- Custom Hook
- AJIT
- useLayoutEffect
- type assertion
- 명시적 타입 변환
- 좋은 PR
- 암묵적 타입 변환
- Today
- Total
구리
TIL_210422_JSP 표준 액션 태그 본문
목차
- 표준 액션 태그
- <jsp:forward>
- <jsp:include>
- <jsp:param>
표준 액션 태그
미리 정해진 기능들을 JSP 스펙에 명시함으로써 모든 컨테이너가 동일하게 구현하는 태그
모든 JSP 컨테이너에서 기본으로 제공하고 있어서 기본 액션 태그라고도 함
태그 사용시에는 <태그 라이브러리 이름 : 태그 이름> 으로 함
표준 액션 태그 종류
jsp : attribute
jsp : forward
jsp : getProperty
jsp:include
jsp:param
jsp:setProperty
jsp:useBean
나머지는 생략
<jsp:forward>
forward 표준 액션 태그는 RequestDispacther 객체의 forward() 메소드 기능을 실행
하나의 jsp 페이지에서 다른 jsp 페이지로 요청 처리를 전달할 때 사용
현재 실행중인 페이지와 forward에 의해 호출될 페이지는 request, response 객체를 공유
즉, forward 방식은 이동한 URL로 요청정보를 그대로 전달하기에 사용자가 최초로 요청한 요청정보는 다음 URL에서도 유효
문법
<jsp:forward page="포워딩될 페이지" />
<jsp:param name="파라미터 이름" value="파라미터값" />
</jsp:forward>
예제 1 (forwardForm1.jsp -> forwardFrom1.jsp -> forwardTo1.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>포워드 실행할 파일 : forwardForm1.jsp</title>
</head>
<body>
<h3>포워드 첫번째 예제 : 입력받은 값을 forwardFrom1.jsp에게 전달</h3>
<form action="forwardFrom1.jsp" method="post">
아이디 : <input type="text" name="id" required="required" />
<br />
비밀번호 : <input type="password" name="pwd" required="required" />
<br />
<input type="submit" value="로그인" />
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forwardFrom1.jsp : id와 pwd 파라미터 값을 전달 받음 (request)</title>
</head>
<body>
<h2>전달 받은 파라미터를 forwardTo1.jsp에게 전달(request)</h2>
이 페이지는 forwardFrom1.jsp 파일의 내용 입니다
<br />
<%
request.setCharacterEncoding("UTF-8");
// 아이디를 한글로 입력했을때 깨지는 것을 방지하기 위해 작성
%>
<jsp:forward page="forwardTo1.jsp"></jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forwardTo1.jsp : forwardFrom1.jsp로부터 전달 받은 request 이용</title>
</head>
<body>
<%
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
%>
<%=id %> 님의 비밀번호는 <%= pwd %> 입니다.
</body>
</html>
보시다시피 forwardFrom1.jsp에서 바로 forwardTo1.jsp 페이지로 이동 후 실행결과가 클라이언트에게 응답하기 때문에
forwardFrom1.jsp 에서 출력한 내용을 클라이언트는 받지 못한다
예제 2 ( 사용자의 이름과 혈액형을 입력받아 각 혈액형별 특징을 보여주는 코드 )
(forwardForm2.jsp -> forwardFrom2.jsp -> a / b / ab / o.jsp)
forwardForm2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forwardForm2.jsp : 이름과 혈액형 선택 값을 forwardFrom2.jsp에게 전달</title>
</head>
<body>
<form action="forwardFrom2.jsp" method="post">
이름 : <input type="text" name="name" required="required" />
<br />
혈액형은? <br />
<input type="radio" name="bloodType" value="a" />A형 <br />
<input type="radio" name="bloodType" value="b" />B형 <br />
<input type="radio" name="bloodType" value="ab" />AB형 <br />
<input type="radio" name="bloodType" value="o" />O형 <br />
<input type="submit" value="제출" />
</form>
</body>
</html>
forwardFrom2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forwardFrom2.jsp : forwardForm2.jsp로부터 전달받은 파라미터 (request)</title>
</head>
<body>
<h3>전달받은 파라미터를 이용하여 혈액형.jsp에게 포워딩</h3>
<%
request.setCharacterEncoding("UTF-8");
String bloodTypeFile = request.getParameter("bloodType") + ".jsp";
%>
<jsp:forward page="<%=bloodTypeFile %>"></jsp:forward>
</body>
</html>
a.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>a.jsp : A형 선택</title>
</head>
<body>
<%
String name = request.getParameter("name");
String bloodType = request.getParameter("bloodType");
%>
<%= name %>님의 혈액형은 <br />
<%= bloodType %> 형으로 성실하고 신중하며 완벽주의자 입니다.
</body>
</html>
나머지 혈액형
b.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>b.jsp : B형 선택</title>
</head>
<body>
<%
String name = request.getParameter("name");
String bloodType = request.getParameter("bloodType");
%>
<%= name %>님의 혈액형은 <br />
<%= bloodType %> 형으로 규격을 싫어하는 자유인입니다.
</body>
</html>
ab.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ab.jsp : AB형 선택</title>
</head>
<body>
<%
String name = request.getParameter("name");
String bloodType = request.getParameter("bloodType");
%>
<%= name %>님의 혈액형은 <br />
<%= bloodType %> 형으로 정확한 판단력을 가진 합리주의자입니다.
</body>
</html>
o.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>o.jsp : O형 선택</title>
</head>
<body>
<%
String name = request.getParameter("name");
String bloodType = request.getParameter("bloodType");
%>
<%= name %>님의 혈액형은 <br />
<%= bloodType %> 형으로 강한 의지의 소유자입니다.
</body>
</html>
<jsp:include>
서블릿에서 RequestDispacther 객체의 include() 메서드 기능을 실행하는 표준 액션 태그
다른 페이지를 현재 페이지에 포함하고자 할 때 사용하는 태그
해당 페이지를 로딩하다가 include 태그를 만나면 page 속성으로 지정된 페이지에 결과를 해당 위치에 출력한 후 나머지 부분을 로딩함
메인 페이지와 include 된 페이지는 request 를 공유함
문법
<jsp:include page="삽입할 페이지명" flush="false">
<jsp:param name="파라미터명" value="파라미터값" />
</jsp:include>
include 지시자와 표준액션 태그의 차이 ?
A.jsp 파일에 <%@ include file="B">으로 파일을 포함하면 JSP 파일에 자바 소스로 변환될 때 B페이지가 포함된다
소스가 포함된 후 컴파일되어 클래스 파일이 만들어진다
하지만 A.jsp 파일에 include 액션 태그를 사용하면 실행될 때 B.jsp 파일이 포함된다
따라서 동적으로 포함하려면 include 표준 태그를 사용한다
예시 (includeForm.jsp -> includeMain.jsp -(include)-> includeSub.jsp )
includeForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>includeForm.jsp : 입력된 값을 includeMain.jsp에게 전달</title>
</head>
<body>
<form action="includeMain.jsp">
이름 : <input type="text" name="name" required="required" />
<br />
<input type="submit" value="보내기" />
</form>
</body>
</html>
includeMain.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>includeForm.jsp 로부터 전달받은 값을 includeSub.jsp에게 전달</title>
</head>
<body>
<h3>includeMain.jsp은 전달받은 값을 includeSub.jsp에게 전달하고</h3>
<h3>includeSub.jsp의 결과물을 포함시킨다(돌려받는다)</h3>
<hr />
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:include page="includeSub.jsp" flush="false"></jsp:include>
<hr />
<h4>includeMain.jsp 파일 내용의 끝부분</h4>
</body>
</html>
includeSub.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name=request.getParameter("name");
%>
포함되는 페이지 - includeSub.jsp
<br />
<%= name %>님 환영합니다~
예시2 ( includeForm2.jsp -> includeMain2.jsp -(include)-> includeSub2.jsp )
includeForm2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>includeForm2.jsp</title>
</head>
<body>
<form action="includeMain2.jsp" method="post">
사이트 주소 : <input type="url" name="siteName" required="required" />
<br />
<input type="submit" value="사이트주소 전송" />
</form>
</body>
</html>
includeMain2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>includeMain2.jsp : includeSub2.jsp 를 포함</title>
</head>
<body>
<h3>아래 구분선 사이에 포함됩니다</h3>
<hr />
<%
String site = request.getParameter("siteName");
%>
<jsp:include page="includeSub2.jsp">
<jsp:param value="<%=site %>" name="siteURL"/>
</jsp:include>
<hr />
</body>
</html>
includeSub2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String site = request.getParameter("siteURL");
%>
includeSub2.jsp 페이지
<br />
<%= site %>
<br />
includeSub2.jsp 페이지 END
<jsp:param>
데이터를 넘겨주어 공유하고 싶을 때 사용하는 액션 태그로 <jsp:include>나 <jsp:forward> 액션 태그의 자식 태그로 추가한다
jsp:param 태그는 String 타입만의 값을 전달한다
문법
<jsp:forward page="forward 시킬 JSP 페이지">
<jsp:param name="파라미터키" value="값" />
</jsp:forward>
아래와 같이 표현식으로 사용하여 매번 로직에 따라 동적인 값을 넘겨줄 수 있다
<%
String value = "forwarding value"; //필요에 따라 동적인 값을 할당
%>
<jsp:forward page="forwarding.jsp">
<jsp:param name="파라미터키" value="<%= value %>"/>
</jsp:forward>
forwarding 되는 JSP 쪽에서는 request 객체를 이용해 값을 얻을 수 있다
<%
String value1 = request.getParameter("파라미터키");
%>
예시 ( main.jsp -> templateTest.jsp -> left / bottom / top / content.jsp)
( top.jsp --(<a href>) --> main / comp_forward.jsp --(forward) --> template.jsp )
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>main.jsp</title>
</head>
<body>
<jsp:forward page="templateTest.jsp">
<jsp:param value="content.jsp" name="CONTENT_PAGE"/>
</jsp:forward>
</body>
</html>
templateTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>전체 레이아웃 페이지</title>
</head>
<body>
<%
String contentType=request.getParameter("CONTENT_PAGE");
%>
<table border="1" width="600" >
<tr height="80">
<td colspan="2" bgcolor="#215f36">
상단 메뉴 :
<jsp:include page="top.jsp" flush="false"></jsp:include>
</td>
</tr>
<tr height="500">
<td valign="top" width="100" bgcolor="#fae100">
좌측메뉴 :
<jsp:include page="left.jsp" flush="false"></jsp:include>
</td>
<td valign="top">
content.jsp (단 상단메뉴 클릭시 변경 가능)
<jsp:include page="<%= contentType %>" flush="false"></jsp:include>
</td>
</tr>
<tr height="80">
<td colspan="2" bgcolor="#5eba8d">
botton.jsp
<jsp:include page="bottom.jsp" flush="false"></jsp:include>
</td>
</tr>
</table>
</body>
</html>
left.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<br />
회사 소개
<br />
제품소개
bottom.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
찾아오시는 길 | 개인보호정책 | 도움말 | 약관
top.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<a href="main.jsp">HOME</a>
<a href="comp_forward.jsp">회사소개</a>
<a href="#">제품소개</a>
comp_forward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:forward page="templateTest.jsp">
<jsp:param value="comp.jsp" name="CONTENT_PAGE"/>
</jsp:forward>
comp.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
여기는 회사 소개 페이지 입니다.. (com.jsp)
'JSP,Serlvet' 카테고리의 다른 글
TIL_210423_쿠키, 세션 (0) | 2021.04.27 |
---|---|
TIL_210426_JSTL ,Servlet 기초 (0) | 2021.04.26 |
TIL_210421_JSP 기초2 (label, forward, application, JSP파일 데이터 옮기는 방법, 한글 변수 안 깨지게 전달하는 방법) (0) | 2021.04.21 |
TIL_210420_JSP 기초 (0) | 2021.04.20 |
HTML, JSP) 다른 페이지로 이동하는 법 (0) | 2021.04.20 |