반응형

 

jstl 다운로드 : https://repo1.maven.org/maven2/jstl/jstl/1.2/

 

Index of /maven2/jstl/jstl/1.2/

 

repo1.maven.org

 

web-inf 폴더의 lib 안에 jstl-1.2 jar 파일을 넣어준다.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<%@ page language="JAVA" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>엄마!!미안해!!</title>

</head>

<body>

<jsp:include page="./layout/header.jsp"></jsp:include>

<div id="wrapper">

    <jsp:include page="./layout/left.jsp"></jsp:include>

    <div id="page-wrapper">

        <jsp:include page="content_header.jsp"></jsp:include>

        <div class="page-content">

            <jsp:include page="./freeboard/freeboardForm.jsp"></jsp:include>

        </div>

        <jsp:include page="./layout/footer.jsp"></jsp:include>

    </div>

</div>

</body>

</html>

Colored by Color Scripter

cs

이러한 html 파일을 jstl을 이용해서 코딩해보자!

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<%@ page language="JAVA" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>엄마!!미안해!!</title>

</head>

<body>

<c:import url="/01/layout/header.jsp"></c:import>

<div id="wrapper">

    <c:import url="/01/layout/left.jsp"></c:import>

    <div id="page-wrapper">

        <c:import url="/01/content_header.jsp"></c:import>

        <div class="page-content">

            <%-- <c:import url="/01/freeboard/freeboardForm.jsp"></c:import> --%>

            <c:import url="${!empty param.contentPage ? param.contentPage : '/01/freeboard/freeboardList.jsp'}"></c:import>

        </div>

        <c:import url="/01/layout/footer.jsp"></c:import>

    </div>

</div>

</body>

</html>

Colored by Color Scripter

cs

 

위의 코드를 보면 <%@ taglib="c" uri="http://java.sun.com/jsp/jstl/core" %> 라는 taglib 디렉티브를 추가하고, 

 

<jsp: include page="~~"> 이부분을 -> <c:import url=""> 의 형식으로 바꾸어주었다.

 

반응형
반응형

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

31

<%@ page language="JAVA" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>엄마!!미안해!!</title>

</head>

<body>

<c:import url="/13/layout/header.jsp"></c:import>

<div id="wrapper">

    <c:import url="/13/layout/left.jsp"></c:import>

    <div id="page-wrapper">

        <c:import url="/13/content_header.jsp"></c:import>

        <div class="page-content">

            <c:import url="${!empty param.contentPage ? param.contentPage : '/13/freeboard/freeboardList.jsp'}"></c:import>

        </div>

        <jsp:include page="./layout/footer.jsp"></jsp:include>

    </div>

</div>

</body>

<script type="text/javascript">

    if(eval('${!empty param.message}')){

        BootstrapDialog.show({

            title: '알림',

            message: '${param.message}'

        });

    }

</script>

</html>

Colored by Color Scripter

cs

 

<%@ page language="JAVA" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%>


JSP파일 상단에 기록된 Directive

<%@ page contentType="text/html; charset=UTF-8pageEncoding="UTF-8" %>

(해석)

contentType의 charset : Http Client(웹브라우저)가 받아볼 페이지의 인코딩 방식

                           (Http 헤더에 기록되어 있음)

pageEncoding : JSP파일(페이지)에 기록된 소스코드 자체의 인코딩 방식

 

<%@ page contentType="text/html; charset=EUC-KRpageEncoding="UTF-8" %> 

jsp파일은 UTF-8로 인코딩되어 있고,  웹브라우저가 받을때는 EUC-KR로 받아봄

<%@ page contentType="text/html; charset=EUC-KRpageEncoding="UTF-8" %> 

 

이 문구의 의미는?

JSP파일 : UTF-8로 인코딩 됨.

웹브라우저가 받을 때 : 서버가 EUC-KR로 인코딩하여 웹브라우저로 전송




 

page디렉티브 <%@page%> : JSP페이지에 대한 정보를 page 디렉티브(Directive)의 속성들을 사용해서 정의한다.

즉, 생성되는 문서의 타입, 스크립팅 언어, import할 클래스, 세션 및 버퍼의 사용여부, 버퍼의 크기 등 JSP 페이지에서 필요한 설정 정보를 지정한다.

 

표현식 : <%@page 속성%>

page 디렉티브 속성

(1) Info 속성

 

<%@page info="설명 문자"%>

 

- info 속성은 해당 JSP 페이지를 설명해 주는 문자열을 기술하는 속성이다.

 

- 설정하지 않아도 되며, 내용이나 문자열의 길이 제한은 없다.

 

(2) language 속성

 

<%@page language="java" %>

 

- JSP 페이지의 스크립트에서 사용할 프로그램 언어를 지정하는 속성.

 

- JSP 2.0 버전까지 스크립트 언어로 Java만을 지원한다.

 

(3) contentType 속성

 

<%@page contentType = "text/html"%>

 

- JSP 페이지의 내용이 어떠한 MIME 타입의 문서로 생성되는지를(응답 결과 형태) 지정하는 속성

 

- text/html, text/plain, text/xml

 

 

<%@page contentType = "text/html;charset=utf-8"%>

 

- 응답 결과를 보여줄 때 사용할 문자의 인코딩을 지정한다.

 

(4) extends 속성

 

<%@page extends="com.abccompany.classcom"%>

 

- com.abccompany.classcom 클래스를 상속하겠다는 의미이다.

 

- JSP 페이지가 서블릿으로 변환(파싱)되는 과정에서 상속 받을 클래스를 지정할 때 사용한다.

 

- JSP 컨테이너가 알아서 적절한 클래스들을 상속시켜 변환하기 때문에 별로 필요 없는 작업이다.

 

(5) import 속성

 

<%@page import="java.util.*, java.sql.*" %>

 

- 다른 패키지에 있는 클래스를 가져다 쓸 때 사용되는 속성으로 자바의 import문과 같다.

 

- page 디렉티브 중에 유일하게 한 페이지내에 여러번 기술이 가능한 속성이다.

 

(6) session 속성

 

<%@page session="false"%>

 

- 해당 JSP 페이지가 HttpSession을 사용할지 여부를 지정하는 속성

 

- true : 현재의 JSP 페이지가 세션을 사용하는 것으로 세션을 유지하고, 만일 세션이 존재하지 않을 경우 새로운 세션을 생성하여 연결

 

- false : 세션을 사용하지 않는다.

 

 

 

(7) buffer 속성

 

<%@page buffer="10kb"%>

 

<%@page buffer="none"%>

 

- JSP 페이지의 출력 버퍼의 크기를 지정하는 속성으로 기본값은 "8KB" 이다.

 

- "none"으로 지정하면 출력 버퍼를 사용하지 않는다는 의미로, JSP 페이지가 웹 브라우저에 출력 내용이 출력 버퍼를 거치지 않고 바로 웹 브라우저에 출력된다.

 

(8) autoFlush 속성

 

<%@page autoFlush="false" %>

 

- JSP 페이지의 내용들이 웹 브라우저에 출력이 되기 전에 출력 버퍼가 다 찰 경우, 저장되어 있는 내용들을 어떻게 처리할지를 지정하는 속성

 

- true : 버퍼가 다 찼을 경우 자동적으로 버퍼의 내용이 웹 브라우저에 출력되고, 출력 버퍼는 비워진다.

 

- buffer 속성의 값을 none 으로 지정한 경우 autoflush 속성값을 false 로 지정할 수 없다.

 

(9) isThreadSafe 속성

 

<%@page isThreadSafe="false"%>

 

- JSP 페이지에서 다중 쓰레드(Thread)를 사용할 수 있는가를 지정하는 속성

 

- true : 여러 사용자의 요청을 동시에 받아들일 수 있다.

 

- false : 다수 사용자의 요청을 동시에 처리하지 않고 요청한 순서대로 처리한다.

 

(10) errorPage 속성

 

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

 

- JSP 페이지를 처리하는 도중에 해당 페이지에서 예외(Exception)이 발생할 경우 예외를 처리할 페이지를 지정한다.

 

- JSP 2.0에서는 위와 같은 방법으로 처리하지 않는다. web.xml 파일에서 <error-page> 태그를 사용해서 처리한다.

 

(11) isErrorPage 속성

 

<%@page isErrorPage="true"%>

 

- 현재 JSP 페이지가 일반적인 페이지인지, 예외를 처리하는 페이지인지를 지정할 때 사용되는 속성

 

- 해당 페이지가 예외를 처리하는 페이지라면 true 로 지정한다.

 

(12) pageEncoding 속성

 

<%@page pageEncoding="utf-8"%>

 

- JSP 페이지에서 사용하는 문자의 인코딩을 지정한다.

 

<%@page contentType ="text/html;charset=utf-8"%>

 

- contentType의 인코딩과 동시에 기술할 수 있다.



출처: https://hyeonstorage.tistory.com/73 [개발이 하고 싶어요]

 

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

1. JSTL(JSP Standard Tag Library)

 

- 커스텀태그 : 개발자가 직접 태그를 작성할 수 있는 기능을 제공한다.

- 커스텀태그 중에서 많이 사용되는 것들을 모아서 JSTL이라는 규약을 만들었다.

- 논리적인 판단, 반복문의 처리, 데이터베이스 등의 처리를 할 수 있다.

- JSP 2.1 ~ JSP 2.2 와 호횐되는 JSTL 버전은 1.2 이다.

 

2. JSTL 제공 태그

 

 

3. JSTL 라이브러리 다운 및 추가

 

- http://tomcat.apache.org/taglibs/standard/ 로 들어가서 아래에 파일을 다운 받는다.

 

 

- binaries 를 클릭하고 아래의 .zip 파일을 다운 받는다.

 

 

 

- 다운을 받고 압축을 풀어 lib 폴더에 들어간다.

 

 

두 파일을 복사하여 STS 프로젝트의 WebContent 폴더안의 Web-INF 안의 lib 폴더에 복사한다.

 

 

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

jtsl을 쓰는 궁극적인 목적은 스크립트릿을 대체하기 위함이다. 다시 말하면, 자바 로직을 완벽하게 대체해준다.

 

jstl을 쓰기 위해서는 새로운 디렉티브를 만들어야한다. 

 



출처: https://youssol.tistory.com/8 [초인, 초월이네 이야기]

<c:import url="/13/layout/header.jsp"></c:import>

<div id="wrapper">

    <c:import url="/13/layout/left.jsp"></c:import>

    <div id="page-wrapper">

        <c:import url="/13/content_header.jsp"></c:import>

        <div class="page-content">

            <c:import url="${!empty param.contentPage ? param.contentPage : '/13/freeboard/freeboardList.jsp'}"></c:import>

        </div>

        <jsp:include page="./layout/footer.jsp"></jsp:include>

    </div>

</div>



  • <c:import>

    = >동일한 웹 어플리케이션뿐만 아니라 외부의 다른 자원을 읽어와 포함시킬 수 있도록 해주는 태그이다. GET방식 또는 <c:param>태그를 이용하여 파라미터를 전송할 수도 있다.

     

    <c:import url = "URL" [var = "변수명"][scope = "범위"][charEncording = "케릭터셋"]>

    </c:import>

     

    = > var 속성을 명시할 경우 해당 URL로부터 읽어온 데이터를 var 속성에 명시한 EL 변수 명에 저장한다. var 속성을 지정하지 않으면 현재 위치에 URL로부터 읽어온 결과를 출력한다.

 

  • 절대 URL : http://javacan.tistroy.com/100과 같은 완전한 URL

  • 상대 URL

    • 웹 어플리케이션 내에서의 절대 경로 : 슬래시 시작, 예)/view/list.jsp

    • 현재 JSP에 대한 상대 경로 : 슬래시로 시작하지 않음 예)../view/list.jsp

 

*<jsp:include>와의 차이점

         <jsp:include>액션 태그는 현재 위치에 무조건 결과를 출력하는 반면, <c:import>태

그는 EL변수에 보관한 뒤 필요에 따라 알맞은 처리를 할 수 있다.

 

 

  • <c:url>

    = > URL을 생성해 주는 기능

        

        <c:url value = "URL" [var = "varName"] [scope = "영역"]>

            <c:param name = "이름" value = "값"/>

        </c:url>

 

        = > var속성과 scope속성은 생략 가능하며, <c:import>태그와 마찬가지로 <c:param>

태그를 이용해서 파라미터를 URL에 추가할 수 있다. var 속성을 지정하지 않은 경우

현재 위치에서 생성한 URL을 출력하며, var속성을 지정한 경우 해당 변수에 생성한

URL을 할당한다.

 

 

 

  • <c:redirect>

    = > 지정한 페이지로 리다이렉트시켜 주는 기능 제공

     

        <c:redirect url = "URL [context = "콘텍스트경로"]>

            <c:param name = "이름" value = "값" />

        </c:redirect>

     

        = > context 속성은 경로 설정 시, 다른 콘텍스트 경로에 포함된 URL로 리다

    이렉트 하고 싶을 때 사용하면 된다.

        

        <c:redirect url = "/viewToday.jsp" context = "/chap15/">

     

    <c:redirect> 태그 속성 요약 설명

     

 

 

[출처] JSTL - <c:import, url, redirect>|작성자 원종천

 

<c:import url="${!empty param.contentPage ? param.contentPage : '/13/freeboard/freeboardList.jsp'}"></c:import>


param.contentPage가 비어있지 않으면 param.contentPage를 , 비어있다면, /13/freeboard/freebaordList.jsp를 url에 import한다.
반응형

+ Recent posts