2017. 7. 10. 11:25

1. Google API 인증키 얻기

- 링크 :  https://code.google.com/apis/console


2. Google Map API 

- 링크 :   https://developers.google.com/maps/documentation/javascript/tutorial







3. 해당 소스




<script src="https://maps.googleapis.com/maps/api/js?key={$API_KEY}&callback=initMap" async="" defer=""></script>
- 참고 사이트   http://unikys.tistory.com/375

Posted by 1+1은?
2017. 6. 22. 10:24
MainTypeApplication.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.web.filter.CharacterEncodingFilter;

@SpringBootApplication
public class MainTypeApplication extends SpringBootServletInitializer {

	 private static Class<Maintypeapplication> applicationClass = MainTypeApplication.class;

	 
	public static void main(String[] args) {
		SpringApplication.run(MainTypeApplication.class, args);
	}
	
	@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(applicationClass);
    }
	
	/**
	 * EncodingFilter 
	 * @return
	 */
	@Bean
	public CharacterEncodingFilter characterEncodingFilter() {

		CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
	  
		characterEncodingFilter.setEncoding("UTF-8");
	    characterEncodingFilter.setForceEncoding(true);

	    return characterEncodingFilter;
	}
	
}


Eclipse
Spring boot project > Run as > Run Configurations > 
Main Type -> search -> this class (ex). MainTypeApplication.java) settings


Posted by 1+1은?
2014. 1. 3. 10:36

기본 ini


-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dfile.encoding=UTF-8
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xms1024m
-Xmx1024m

속도향상용


-Dfile.encoding=UTF-8 -Dosgi.requiredJavaVersion=1.6 -Xverify:none -XX:+UseParallelGC -XX:+CMSIncrementalPacing -XX:-UseConcMarkSweepGC -XX:NewSize=128M -Xms1024m -Xmx1024m



코드 자동완성기능 해체
Preferences > Java > Editor > Content Assist -> Auto Activation - Enable auto activation 해제

Spell Checking 해체
Preferences > General > Editors > Text Editors > Spelling -> Enable spell checking 해제


Posted by 1+1은?
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은?