'JSP'에 해당되는 글 28건

  1. 2013.08.16 ServletConfig, ServletContext
  2. 2013.08.16 XML 기본구조
  3. 2013.08.16 Tomcat web.xml
  4. 2013.08.16 자바클래스 메서드에 접근
  5. 2013.08.16 서블릿에서 out.print()
  6. 2013.08.16 tag : core
  7. 2013.08.16 JSP 내장객체의 스코프
  8. 2013.08.16 HTML 문서에서 인자로 사용
  9. 2013.08.16 EL 개요
  10. 2013.08.16 서버 도메인 확인
2013. 8. 16. 10:11
web.xml 문서를 조작하여 서블릿에 정보를 전달하기 위한 용도로 사용되는 인터페이스.

특징과 설정방법은 다음과 같다 :

구 분

적용

범위 설정


ServletConfig


해당 서블릿에서만 사용할 수 있다.
* 필터에서도 사용 가능

<servlet>
  <servlet-name>    </servlet-name>
  <servlet-class>    </servlet-class>
  <init-param>
    <param-name>   </param-name>
    <param-value>   </param-value>
  </init-param>
</servlet>

ServletContext

동일 웹 애플리케이션 내 모든 서블릿(또는  JSP)에서 사용
할 수 있다.
<context-param>
    <param-name>   </param-name>
    <param-value>   </param-value>
</context-param>


만약 서버의 설정을 변경해야 할 때라고 치자. 
해당 값이 자바파일에 명시되어 있다면 그 클래스를 수정하여 다시 컴파일하고 배포도 다시 해야한다.
하지만 ServletConfig나 ServletContext 인터페이스를 이용해 작성하면 xml 수정 후 서버만 리셋하면 된다. 
어느것이 더 편한지는 개발자 쓰기 나름

MVC2 패턴 구현에도 사용되는 듯 하다. 바로가기


● 예제


    test
    com.test1.TestServlet
    
        name
        han
    
    
        age
        20
    

 

    test
    /test

 

    city
    seoul

protected void process(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    ServletConfig config = getServletConfig(); //해당 서블릿에서만 사용가능
    ServletContext context = getServletContext(); //동일한 웹어플리케이션 어디서든 접근가능
         
    String name = config.getInitParameter("name");
    String age = config.getInitParameter("age");
         
    String city = context.getInitParameter("city");
 
          //로그설정
    context.log("로그를 출력합니드아");
 
    resp.setContentType("text/html;charset=utf-8");
    PrintWriter out = resp.getWriter();
         
    out.print("name:" + name + "
"); out.print("age:" + age + "
"); out.print("city:" + city + "
"); }


'JSP > JspServlet' 카테고리의 다른 글

XML 기본구조  (0) 2013.08.16
Tomcat web.xml  (0) 2013.08.16
자바클래스 메서드에 접근  (0) 2013.08.16
서블릿에서 out.print()  (0) 2013.08.16
tag : core  (0) 2013.08.16
Posted by 1+1은?
2013. 8. 16. 10:07




    
        JAVA
        홍길동
        1000
    
    
        TEST
        이기자
        2000
    

booklist : 루트폴더를 의미하며 어떤 단어 사용하던지 선언시점과 종료지점이 일치하기만 하면 된다.
<root>
    ...
</root>


'JSP > JspServlet' 카테고리의 다른 글

ServletConfig, ServletContext  (0) 2013.08.16
Tomcat web.xml  (0) 2013.08.16
자바클래스 메서드에 접근  (0) 2013.08.16
서블릿에서 out.print()  (0) 2013.08.16
tag : core  (0) 2013.08.16
Posted by 1+1은?
2013. 8. 16. 10:06

- 톰캣의 실행환경에 대한 정보를 담당하는 '환경설정' 파일 이다.

- 각종 servlet의 설정과 servlet 매핑, 필터, 인코딩 등을 담당한다.

- web.xml은 톰캣에 있는 모든 web application의 기본설정을 정의한다. 

- web.xml은 각 application이 deploy될 때 각 application의 'WEB-INF/web.xml' deployment descripter에 따라서 처리가 된다.

- 각 application 마다 설정시, web.xml은 파일을 복사해서 필요한 것만 적으면 된다.



● 기본서식

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">


<display-name>프로젝트명</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>


</web-app>



● 태그 종류

- icon : 웹 애플리케이션을 나타내기 위해 IDE나 GUI 툴에서 사용 되는 하나 또는 두 개의 이미지 파일들의 위치를 지정하는데 사용한다. 

- display-name : GUI 툴이 웹 애플리케이션을 표시하기 위해 사용하는 이름을 지정 하는데 사용 

- description : 웹 어플리케이션에 대한 설명을 나타낸다. 

- distributable : distributable 요소가 있다는 것은 웹 어플리케이션이다 중 서버 간에 분산 배치 될 수 있다는 것을 의미한다. 

- context-param : 어플리케이션의 초기화 파라미터를 선언하는데 사용 

- filter : 서블릿이나 jsp 페이지로 들어오는 요청정보를 사전에 걸러내는 기능 

- filter-mapping : 필터를 지정했다면 filter-mapping을 지정하여 하나 이상의 서블릿과 연결함 

- listener : 서블릿2.3 버전으로부터 세션이나 서블릿 컨텍스트가 생성 또는 수정 되거나 소멸되는 것을 알려주는 이벤트 리스너 

- servlet : 서블릿이나 jsp  페이지에  초기화파라미터나사용자url  들을  할당  할  때 사용되는  서블릿이나 jsp  이름을 지정 

- servlet-mapping : 상대 url  경로를 좀  더 쉽게  다루기 위해  기본 url를  변경 할  때 사용 

- session-config : 일정 시간 동안 세션으로 접근이 없을 경우 서버는 메모리를 절약하기 위해 사용하지 않는 메모리를 삭제한다. 세션의 시간 유지 기능 

- mime-mapping : 특정한 mime형을 가진 파일을 웹 어플리케이션에  넣어 두고 싶은  경우 사용 

- welcome-file-list : url이 파일명이 아닌 디렉토리 명으로 받았을 경우 기본적으로 불러올 파일명을 지정하는데 사용 

- error-page : http 상태코드가 반환되거나 예외가 발생했을 때 그 내용을 출력하는 페이지 

- tag-lib : 태그라이브러리 설명자 파일의 별칭을 지정하는데 사용 

- resource-envref : 자원(resource)과  연관되어 관리되는 객체를 선언하는 역할을 한다. 

- resource-ref : resource-ref 요소는 외부에서 참조해야 할 자원을 선언할  때 사용 

- security-constraint : url이 보호 되도록 지정하는 역할을  한다. login-config와  연결되어 사용 

- login-config : 보안된 페이지로 들어가려는 사용자에 대한 서버의 인증 방식을 지정해 준다. 

- security-role : 통합개발 환경에서 보안정보를 좀 더 조작하기 쉽게 만들어준다. 

- env-entry : 웹 어플리케이션의 환경항목을 선언한다. 

- ejb-ref : 엔터프리이즈 빈의 홈에 대한 레퍼런스를 선언 

- ejb-local-ref : 엔터프라이즈 빈의 로컬 홈에 대한 레퍼런스를 선언 



● web.xml을 작성할때 elements의 순서 

 : Tomcat 5.0 이하에서는  elements의 순서 순서를 지키지 않으면 web.xml 에서 오류가 발생 할 수 있다.

    <icon?>, 

    <display-name?>, 

    <description?>, 

    <distributable?>, 

    <context-param*>, 

    <filter*>, 

    <filter-mapping*>, 

    <listener*>, 

    <servlet*>, 

    <servlet-mapping*>, 

    <session-config?>, 

    <mime-mapping*>, 

    <welcome-file-list?>, 

    <error-page*>, 

    <taglib*>, 

    <resource-env-ref*>, 

    <resource-ref*>, 

    <security-constraint*>, 

    <login-config?>, 

    <security-role*>, 

    <env-entry*>, 

    <ejb-ref*>, 

    <ejb-local-ref*> 


예를 들어 <servlet> 태그들을 모두 먼저 작성하고 <servlet-mapping> 태그를 작성해야 한다 :


<servlet>

<servlet-mapping>

<servlet>

<servlet-mapping> 처럼 작성하지 말고


<servlet>

<servlet>

<servlet-mapping>

<servlet-mapping> 처럼 작성 한다.

'JSP > JspServlet' 카테고리의 다른 글

ServletConfig, ServletContext  (0) 2013.08.16
XML 기본구조  (0) 2013.08.16
자바클래스 메서드에 접근  (0) 2013.08.16
서블릿에서 out.print()  (0) 2013.08.16
tag : core  (0) 2013.08.16
Posted by 1+1은?
2013. 8. 16. 10:00

● 표현 언어(EL)에서 자바 클래스의 메소드에 접근하는 방법

 ① 자바의 클래스 파일을 작성한다.

 ② 클래스  파일을 작성하고 나면 태그라이브러리에 대한 설정정보를 담고 있는  TLD 파일을 작성한다.

 ③ web.xml 파일에  TLD 파일을 사용할 수 있는 설정 정보를 추가한다.

 ④ 자바클래스의 메소드에 접근하는  JSP 페이지를 작성한다.


● 표현 언어(EL)에서 자바 클래스의 메소드에 접근하는 방법

  자바 클래스 파일 ↔  TLD파일 ↔ web.xml ↔  JSP 페이지


● 사용 예

1) 클래스 작성

package com.jsp.test;
 
public class Compute  {
    public static int add(String x, String y)  {
       int a = 0;
       int b = 0;
       try {
         a = Integer.parseInt(x);
         b = Integer.parseInt(y);
       }catch(Exception  e)  {} 
       return a + b;
    }
}
2) "elFunctions.tld" 파일을 작성하여 "웹 루트\WEB-INF\tlds" 폴더에 저장한다.


      
     EL에서 함수실행
     1.0
     ELfunctions
     /ELFunctions
     
          x와 y의 합
         add
         com.jsp.test.Compute
         
              int  add(java.lang.String,  java.lang.String)
         
    

3) "웹 루트\WEB-INF\web.xml" 파일 수정


    :
   
         
             /WEB-INF/tlds/elFunctions.tld
         
         
             /WEB-INF/tlds/elFunctions.tld
         
     

4) JSP 페이지 작성 - elFunctionTest.jsp
<%@page contentType="text/html;charset=utf-8"%>
<%@taglib prefix="test" uri="/WEB-INF/tlds/elFunctions.tld" %>
<%request.setCharacterEncoding("utf-8");%>

표현 언어에서 함수사용하기 -두 숫자의 덧셈

X :
/ Y :

합은 : ${test:add(param["x"],param["y"])} 입니다.




'JSP > JspServlet' 카테고리의 다른 글

XML 기본구조  (0) 2013.08.16
Tomcat web.xml  (0) 2013.08.16
서블릿에서 out.print()  (0) 2013.08.16
tag : core  (0) 2013.08.16
서버 도메인 확인  (0) 2013.08.16
Posted by 1+1은?
2013. 8. 16. 09:58


다른 객체들과 마찬가지로 JSP는 내장객체를 톰캣이 미리 생성해두지만

서블릿에서는 작성자가 객체를 직접 구해야한다. out의 PringWriter는 리스폰스에서 가져온다.


PrintWriter out = resp.getWriter();
out.print(" ");


'JSP > JspServlet' 카테고리의 다른 글

Tomcat web.xml  (0) 2013.08.16
자바클래스 메서드에 접근  (0) 2013.08.16
tag : core  (0) 2013.08.16
서버 도메인 확인  (0) 2013.08.16
None Annotation 스프링 MVC 예제 (abstract, multiaction)  (0) 2013.07.29
Posted by 1+1은?
2013. 8. 16. 09:55

core, 코어

기능  : 변수지원, 흐름제어, URL처리

접두어(Prefix)  :  c

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


EL 지원 기능 : catch, out, remove, set

흐름 제어 기능 : choose, forEach, forTokens, if

URL 관리기능 : import, param, redirect, param, url



목차

■ catch
■ choose, when, otherwise
■ forEach
■ forTokens
■ import
■ if
■ out
■ param
■ redirect
■ set, remove
■ url


■ catch

body 위치에서 실행되는 코드의 예외를 잡아내는 역할을 담당한다.

<c:catch  var="name">

     body  content

</c:catch>

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

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


<h3>코어</h3>

<h4><c:out></h4>

<pre>

${1+2} <c:out value="${1+2}"/>

${1>3} <c:out value="${1>3}"/>

${1 gt 3} <c:out value="${1 gt 3}"/>


\$표시 <c:out value="${'${'}test}"/>


● escapeXml 속성 기본 값은  false

false:  <c:out value="<b>bold</b>  <,>,&,',\"  "  escapeXml="false"/>

true:   <c:out value="<b>bold</b>  <,>,&,',\"  "  escapeXml="true"/>


● " 큰따옴표 사용주의  ' 작은따옴표로 대치

<c:out  value='<font  color="blue">파랑</font>'/>

<c:out  value='<font  color="blue">파랑</font>'  escapeXml="false"/>


● 기타 예제

<hr><h4><c:set></h4>

set  session  scope  var  "name":  <c:set  var="name"  value="하늘"  scope="session"/>

c:out  name:  <c:out  value="${name}"/>

expression  name:  <%=  session.getAttribute("name")%>

set  page  scope  var  "name":  <c:set  var="name">

   hello

</c:set>

c:out  name:  <c:out  value="${pageScope.name}"/>

c:out  sessionScope.name:  <c:out  value="${sessionScope.name}"/>

expression  name:  <%=  session.getAttribute("name")%>

<hr><h4><c:remove></h4>

remove  session  scope  var  "name":  <c:remove  var="name"  scope="session"/>

expression  name:  <%=  session.getAttribute("name")%>

c:out  sessionScope.name:  <c:out  value="${sessionScope.name}"/>


<hr><h4><c:catch></h4>

<c:catch  var="errmsg">

line1

<%=1/0 %>

line2

</c:catch>

<c:out  value="${errmsg}"/>

</pre>




■ choose - when - otherwise

<c:choose/> 태그는 java의 switch 문과 같지만, 조건에 문자열 비교도 가능하고 쓰임의 범위가 넓다. 또한 <c:if/> 태그에 else가 없기 때문에 이의 대체 기능도 수행한다.

<c:choose>

     body  content 

     (하나 이상의  <when>과 하나 이하의  <otherwise> 서브태그)

       <c:when  test="조건_1">

           body  content

       </c:when>

       <c:when  test="조건_2">

           body  content

       </c:when>

          :

       <c:otherwise>

           conditional  block

       </c:otherwise>

   </c:choose>


● 조건을 판단하는 간단한 예

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

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


<h3>조건</h3>

파라미터 없음:<c:out  value="${empty  param.name}"  />

<h4><c:if test=""></h4>

<c:if  test="${empty  param.name}">

<form>

이름을 적어주세요.<br/>

     <input  type="text"  name="name"/>  <input  type="submit"  value="확인"/>

</form>

</c:if>

<c:if  test="${!empty  param.name}">

    안녕하세요.  <c:out  value="${param.name}"/>님.

</c:if>


<h4><c:choose> <c:when  test="">  <c:otherwise></h4>

<c:choose>

     <c:when  test="${empty  param.name}">

         <form>

        이름을 적어주세요.<br/>

             <input  type="text"  name="name"/>   <input  type="submit"  value="확인"/>

         </form>

     </c:when>

     <c:when  test="${param.name=='admin'}">

        안녕하세요. 관리자님.

     </c:when>

     <c:otherwise>

        안녕하세요.  <c:out  value="${param.name}"/>님.

     </c:otherwise>

</c:choose>


● 기타 예제

<c:choose>

<c:when test="${param.num1%12==0}">

${param.num1 }은 3과 4의 배수<br/>

</c:when>

<c:when test="${param.num1%3==0}">

${param.num1 }은 3의 배수<br/>

</c:when>

<c:when test="${param.num1%4==0}">

${param.num1 }은 4의 배수<br/>

</c:when>

<c:otherwise>

${param.num1 }은 3또는 4의 배수가 아님<br/>

</c:otherwise>

</c:choose>



■ forEach

반복실행 태그

- Syntax 1 : 객체 전체에 걸쳐서 반복

   <c:forEach  [var="varName"]  items="collection"  [varStatus="varStatusName"]

            [begin="begin"]  [end="end"]  [step="step"]>

       body  content

   </c:forEach>


- Syntax 2 : 지정한 횟수만큼 반복

   <c:forEach  [var="varName"]  [varStatus="varStatusName"]

            begin="begin"  end="end"  [step="step"]>

       body  content

   </c:forEach>


<c:forEach/> 태그는 여러 가지로 활용이 가능하다. 원하는 구간만큼 반복할 수도 있고, 객체를 받아와서 그 객체의 길이만큼 반복할 수도 있다.  

begin, end 속성은 시작번호와 끝 번호를 지정하고, step 속성을 이용해서 증가 구간을 정할 수 있다.  var 속성에서 정한 변수로 반복되는 내부 구간에서 사용할 수 있다.


● begin - end

<table>

     <tr><td>Value</td>

       <td>Square</td></tr>

   <c:forEach  var="x"  begin="0"  end="10"  step="2">

     <tr><td><c:out  value="${x}"/></td>

         <td><c:out  value="${x  *  x}"/></td></tr>

   </c:forEach>

</table>


● 컬렉션의 멤버들 사이를 반복할 때 <c:forEach> 태그의 추가 애트리뷰트인 items 애트리뷰트가 사용된다.

<c:forEach var="dto" items="${list}">

이름:${dto.name}, 제목:${dto.subject}<br/>

</c:forEach>


● varStatus은 상태 값을 의미하며 다음의 값을 갖는다.

- current : 현재 아이템

- index : 0부터의 순서

- count : 1부터의 순서

- first : 현재 루프가 처음인지 반환

- last : 현재 루프가 마지막인지 반환

- begin : 시작값

- end : 끝값

- step : 증가값

<c:forEach items="${RESULT}" var="RESULT" varStatus="status"> 

       forEach의 현재 아이템은 : ${status.current}

</c:forEach>


● 기타 예제

<c:forEach var="n" begin="1" end="9">

${param.num}*${n}=${param.num*n}<br/>

</c:forEach>



<c:forEach var="dto" items="${list}">

이름:${dto.name},

제목:${dto.subject}<br/>

</c:forEach>



<c:forEach var="dto" items="${list}" varStatus="s">

이름:${dto.name},

제목:${dto.subject}<br/>

현재아이템:${s.current}<br/>

0부터의순서:${s.index}<br/>

1부터의순서:${s.count}<br/>

처음이냐?:${s.first}<br/>

마지막이냐?:${s.last}<br/>

</c:forEach>



<c:forEach var="dto" items="${lists}">

<dl>

<dd class="num">${dto.num}</dd>

<dd class="subject"><a href="">${dto.subject}</a></dd>

<dd class="name">${dto.name}</dd>

<dd class="created">${dto.created}</dd>

<dd class="hitCount">${dto.hitCount}</dd>

</dl>

</c:forEach>



■ forTokens

<c:forTokens/> 는  java.util.StringTokenizer 를 이용한 것이다

<c:forTokens items="stringOfTokens" delims="delimiters" 

     [var="varName"] [varStatus="varStatusName"]  [begin="begin"]  [end="end"]  [step="step"]>

     body  content

</c:forEach>

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

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


<h3>반복</h3>

<h4><c:forEach></h4>


<c:forEach  var="one"  begin="1"  end="10">

     <c:out  value="${one}"/>

</c:forEach>

<p><b>header</b></p>

<c:forEach  var="h"  items="${header}">

     <c:out  value="${h.key}:${h.value}"/><br/>

</c:forEach>


<h4><c:forTokens></h4>

<c:forTokens  var="one"  items="서울|인천,대전,대구,부산,광주,평양"

             delims=","  varStatus="sts">

     <c:out  value="${sts.count}:${one}"/>·

</c:forTokens>

<hr/>


<c:forTokens  var="one" 

             items="서울|인천,대전,대구,부산,광주,평양"

             delims=",|"  varStatus="sts">

     <c:out  value="${sts.count}:${one}"/>•

</c:forTokens>



■ import

<c:import/> 는 아주 강력한 도구로 웹 어플리케이션 내부의 자원 접근은 물론이고, http, ftp 같은 외부에 있는 자원도 가져와서 페이지 내에 귀속시킨다. 자유롭게 가공할 수도 있고, 편집도 가능하다.

- Syntax 1 : 해당 주소를 바로 출력하거나 String 에 담아놓는다.

<c:import url="url" [context="context"]

         [var="varName"]  [scope="{page|request|session|application}"]

         [charEncoding="charEncoding"]>

    <c:param> 서브 태그 위치

</c:import>


- Syntax 2 : 해당 주소의 컨텐츠를  Reader 객체로

<c:import url="url" [context="context"]

         varReader="varReaderName"

         [charEncoding="charEncoding"]>

     varReader 를 사용하는 액션

</c:import>

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

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


<c:set  var="url"  value="http://www.daum.net/"/>

<c:import  url="${url}"  var="u"/>

<c:out  value="${url}"/> 가져옵니다.

<hr/>

-- 홈페이지 결과 출력<br/>

  <c:out  value="${u}"  escapeXml="false"/>

<hr/>

<c:set  var="url"  value="http://www.naver.com"/>

<c:import  url="${url}"  var="u"/>

<c:out  value="${url}"/> 가져옵니다.

<hr/>

-- 소스 출력<br/>

<pre><c:out  value="${u}"/></pre>

<hr/>

<c:set  var="url"  value="gugu.jsp"/>

<c:import  url="${url}"  var="u">

     <c:param  name="su"  value="5"/>

</c:import>

<c:out  value="${url}"/> 가져옵니다.

<hr/>

<c:out  value="${u}"  escapeXml="false"/>

<hr/>



■ if

조건문을 사용할 때 쓴다.

- Syntax 1 : Body 없는 경우

<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>


- Syntax 2 : Body 있는 경우

<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>

    body content

</c:if>

<form method="post">

수: <input type="text" name="num">

<input type="submit" value="결과">

</form>

//액션이 없어서 자기 자신에게 parameter를 전송하는 폼


<c:if test="${not empty param.num }">

<c:if test="${param.num % 2 == 0}">

${param.num}은 짝수<br/>

</c:if>

<c:if test="${param.num % 2 != 0 }">

${param.num}은 홀수<br/>

</c:if>



<c:if test="${dataCount==0}">

등록된게시물이음슴

</c:if>


<c:if test="${dataCount!=0}">

${pageIndexList}

</c:if>


  <c:if/> 에서 나온 결과를  varName 변수에 넣고, 나중에 활용이 가능하다. 

  변수의 scope는 임의로 지정할 수 있고, 생략될 경우 기본 값은  page 이며 else 문은 존재 하지 않는다.



● 자바스크립트 제어 

// 자바스크립트가 특정조건에 외부노출되는 것을 막음

<c:if test="${sessionScope.session.userId == dto.userId}">

    function updateBoard(boardNum)

    {

     var url = "<%=cp%>/board/update.action"

    

     location.href = url;

    }

</c:if>



■ out

JSP의 표현식을 대체하는 것으로 가장 많이 사용된다.

- Syntax 1 : body 없는 경우

<c:out value="value" [escapeXml="{true|false}"] [default="기본_값"]  />


- Syntax 2 : body 있는 경우

<c:out value="value" [escapeXml="{true|false}"]  />

     기본_값

</c:out>

  Hello  <c:out  value="${user.username}"  default="Guest"/>!


   <c:out  value="${user.company}"  escapeXml="false"/>


   <c:set  var="timezone"  scope="session">

      <c:out  value="${cookie['tzPref'].value}"  default="CST"/>

   </c:set>


 escapeXml 애트리뷰트 또한 선택사항이다.  

"<",  ">",  "&" 같은 캐릭터가  <c:out> 태그에 의해 아웃풋 될 때 종료되는지의 여부를 제어한다.  

escapeXml이  true로 설정되어 있다면 이 캐릭터들은 상응하는  XML 인터티(<,  >,  &)로 바뀐다.(escapeXml 기본값  true)

 


■ param

보통 import, redirect, url 태그와 같이 쓰이는 태그. "파라미터=값" 형식을 표현한다.

<c:param 속성="값".../>

<c:import  url="/exec/doIt">

   <c:param  name="action"  value="register"/>

</c:import>


// 이 방법은 아래 태그와 같은 효과가 있다 :

<c:import  url="/exec/doIt?action=register"/>



■ redirect

response.sendRedirect()를 대체하는 태그. 컨텍스트를 지정해서 다른 컨텍스트로 이동이 가능하다.

- Syntax 1 :  Body 없는 경우

<c:redirect url="value" [context="context"]/>


- Syntax 2 :  Body 있는 경우 쿼리 스트링 파라미터 지정

<c:redirect url="value" [context="context"]/>

    <c:param> 서브태그

</c:redirect>

<%  response.setContentType("text/html"); %>

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


<c:redirect url="/test.jsp"/>



■ set, remove

set는 JSP의 setAttribute()와 같은 역할을  한다.  (page|request|session|application) 범위의 변수(속성)를 설정한다.

remove는 JSP의 removeAttribute()와 같은 역할을 한다.  (page|request|session|application) 범위의 변수(속성)를 제거한다. 


- Syntax 1 : scope 에 해당하는 변수에 속성 값을 정한다.

<c:set value="value" var="varName" [scope="{page|request|session|application}"]/>


- Syntax 2 : scope 에 해당하는 변수에  body 값을 정한다.

<c:set var="varName" [scope="{page|request|session|application}"]>

       body  content

</c:set>


- Syntax 3 : 속성 값으로  target 객체의 프로퍼티 값을 정한다.

<c:set value="value" target="target" property="propertyName"/>


- Syntax 4 : body 값으로  target 객체의 프로퍼티 값을 정한다.

<c:set target="target" property="propertyName">

      body  content

</c:set>


scope 속성이 생략될 경우 기본 값은 page 이다.

 


■ url

<c:url/> 태그는 컨텍스트를 자동으로 추가해서 주소를 자동으로 생성해준다.  context 속성이 지정되었을 경우 value와 context 의 값은 /로 시작을 해야  된다. context 속성이 생략되면 당연히 현재의 컨텍스트가 적용된다.

- Syntax 1 : Body 없는 경우

<c:url value="value" [context="context"] [var="varName"] [scope="{page|request|session|application}"]/>


- Syntax 2 : Body 있는 경우 쿼리 스트링 파라미터 지정

<c:url value="value" [context="context"] [var="varName"] [scope="{page|request|session|application}"]>

     <c:param> 서브태그

</c:url>

<%  response.setContentType("text/html"); %>

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


<c:url  value="/images/tomcat.gif"/>

<img  src='<c:url  value="/images/tomcat.gif"/>'  />


Posted by 1+1은?
2013. 8. 16. 09:54

JSP 페이지의 내부 객체

 : 내부 객체는  JSP 페이지가 사용자의 브라우저에게 요청될 때 자동으로 생성되는 객체로 특정한 자

바 클래스 또는 인터페이스의 형태를 가지고 있다.


기본 객체 (implicit object, 내장 객체)

■ request : 클라이언트의 요청 정보를 담고 있는 객체

⋅스코프  :  request

⋅실제 타입  :  javax.servlet.http.HttpServletRequest 또는  javax.servlet.ServletRequest


■ response : 요청에 대한 응답 정보를 담고 있는 객체

⋅스코프  :  page

⋅실제 타입  :  javax.servlet.http.HttpServletResponse 또는  javax.servlet.ServletResponse


■ out : 페이지 내용을 담고 있는 출력 스트림 객체

⋅스코프  :  page

⋅실제 타입  :  javax.servlet.jsp.JspWriter


■ pageContext : JSP 페이지 실행에 필요한 Context 정보를 담고 있는 객체

⋅스코프  :  page

⋅실제 타입  :  javax.servlet.jsp.PageContext


■ session : 세션 정보를 담고 있는 객체

⋅스코프  :  session

⋅실제 타입  :  javax.servlet.http.HttpSection


■ application : Context의 모든 페이지가 공유할 데이터를 담고 있는 객체

⋅스코프  :  application

⋅실제 타입  :  javax.servlet.ServletContext


■ config : JSP 페이지의 서블릿 설정 데이터 초기화 정보 객체 

⋅스코프  :  page

⋅실제 타입  :  javax.servlet.ServletConfig


■ page : JSP 페이지를 구현한 자바 클래스 객체

⋅스코프  :  page

⋅실제 타입  :  java.lang.Object


■ exception : JSP 페이지의 서블릿 실행 시 처리하지 못한 예외 객체

⋅스코프  :  page

⋅실제 타입  :  java.lang.Throwable




Scope, 스코프

 : 웹 어플리케이션은  page,  request,  session,  application 이라는  4개의 영역을 가지고 있으며 기본

객체의 영역은 객체의 유효기간이라고도 불리며, 객체를 누구와 공유할 것인가를 나타낸다.

■ page 영역

 한 번의 웹브라우저(클라이언트)의 요청에 대해 하나의  JSP 페이지가 호출되며 웹브라우저의 

 요청이 들어오면 이때 단 한 개의 페이지만 대응 된다. 

 생성된 객체는 PageContext 에 저장된다.

 쉽게 말해 service()를 벗어나면 죽는다. 

 servlet → jsp 으앙 주금 //void service()


■ request 영역

 한 번의 웹브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응되며 

 웹브라우저가 한 번의 요청에 단지 한 개의 페이지만 요청될 수 있고, 같은  request 영역이면 

 두개의 페이지가 같은 요청을 공유 한다.  include 액션 태그,  forward 액션 태그를 사용 시 공유가능

 생성된 객체는 HttpServletRequest 에 저장


■ session 영역

 하나의 웹브라우저 당 1 개의 session 객체가 생성된다. 

 같은 웹브라우저 내에서는 요청되는 페이지 들은 같은 객체를 공유한다.

 생성된 객체는 HttpSession 에 저장된다.

 동일한 클라이언트만 사용가능


■ application 영역

 하나의 웹 어플리케이션 당  1개의  application 객체가 생성된다. 같은 웹 어플리케이션에 

 요청되는 페이지들은 같은 객체를 공유한다.

 생성된 객체는 실질적으로는  ServletContext 에 저장된다.




내부 객체의 속성

  : request,  session,  application,  pageContext 내부 객체는 임의 속성(attribute) 값을 저장하고 읽을  

수 있는 다음의 메소드를 제공 한다.

■ 메소드

⋅void setAttribute(String  key, Object  value)

  주어진  key속성의 값을  value로 지정한다.


⋅Enumeration getAttributeNames()

  모든 속성의 이름을 구한다.


⋅Object getAttribute(String  key)

  주어진  key속성의 값을 얻어낸다.


⋅void removeAttribute(String  key)

  주어진  key속성의 값을 제거한다.

'JSP > Jsp 내장객체' 카테고리의 다른 글

HTML 문서에서 인자로 사용  (0) 2013.08.16
EL 개요  (0) 2013.08.16
Session  (0) 2013.07.29
Request  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?
2013. 8. 16. 09:51

● 3항 연산자 활용 태그 속성바꾸기

 


  서블릿에서 넘긴 parameter에 따라 다음처럼 html 소스가 바뀐다.



● 자바스크립트에서 문자열

 





'JSP > Jsp 내장객체' 카테고리의 다른 글

JSP 내장객체의 스코프  (0) 2013.08.16
EL 개요  (0) 2013.08.16
Session  (0) 2013.07.29
Request  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?
2013. 8. 16. 09:43

EL, Expression Language


목차

■ 개요
■ 작성규칙
■ 연산자
■ 내장객체


■ 개요

 EL은 JSTL 1.0 스펙에서 소개되었던 것으로 JSP 2.0부터 공식적으로 포함되었으며,  JSP 페이지에 사용되는 자바코드를 대신해서 액션태그 엘리먼트

(예:<jsp:setProperty>)의 속성에 값을 지정하는  역할을 한다. 


${object}


request 객체에 전달한 vo라는 자바빈즈에 getEmail() 메소드가 존재할 때 JSP의 스크립릿으로


<%Test vo = (Test)request.getAttribute("vo");%>

<%= vo.getEmail()%>


라 작성했다면 EL은 다음과 같다 :


${vo.address};


졸라 편하다.



■ 작성규칙

EL은 숫자, 문자열, boolean 값과 null 같은 상수 값(리터럴) 들도 포함할 수 있다.⋅

EL은 $ 와 표현식 그리고 브레이스 { }를 사용해서 표현한다.


- 표현 언어(EL)는 항상 『${』 로 시작해서 『}』로 끝난다.

- JSP 스크립트 내부에서 쓸 수 없다. 즉, <%  %>, <%!  %>, <%=  %> 안에는 사용할 수 없다.

- 표현식 안에 연산식도 작성이 가능 하다. 

   ${num  +  1}

- 프로퍼티 접근 연산자 닷(dot(.)) 은 표현 언어(EL)에게 자바 빈이나 컬렉션 객체에서 다음에 오는 이름과 같은 프로퍼티를 찾게 한다.

   ${article['num']  +  1}  or  ${article["num"]  +  1}

- 브라켓 연산자(bracket([ ]) operator) 를 사용해도 된다. 닷(dot(.)) 과 같다. 즉, 브라켓 연산자의 배열 형태로 객체의 변수에 접근한다.



■ 연산자 

.

 빈의 프로퍼티나  맵(Map)의  엔트리 접근 

[]

 배열이나  리스트(List)  엘리먼트 접근 

()

 괄호. 표현식의  연산 순서를  바꿔서 연산하게 할  때

a ? b : c

 EL의 삼항연산자. a가 true면 b, false면 c 

+    -

*   /

%   !

==   !=

<   >

<=   >=

&&   ||

 자바와 같다.

empty

 빈 변수값 체크. null 혹은 빈문자열, 빈배열, 엔트리가 없는 맵이나 컬렉션이면 true 

func(args)

 함수 호출 



■ EL에서 제공하는 내장객체 

● pageScope, requestScope, sessionScope, applicationScope
 : 각 영역 객체들에 대한 컬렉션
${scope.데이터_명}
예를 들어 session 객체로 전달받은 email에 접근할 때, 구문이 다음과 같다면 :
session.setAttribute("email", "noname@site.com"); 

전달받은 데이터에 접근하려면 :
${sessionScope.email} 라고 작성한다.

scope를 명시하지 않으면 requestScope에서 찾는다.

● param
 : 모든 request  파라미터들을  문자열로 가진 컬렉션(request.getParameter() 메소드) 
${param.데이터_명} 
혹은 ${param["데이터_명"]}
param은 html의 form을 통해 입력된 데이터를 가져올 때 사용한다.  

<form action="test2.jsp" method="post">
<input type="text" name="num"><br/>
<input type="submit" value="보내기">

위 폼에서 넘어온 num을 찾으려면 :
${param.num}

● paramValues 
 : 모든 request 파라미터들을 파라미터당 문자열 배열로 가진 컬렉션 
${paramValues.데이터_명[0]},  ${paramValues["데이터_명"][0]})
form을 이용한 입력 중 checkbox, select 등 같은 name 애트리뷰트를 가진 데이터를 가져올 때는 paramValues를 사용한다. 
사용 형식은 param과 비슷하나 여러 개의 입력 값이 있으므로 배열 형태가 된다

<form action="test2.jsp" method="post">
<input type="checkbox" value="first_value" name="ck"/>
<input type="checkbox" value="first_value" name="ck"/>
<input type="submit" value="보내기">

위 폼에서 넘어온 첫번째 값을 찾으려면 :
${paramValues.ck[0]}

배열 순서는 form 태그에 작성 된 순서를 따른다.

● cookie
 : cookie는 웹 브라우저가 웹 서버로 보낸 쿠키를 가져올 때 사용한다.
${cookie.쿠키_명}  
혹은 ${cookie["쿠키_명"]}
주의 할 것은 반환되는 타입이 쿠키의 값이 아니라 쿠키 객체라는 점이다.  
따라서 쿠키의 값을 출력하기 위해서는 :

${cookie.쿠키_명.value  }  
혹은  ${cookie["쿠키_명"]["value"]} 
라고 해주어야 한다. 
쿠키의 값 대신 쿠키의 다른 정보를 얻기 위해 쿠키명 뒤에  .domain  .path  .maxAge 등을 사용할 수도 있다.

● initParam
  : 모든 어플리케이션의 초기화 파라미터의 이름의 컬렉션
 ${initParam.파라미터_명} 
혹은 ${initParam["파라미터_명"]}
initParam은 웹 애플리케이션의 초기화 파라미터를 가져오는데 사용한다. 
이 값을 얻기 위해서는 해당 이름의 초기화 파라미터가 web.xml 에 등록되어 있어야 한다.

● pageContext
  : 현재 페이지를 위한  javax.servlet.jsp.PageContext.  JSP 페이지의 환경 정보
${pageContext.메서드_명}
혹은 ${pageContext.메서드_명}
⋅pageContext는 java.servlet.jsp.PageContext 클래스 타입의 객체로, 이 클래스에 속하는 get 메소드들의 호출에 사용된다. 
그 중에서도 파라미터가 사용되지 않는 메소드들만 실행할 수 있다. 사용 형식은  pageContext 뒤에 마침표나 대괄호를 붙혀 사용하나, 메소드 명에서 get을 버리고 난 후, 가장 첫 문자를 소문자로 고쳐 사용한다.

PageContext 클래스의  getRequest 메소드를 사용한다고 하면 :

${pageContext.request} 
혹은 ${pageContext["request"]} 
의 형식이 된다. 각 메소드의 리턴 값은 각각의 객체가 돌아오므로 필요한 필드를 불러와 출력할 수 있다.

⋅request.getContextPath() 가져오기  :  ${pageContext.request.contextPath}
⋅URI : ${pageContext.request.requestURI}

● header, headerValues
 : HTTP 요청 헤더들을 문자열이나 문자열배열로 가진 컬렉션 
 ${header["헤더_명"]}
자바의 식별자 명명규칙을 따르지 않는 헤더는 반드시 위의 형식으로 가져와야 한다.
HTTP 요청 메시지 안에 같은 이름의  HTTP 헤더가 둘 이상 있는 경우는  headerValues 내장 객체를 사용한다. 사용 형식은 paramValues 의 형식과 같다.


'JSP > Jsp 내장객체' 카테고리의 다른 글

JSP 내장객체의 스코프  (0) 2013.08.16
HTML 문서에서 인자로 사용  (0) 2013.08.16
Session  (0) 2013.07.29
Request  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?
2013. 8. 16. 09:42


 String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+cp;


위에서 각 메서드는


getScheme() → http

getServerName() → localhost

getServerPort() → 9090

getContextPath() → test


처럼 값을 가져오며 아래처럼 출력한다.


http://localhost:9090/test

'JSP > JspServlet' 카테고리의 다른 글

서블릿에서 out.print()  (0) 2013.08.16
tag : core  (0) 2013.08.16
None Annotation 스프링 MVC 예제 (abstract, multiaction)  (0) 2013.07.29
MVC 관련 핸들러 매핑 및 컨트롤러  (0) 2013.07.29
액션 태그와 커스텀 태그  (0) 2013.07.29
Posted by 1+1은?