관리 메뉴

거니의 velog

(15) 표현 언어와 JSTL 6 본문

Java/Java_JSP

(15) 표현 언어와 JSTL 6

Unlimited00 2023. 9. 15. 21:20

(6) <c:url> 태그를 이용한 실습

* <c:url> 태그는 JSP 페이지에서 URL 정보를 저장하는 역할을 하며, 사용 형식은 다음과 같다.

<c:url var="변수이름" value="URL경로" [scope="scope 속성 중 하나"]
	[ <c:param name="매개변수이름" value="전달값" ]>
	...
</c:url>

* 여기서 var는 생성된 URL이 저장될 변수를, value는 생성할 URL을, scope는 scope 속성의 값을 지정한다.

1. urlTest.jsp를 다음과 같이 작성한다. <c:url> 태그를 이용해 다른 페이지로 이동하면서 데이터를 전달한다. 따라서 이동할 페이지로 전달할 데이터가 많을 경우에 사용하면 편리하다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
     import="java.util.*"
    pageEncoding="UTF-8"
    isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="contextPath" value="${pageContext.request.contextPath}" />
<!-- c:url태그로 이동할 페이지를 설정한다. -->
<!-- c:param으로 이동할 페이지로 전달할 데이터를 설정한다. -->
<c:url var="url1" value="/test01/member1.jsp">
    <c:param name="id" value="hong" />
    <c:param name="pwd" value="1234" />
    <c:param name="name" value="홍길동" />
    <c:param name="email" value="hong@test.com" />
</c:url>

<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title> c:url 태그 실습</title>
</head>

<body>
    <%-- <a href='${contextPath }/test01/member1.jsp'>회원정보출력</a> --%>
    <a href='${url1}'>회원정보출력</a> <!-- c:url 태그의 변수 이름을 간단하게 설정한다. -->
</body>

</html>

2. 다음의 주소로 요청한 후 회원정보출력을 클릭한다.

- http://localhost:8090/pro14/test03/urlTest.jsp

3. 매개변수로 전달된 회원 정보를 출력한다.


(7) <c:redirect> 태그를 이용한 실습

* <c:redirect> 태그는 지정된 JSP 페이지로 리다이렉트할 때 사용한다. response.sendRedirect() 기능과 동일하며, <c:redirect> 태그로 리다이렉트할 때 매개변수를 전달할 수 있다. 사용 형식은 다음과 같다.

<c:redirect url="redirect할 URL">
    [ <c:param name="매개변수이름" value="전달값" ]
    ...
</c:redirect>

* 여기서 url은 리다이렉트 될 URL이 저장될 변수를 지정한다.

1. <c:redirect> 태그를 이용해 회원 정보 출력창으로 리다이렉트한다. 리다이렉트하면서 회원 정보를 매개변수로 전달한다.

[redirectTest.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
     import="java.util.*"
    pageEncoding="UTF-8"
    isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%
  request.setCharacterEncoding("UTF-8");
%>

<html lang="ko">

    <head>
        <meta charset="UTF-8">
        <title>리다이렉트 페이지</title>
    </head>

    <body>
    	<!-- 리다이렉트할 페이지를 설정한다. -->
    	<!-- 리다이렉트할 페이지로 전달할 매개변수를 설정한다. -->
        <c:redirect url="/test01/member1.jsp">
            <c:param name="id" value="${'hong'}" />
            <c:param name="pwd" value="${'1234'}" />
            <c:param name="name" value="${'홍길동'}" />
            <c:param name="email" value="${'hong@test.com'}" />
        </c:redirect>
    </body>

</html>

2. 다음의 주소로 요청하면 test01/member1.jsp로 리다이렉트된다. 그러면서 매개변수로 전달한 회원 정보를 출력한다.

- http://localhost:8090/pro14/test03/redirectTest.jsp


(8) <c:out> 태그를 이용한 실습

* <c:out> 태그는 화면에 지정한 값을 출력해 주는 태그이다. 표현 언어와 기능은 거의 동일하지만 기본값 설정 기능 등을 제공하므로 더 편리하게 사용할 수 있다. 사용 형식은 다음과 같다.

<c:out value="출력값" default="기본값" [escapeXml="boolean값"] />

* 여기서 value는 출력할 값을, default는 value 속성에 지정된 값이 없을 때 출력할 기본값을, escapeXml은 escape 문자를 변환하는 역할을 한다(생략할 수 있으며 기본값은 true).

1. 다음은 회원 가입 창에서 입력한 회원 정보를 전달받아 <c:out> 태그를 이용해 화면에 출력하는 예제이다. 다음과 같이 memberForm.jsp를 작성하여 회원 가입창에서 회원 정보를 입력한 후 member9.jsp로 전달한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">

    <head>
        <meta charset="UTF-8">
        <title>회원 등록창</title>
    </head>

    <body>
        <form method="post" action="member9.jsp">
            <h1 style="text-align:center">회원 등록창</h1>
            <table align="center">
                <tr>
                    <td width="200">
                        <p align="right">아이디</p>
                    </td>
                    <td width="400"><input type="text" name="id"></td>
                </tr>
                <tr>
                    <td width="200">
                        <p align="right">비밀번호</p>
                    </td>
                    <td width="400"><input type="password" name="pwd"></td>
                </tr>
                <tr>
                    <td width="200">
                        <p align="right">이름</p>
                    </td>
                    <td width="400">
                        <p><input type="text" name="name"></p>
                    </td>
                </tr>
                <tr>
                    <td width="200">
                        <p align="right">이메일</p>
                    </td>
                    <td width="400">
                        <p><input type="text" name="email"></p>
                    </td>
                </tr>
                <tr>
                    <td width="200">
                        <p>&nbsp;</p>
                    </td>
                    <td width="400">
                        <input type="submit" value="가입하기">
                        <input type="reset" value="다시입력">
                    </td>
                </tr>
            </table>
        </form>
    </body>

</html>

2. member9.jsp를 다음과 같이 작성한다. <c:out> 태그를 이용해 전송된 매개변수 값들을 출력한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%
  request.setCharacterEncoding("UTF-8");
%>

<html>

    <head>
        <meta charset="UTF-8">
        <title>회원 정보 출력창 </title>
    </head>

    <body>
        <table align="center" border="1">
            <tr align="center" bgcolor="lightgreen">
                <td width="7%"><b>아이디</b></td>
                <td width="7%"><b>비밀번호</b></td>
                <td width="7%"><b>이름</b></td>
                <td width="7%"><b>이메일</b></td>
            </tr>
            <c:choose>
                <c:when test="${empty param.id}">
                    <tr align="center">
                        <td colspan="5"> 아이디를 입력하세요!!</td>
                    </tr>
                </c:when>
                <c:otherwise>
                    <tr align="center">
                        <td>
                            <c:out value="${param.id}" />
                        </td>
                        <td>
                            <c:out value="${param.pwd}" />
                        </td>
                        <td>
                            <c:out value="${param.name}" />
                        </td>
                        <td>
                            <c:out value="${param.email}" />
                        </td>
                    </tr>
                </c:otherwise>
            </c:choose>
        </table>
    </body>

</html>

3. 다음의 주소로 요청하여 회원 가입창에서 회원 정보를 입력한 후 가입하기를 클릭한다.

- http://localhost:8090/pro14/test03/memberForm.jsp

4. 그러면 <c:out> 태그를 이용해 전송된 회원 정보를 출력한다.

* 프로그래밍을 하다 보면 > 또는 < 그리고 작은따옴표(')나 큰따옴표(") 같은 특수 문자를 출력해야 하는 경우가 있다. 그런데 이런 특수 문자들은 HTML 태그에도 사용되므로 각각의 특수 문자에 지정된 문자를 이용해서 브라우저에 출력해야 한다.

* 다음 표는 각 특수 문자가 어떤 문자로 변화되는지 보여준다.

<escapeXml이 false일 때 변환되는 문자>

특수 문자 변환된 문자
< &lt;
> &gt;
& &amp;
' &#039;
" &#034;
. . . . . .

* 간단히 특수 문자 사용 예를 실습해 보자.

1. escapeXml.jsp를 다음과 같이 작성한다. <c:out> 태그의 escapeXml 속성을 이용해 변환된 문자를 특수 문자로 변환한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
     import="java.io.*"
    pageEncoding="UTF-8"
    isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
  request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>escapeXml 실습하기</title>
    </head>

    <body>
        <h2>escapeXml 변환하기</h2>
        <h2>
            <pre>
          <c:out  value="&lt;" escapeXml="true" /> <!-- escapeXml 속성이 true이므로 value의 &lt는 그대로 화면에 출력된다. -->
          <c:out  value="&lt;" escapeXml="false" /> <!-- escapeXml 속성이 false이므로 value의 &lt에 해당하는 특수 문자로 변환되어 화면에 출력된다. -->

          <c:out  value="&gt;" escapeXml="true" />
          <c:out  value="&gt;" escapeXml="false" />

          <c:out  value="&amp;" escapeXml="true" />
          <c:out  value="&amp;" escapeXml="false" />

          <c:out  value="&#039;" escapeXml="true" />
          <c:out  value="&#039;" escapeXml="false" />

          <c:out  value="&#034;" escapeXml="true" />
          <c:out  value="&#034;" escapeXml="false" />
            </pre>
        </h2>
    </body>

</html>

2. 다음의 주소로 요청하여 결과를 확인한다.

- http://localhost:8090/pro14/test03/escapeXml.jsp

* 지금까지 일반적으로 많이 사용하는 코어 라이브러리에 대해 알아봤다. 그 외 <c:import> 태그는 <jsp:include>와 같은 기능을 수행한다.

'Java > Java_JSP' 카테고리의 다른 글

(17) 표현 언어와 JSTL 8  (0) 2023.09.20
(16) 표현 언어와 JSTL 7  (0) 2023.09.18
(14) 표현 언어와 JSTL 5  (0) 2023.09.15
(13) 표현 언어와 JSTL 4  (0) 2023.09.15
(12) 표현 언어와 JSTL 3  (0) 2023.09.14