GDJ 8/17

Yongha Hwang·2023년 8월 17일
0

JSP

1.JAVA Bean

Scriptlet 을 최소화 시키려 하는 이유는 JAVA LOGIC 과 HTML 을 분리 시키기 위해서 이다.
JAVA Bean 을 이용 하면 JAVA CODE 의 일부를 분리 할 수 있다.

  • Bean
    여러 JSP에서 생성되는 데이터의 창고 역할을 한다.
id = 빈을 호출할때 사용할 이름 
class = 사용할 빈 클래스의 위치 
scope = page, request, session, application 
<jsp:useBean id="" class="" scope=""/>

<!--  Scriptlet 사용 -->
<%--
	String name = request.getParameter("userName");
	firstBean.setName(name);
	response.sendRedirect("result.jsp");
--%>
<!--  Action tag 사용 -->
<!-- 
	name = 사용할 빈 이름
	property = 사용할 멤버 변수
	value = 값을 직접 넣을때
	param = 파라메터를 받아서 넣을때
 -->
<jsp:setProperty name="firstBean"  property="name" value="홍길동"/>
<jsp:setProperty name="firstBean"  property="name" param="userName"/>
<!--  액션태그에는 redirect가 없어서 forward를 사용해야 한다. -->
<jsp:forward page="result.jsp"/>

2.EL Tag

Expression Language Tag
<%%>을 간단하게 표현하기 위함이 목적

3.JSTL

Scriptlet을 줄이기 위해 Action tag 를 사용 한 것처럼 개발자들은 Custom Tag를 제작 할 수 있으며 이중 자주 사용되고 유용한 것들을 모아 만든 라이브러리가 JSTL이다.
jsp 파일 최상단에 아래와 같은 내용을 추가 해 준다.
<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

  • Set
    <c:set var="변수명" value="값" [scope="영역"]/>
    <c:set var="변수명" [scope="영역"]>값</c:set> //scope영역 생략시 -> page
    <c:remove var="변수명"/> //변수 삭제

  • if
    java의 if 문과 비슷한 기능을 제공
    <c:set var="myId">admin</c:set>

    <c:if test="${myId eq 'admin'}" var="result">myId 는 admin 이 맞습니다.</c:if>

  • choose
    java에서 switch와 비슷한 형태이다(조건식이 들어간다.)
    else 역할을 하는 c:otherwise가 존재한다.
    <c:choose>
    <c:when test="${param.num ==0}">

    파라메터의 값은 0 입니다.

    0~2 사이의 값을 입력 하세요

  • forEach
    array, collection 등에 저장되어 있는 값들을 순차처리 할 때 활용된다.
    c:forEach var="변수명" items="덩어리" begin="시작번호" end="끝번호" step="증가값"

<!-- 일반적인 for 문 처럼 사용 -->
		<c:forEach var="i" begin="1" end="10" step="1">${i} </c:forEach>
	
		<!-- 실제로는 어떻게 사용 하는가? -->
		<%
			String[] sports = {"축구","야구","농구","골프","수영","볼링"};
			HashMap map = new HashMap();
			map.put("name","kim");
			map.put("age","33");
			map.put("phone","010-1234-1234");
		%>
		<!-- c 태그 내에서 스크립틀릿의 내용을 사용하기 위해서는 c:set으로 선언해야 한다 -->
		<!--  varStatus 를 통해 추가 정보를 알 수 있다. -->
		<c:forEach items="<%=sports%>" var="item" varStatus="stat">
			<p>${stat.index} : ${item}</p>
		</c:forEach>
		
  • url
    • URL을 생성해 주는 기능을 한다.
    • var와 scope 속성이 있으나 거의 사용하지 않는다.
    • c:param 태그를 이용해 파라메터를 추가 할 수 있다.
<!-- 절대 경로 : 내 위치가 변해도 변하지 않는 경로 또는 주소(보안상 좋지 않다.)-->
		<!-- 상대 경로 : 내 위치가 변하면 같이 변하는 경로 또는 주소-->
		<!--  ./는 보통생략된다 (상대경로) -->
		<ul>
			<li><a href="./url.jsp">상대경로(현재위치의 url.jsp)</a></li>
			<li><a href="./sub/link.jsp">상대경로(현재위치의 sub폴더 하위의 link.jsp)</a></li>
		</ul>
		<ul>
			<li><a href="/url.jsp">절대경로(url.jsp)</a></li>
			<li><a href="/11_JSTL/url.jsp">절대경로로 제대로 나오게 하려면?(url.jsp)</a></li>
		</ul>
		<ul>
			<li><a href="/url.jsp">절대경로(url.jsp)</a></li>
			<!-- c:url 을 사용하면 컨텍스트경로에 신경쓰지 않고 절대 경로를 사용 할 수 있다. -->
			<li><a href='<c:url value="/url.jsp"/>'>절대경로로 제대로 나오게 하려면?(url.jsp)</a></li>
		</ul>
		
		<c:url value="http://search.daum.net/search" var="searchUrl">
			<c:param name="w" value="blog"/>
			<c:param name="q" value="독도"/>
			</c:url>
  • forTokens
    java의 tokenizer와 비슷하다.
    (특정 구분자를 기준으로 끊어준다.)
    <c:set var="text">축구,야구,농구,배구,골프,수영</c:set>

    <c:forTokens items="text"delims=","var="val">{text}" delims="," var="val">{val}
    </c:forTokens>

  • import

    • 특정 페이지 또는 외부 url을 가져와 페이지에 넣거나 변수에 저장시킨다.
    • c:import url="URL" var="변수명" scope="영역" charEncoding="UTF-8"
  • redirect

<!-- 
내부 페이지로 이동 되며, 외부 url 로 이동도 가능 하다. 
redirect는 가장 마지막에 나와야한다 다음으로 나오는것은 실행이 안됨.(현재 페이지를 이동하는 기능이므로)
url로 이동시 파라메터 추가도 가능하다.
www.youtube.com/results?search_query=jsp
-->
<c:redirect url="http://www.youtube.com/results">
		<c:param name="search_query" value="jsp"></c:param>
		</c:redirect>	

0개의 댓글

관련 채용 정보