2011. 2. 13. 01:35
QuntumDB가 아무리 해도 연결이 안되니 너무도 답답하더라구요..ㅠㅠ
The Network Adapter could not establish the connection   error  code:17002
이 말이 뜨면서 연동안됨..


방법 1)

JDBC와 ORACLE 연결 중 IO 예외 상황 ( IO 예외 상황: The Network Adapter could not establish the connection... )

이 될 경우가 종종 있습니다. 해결방법은... 아래 처럼 해보세요.

 

DB 와의 접속되는. Connection 쪽의 연결 IP를

"oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@192.168.123.000:1521:ORCL", "scott", "tiger"

붉은색 글씨부분을 'localhost' 말고 위에처럼 ip주소로 적어보세요.

자신의 컴퓨터 즉 연결할 DB컴퓨터의 ip확인은 시작-실행-cmd 창에서 ipconfig 를 처보면 확인가능.

 

------------------------------------------------------------------------------------------

가끔 톰캣과의 연동에서 ojdbc14.jar 파일을 못읽는 경우가 있음.

자바 나 오라클이 설치된 곳에 가서 ojdbc14.jar 파일을 톰캣의 lib폴더에 복사해보세요.

 

------------------------------------------------------------------------------------------

자신의 컴퓨터에 방화벽이 켜져있어서 그럴경우도 있음.

제어판-방화벽 에 가서 '사용안함'으로 변경후 해보세요.

 

------------------------------------------------------------------------------------------
시작 - 실행 - cmd 창에서 lsnrctl -start를 입력하신 후

 

연결이 실패 했다고 나오면


C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN 폴더에


listener.org, tnsnames.ora를 열어 보시면


현재 아이피와 포트번호가 맞는지 확인해주시면 됩니다.

--------------------------------------------------------------------------------------


연결이 실패하지 않았다면


Tomcat Server.xml 파일(resource 설정 부분)에서

 

연결 IP를 localhost로 사용하지 말고

 

tnsnames.ora 파일에서


(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))


부분의 HOST IP를 사용해보도록 한다.

--------------------------------------------------------------------------------------------------
출처 : http://www.cyworld.com/prizm0911/2598829님 홈피



전.. 이래도 안됐습니다...ㅠㅠ 방법 2)
알 수 없어서 
cmd - >tnsping orcl 을 입력해 보니
리스너가 없더군요..ㅠㅠ

ORA-12541: TNS:리스너가 없습니다.
그래서

시작->실행->cmd->lsnrctl start
명령어로 리스너를 실행시켰습니다..ㅠㅠ
그래도,, 여전히 연결이 안되더군요..ㅠㅠ


결국 마지막 방법으로 웹 서핑 하다 찾은 방법.


시작->실행->cmd->lsnrctl services

여기에 들어가 보니,
제가 알던 포트번호랑 다르더군요..ㅠㅠ
포트번호를 바꿔주니 , 실행이 되네요.ㅠ

이유는 왜 일까요??? 궁금하네요.ㅠ





Posted by Triany
2011. 2. 8. 00:14

슈뢰딩거의 고양이

위키백과, 우리 모두의 백과사전.
산 고양이와 죽은 고양이가 상자 안에 공존하고 있다?
양자역학
\Delta x \, \Delta p \ge \frac{\hbar}{2}
주요 개념

파동함수 · 이중성 · 간섭
불확정 원리 · 배타 원리
변환 이론 · 결풀림
대응 원리 · 측정
중첩 · 양자얽힘· 상호보완성 · 제만 효과

실험

이중 슬릿 실험
데이비슨-거머 실험
슈테른-게를라흐 실험
벨 부등식
포퍼 실험
슈뢰딩거의 고양이

방정식

슈뢰딩거 방정식
파울리 방정식
클라인 고든 방정식
디락 방정식

고등 이론

밀도범함수 이론
섭동이론
양자 마당 이론
위트만 공리
양자전기역학
양자색역학
양자 중력
파인만 도표

해석

코펜하겐 · 앙상블
숨은 변수 · 트랜색션
다세계 · EPR 역설

과학자

플랑크 · 슈뢰딩거
하이젠베르크 · 보어 · 파울리
디랙 · · 보른
드브로이 · 폰노이만
아인슈타인 · 파인먼
에버렛 · 펜로즈

응용
양자정보
(양자 컴퓨터 · 양자암호 · 양자통신)

NMR(핵자기공명)

v  d  e  h

슈뢰딩거의 고양이(Schrödingers Katze)는 1935년오스트리아물리학자 에르빈 슈뢰딩거양자역학의 불완전함을 보이기 위해서 고안한 사고 실험이다. 양자역학에 의하면, 미시적인 세계에서 일어나는 사건은 그 사건이 관측되기 전까지는 확률적으로밖에 계산할 수가 없으며 가능한 서로 다른 상태가 공존하고 있다고 말한다. 그런데 슈뢰딩거가 제안한 이 사고 실험은 우연적으로 일어나는 미시적인 사건이 거시적 세계에 영향을 미칠 때 어떻게 되는가를 보여주는 것으로, 하나의 패러독스로서 거론된다.

이 사고 실험에는 방사능을 가진 원자핵과 고양이 한 마리가 등장한다. 고양이는 외부 세계와 완전히 차단된 상자 속에 들어있고, 이 상자는 독가스가 들어있는 통과 연결되어 있다. 독가스는 벨브에 가로막혀 상자 속으로 들어갈 수 없으며, 독가스가 든 통 역시 외부 세계와 완전히 차단되어 벨브가 열리는지 볼 수 없다. 이 벨브는 원자핵이 든 기계 장치와 연결되어 있는데, 그 기계 장치는 원자핵이 붕괴하여 방사능을 방출하면 그것을 검출하여 벨브를 연다. 벨브가 열린다면 고양이는 독가스를 마셔 죽게 된다. 그리고 처음에 원자핵은 단위 시간 당 50%의 확률로 붕괴하도록 세팅되어 있다. 그렇다면 그 단위 시간이 흐른 후에 고양이는 50%의 확률로 살아 있거나 죽어 있을 것이다.

양자역학에 따르면 관측하지 않은 핵은 '붕괴한 핵'과 '붕괴하지 않은 핵'의 중첩으로 설명되지만, 한 시간 후 상자를 열었을 때 관측자가 볼 수 있는 것은 "붕괴한 핵과 죽은 고양이" 또는 "붕괴하지 않은 핵과 죽지 않은 고양이"뿐이다. 그럼 언제 이 계의 중첩 상태가 끝나고 하나의 상태로 고정되는가?

일반적인 믿음과는 달리, 슈뢰딩거는 "죽기도 하고 살기도 한 고양이"가 진짜로 존재한다고 주장했던 것은 아니다. 오히려 그는 양자역학은 불완전하며 현실적이지 않다고 생각했다. 고양이는 반드시 살아있거나 죽은 상태여야 하기 때문에(그 둘 사이의 어디쯤이 아닌), 양성자 역시 붕괴했거나 붕괴하지 않았거나 둘 중 하나라는 것이다.

일반적으로 받아들여지는 코펜하겐 해석에 따르면 이 실험에서는 관측자가 상자를 여는 동시에 상태가 고정된다. 즉 대상에 대한 관측 행위가 대상의 상태를 결정한다는 것이다.

다중 세계 해석에서는 핵이 붕괴하는 순간이 분기점이 되어 고양이가 살아 있는 세계와 고양이가 죽은 세계가 분리되어 평행 우주가 되고 서로에게 영향을 주지 않는다고 해석한다.

찾아보기 [편집]



















슈뢰딩거의 고양이 [Schrödinger's cat]
요약
오스트리아의 물리학자 슈뢰딩거가 설명한 이론으로, 밀폐된 상자 속에 독극물과 함께 있는 고양이의 생존 여부를 이용하여 양자역학의 원리를 설명한 것이다. 상자 속 고양이의 생존여부는 그 상자를 열어서 관찰하는 여부에 의해 결정되므로 관측행위가 결과에 영향을 미친다는 사실을 이 사고실험을 통해 설명하고 있다. 
본문
슈뢰딩거오스트리아물리학자양자역학을 서술하는 네가지 방법 중 가장 기초적이고 최초의 방정식을 고안해 낸 사람이다. 슈뢰딩거는 말년에 과학철학을 공부했는데 그가 내세운 슈뢰딩거의 고양이는 만약 양자법칙이 거시세계에까지 확장된다면 어떻게 될까를 보여준다.

그 내용은 다음과 같다. 어떤 고양이가 밀폐된 상자 안에 갇혀 있다. 상자 안에는 1시간에 2분의 1 확률로 1개 분해되는 알파입자 가속기가 있고 청산가리 통이 들어 있다. 만약 알파입자가 방출되어 청산가리 통의 센서가 감지하면 청산가리 통은 깨지고 고양이는 죽고 만다. 1시간 후 과연 고양이는 죽었을까 살았을까?

알파입자는 미시세계의 것이고 양자역학으로 서술된다. 그것이 거시세계의 고양이를 죽이느냐 살리느냐의 기로에 놓여 있는 것이다. 각 물리학적 입장에 따라 고양이가 죽었을까 살았을까에 대한 답변은 다르다. 고전역학자들은 실재론자들이며 우리가 그것을 확인하든 안 하든 고양이는 죽었거나 안 죽었거나이다.

1시간 후의 일은 어떻게든 결정되어 있으며 그것은 관찰과 무관하다고 주장할 것이다. 하지만 양자론자들은 관측에 지배받는다고 이야기한다. 고양이는 죽었거나 살았거나이고 우리가 그것을 열어봤을 때에만 의미를 지닌다. 즉, 그것의 결과는 관측에 의존한다. 하나는 결정론적인 사고를 기초로 하고 있으며 다른 하나는 비결정론적인 사고를 취하고 있다.
이처럼 슈뢰딩거 고양이 사고실험은 양자 물리학에서 관측행위가 무엇을 의미하는지를 생각하게 되는 계기가 되었다.

이외에도 가능세계론과 통계적 입장이 있다. 가능세계론은 기본적으로 확률에 의한 세계관을 받아들인다. 그들에 의하면 상자를 여는 순간 세계는 고양이가 죽은 세계와 죽지 않은 세계의 두 갈래로 나뉜다. 통계적 입장 역시 확률론을 받아들인다. 만약 어떤 이가 여러번 이 실험을 반복한다면 어떤 통계적인 값에 이르게 될 것이다. 그것이 바로 고양이가 죽을 확률이라는 것이다.

이 논쟁은 양자역학의 기초를 다져 오늘날 톱쿼크와 같은 물질 기본단위 연구의 길을 트는 동시에 철학사상에도 지대한 영향을 미쳤다. 슈뢰딩거, 막스 보른, 오토 한 등 양자역학을 설명한 독일 괴팅겐대학교 교수들은 통근기차 속 토론에서 이런 복잡하고 심오한 이론체계를 확립했다고 한다.







Posted by Triany
2011. 1. 27. 11:13


톰캣 다운 받을 시 받았던 파일에서 lib 폴더로 가 위의 두 파일을 복사하여
[WEB-INF]-[lib] 에 넣는다.

Web App Libraries에 여러 jar 파일이 추가된 것을 볼 수 있다.


JSTL
JSP는 개발자가 직접 <jsp:include>와 같이 태그를 작성할 수 있는 기능을 제공하는데 이를 커스텀 태그라고 한다. 커스텀 태그 중에서 가장 많이 사용되는 것들을 모아서 JSTL이라는 규약을 만들었다. JSP페이지에서 논리적인 판단, 반복문의 처리, 데이터 베이스등의 처리를 하는 코드를 깔끔하게 작성하기 위해서 커스텀 태그를 작성해왔는데, 이런 중복되는 노력을 없애기 위해서 나온 것이 바로 JSTL(JSP Standard Tag Library)이다.

코어태그(p.479)

>JSTL이 제공하는 태그의 종류

라이브러리

하위기능

접두어

관련 URI

코어

변수 지원

흐름 제어

URL 처리

c

http://java.sun.com/jsp/jstl/core

XML

XML 코어

흐름 제어

XML 변환

x

http://java.sun.com/jsp/jstl/xml

국제화

지역

메시지 형식

숫자 및 날짜 형식

fmt

http://java.sun.com/jsp/jstl/fmt

데이터베이스

SQL

sql

http://java.sun.com/jsp/jstl/sql

함수

컬렉션 처리

fn

http://java.sun.com/jsp/jstl/function

※이번 프로젝트에서는 코어를 중심으로 사용.

>코어 태그 라이브러리

기능분류

태그

설명

변수지원

set

JSP에서 사용될 변수를 설정한다.

remove

설정한 변수를 제거한다.

흐름제어

if

조건에 따라 내부 코드를 수행한다.

choose

다중 조건을 처리할 때 사용된다.

forEach

컬렉션이나 Map의 각 항목을 처리할 때 사용된다.

forTokens

구분자로 분리된 각각의 토큰을 처리할 때 사용된다.

URL처리

import

URL을 사용하여 다른 자원의 결과를 삽입한다.

redirect

지정한 경로로 리다이렉트 한다.

url

URL을 재작성한다.

기타 태그

catch

예외 처리에 사용된다.

out

JspWriter에 내용을 알맞체 처리한 후 출력한다.

코어 태그 라이브러리를 사용하려면 JSP페이지에 다음과 같이 taglib디렉티브를 추가해 주어야 한다.

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




<c:set>태그

<c:set>태그는 EL 변수의 값이나 EL변수의 프로퍼티의 값을 지정할 때 사용한다.
page, request, session, application의 네 영역에 저장되어 있는 객체를 <jsp:useBean>태그와 <jsp:setProperty>태그를 사용하여 JSP코드 내에서 사용될 변수를 지정하고 변수 프로퍼티의 값을 지정할 수 있는 것과 마찬가지로, <c:set>태그는 JSTL의 태그에서 사용될 변수의 값을 처리할 때 사용된다.


   <c:set   var="varName"  value="varValue" [scope="영역"] />
   <c:set   var="varName"  [scope="영역"]>varValue</c:set> 
var: 값을 지정할 EL 변수의 이름
value : 변수의 값을 지정한다. 표현식, EL, 정적인 텍스트를 사용하여 값을 지정할 수 있다.
scope : 변수를 지정할 영역을 지정한다. 값은 page, request, session, application 중 하나가 온다. 지정하지 않을 경우 기본값은 page이다.


test.jsp
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
p { color: blue;  font-size: 14pt;}
</style>
</head>
<body>
        <p> c:set테스트 </p>
        <c:set var="name"  value="홍길동" scope="session" />
        c:set 이후 name: ${name}<br>
       c:set 이후 requestScope.name: ${requestScope.name}<br>
       c:set 이후 sessionScope.name: ${sessionScope.name}<br>
       <c:remove var = "name" />
        c:remove 이후 name: ${name}<br/>
</body>
</html>







<c:if> 태그
 
 <c:if test="조건">
  ....
 </c:if>

test.jsp
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
p { color: blue;  font-size: 14pt;}
</style>
</head>
<body>
        <p> c:set테스트 </p>
        <c:set var="name"  value="홍길동" scope="session" />
        c:set 이후 name: ${name}<br>
        c:set 이후 requestScope.name: ${requestScope.name}<br>
        c:set 이후 sessionScope.name: ${sessionScope.name}<br>
        <c:remove var = "name" />
        c:remove 이후 name: ${name}<br/>
        <c:if test ="${empty name}">
             name값이 설정되어 있지 않습니다.<br>
        </c:if>
        <c:if test ="${ name == null }" >
             name값이 설정되어 있지 않습니다.<br>
        </c:if>
        <c:set var="a" value="100"/>
        <c:if test="${ a>50 }">
                                    예, a의 값은 50보다 큽니다.</br>
              a의 값은 ${a}입니다.
        </c:if>
</body>
</html>






<c:choose><c:when><c:otherwise>
<c:choose>태그는 자바의 switch 구문과 if-else 블록을 혼합한 혀태로서 다수의 조건문을 하나의 블록에서 수행하고자 할 때 사용된다.
 
   <c:choose>
       <c:when test="${memver.level == 'trial'}">
        ........
       </c:when>
       <c:when test="${memver.level == 'regular'}">
        ........
       </c:when>
       <c:when test="${memver.level == 'provider'}">
        ........
       </c:when>
       <c:otherwise>
        .......
       </c:otherwise>
   </c:choose>

test.jsp
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
p { color: blue;  font-size: 14pt;}
</style>
</head>
<body>
 <p> c:choose 테스트 </p>
 <c:choose>
    <c:when test = "${param.type == 'in' }">
                    내부검색을 요청하였습니다.
    </c:when>
       <c:when test = "${param.type == 'out' }">
                             외부검색을 요청하였습니다.  
       </c:when>
       <c:otherwise>
                            요청정보가 전달되지 않았습니다.
       </c:otherwise>
    </c:choose>        
      
</body>
</html>



    http://localhost:8080/test.jsp?type=in 을 사용하여 파라메터를 넘겨 줄 수있다.




<c:forEach>태그
<c:forEach> 태그는 배열, Collection 또는 Map에 저장되어 있는 값들을 순차적으로 처리할 때 사용할 수 있는 태그로서, 자바의 for, do-while 등을 대신해서 사용할 수 있다. <c:forEach>태그의 기본적인 사용 방법은 다음과 같다.
 
    <c:forEach var ="변수"  item="아이템">
       ......
       <tr>
          <td align="right"    bgcolor="#ffffff">
          ${변수사용}
          </td>
      .....
   </c:forEach>


<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
p { color: blue;  font-size: 14pt;}
</style>
</head>
<body>
   <p> c:forEach 테스트 </p>
   <%
        String[] list={"사과", "바나나", "키위"};
        session.setAttribute("fruits", list);
   %>
   <ul>
      <c:forEach var="f" items="${fruits}">
         <li> ${f}</li> 
      </c:forEach>
   </ul> 
</body>
</html>










<c:forEach>태그를 selection과 혼합


<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
p { color: blue;  font-size: 14pt;}
</style>
</head>
<body>
   <p> c:forEach 테스트 </p>
   <%
        String[] list={"사과", "바나나", "키위"};
        session.setAttribute("fruits", list);
   %>
   <ul>
      <c:forEach var="f" items="${fruits}">
         <li> ${f}</li> 
      </c:forEach>
   </ul>
   
     과일을 선택하세요:
   <select name="choice">
     <c:forEach var="f" items="${fruits}">
         <option>${f}</option>
     </c:forEach>
   </select>        
        
      
</body>
</html> 








JAVABEAN 객체와 혼합..
Member.java
package simple.web.model;
import java.io.Serializable;
/*
 * JAVA Bean객체를 만들 수 있는 클래스를 만든다.
 * JAVA Bean이란?
 *  1) Encapsulation 구현 O
 *  2) getter, setter O
 *  3) default 생성자 O
 *  4) Serializable 구현.
 */
public class Member implements Serializable {
 private String id;
 private String passwd;
 private String name;
 private String email;
 private String phone;
 private String address;
 private String sex;
 private String[] interest;
 
 
 public Member() {
  super();
 }
 
 public Member(String id, String passwd, String name, String email,
   String phone, String address) {
  super();
  this.id = id;
  this.passwd = passwd;
  this.name = name;
  this.email = email;
  this.phone = phone;
  this.address = address;
 }
 public Member(String id, String passwd, String name, String email,
   String phone, String address, String sex, String[] interest) {
  super();
  this.id = id;
  this.passwd = passwd;
  this.name = name;
  this.email = email;
  this.phone = phone;
  this.address = address;
  this.sex = sex;
  this.interest = interest;
 }
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getPasswd() {
  return passwd;
 }
 public void setPasswd(String passwd) {
  this.passwd = passwd;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getEmail() {
  return email;
 }
 public void setEmail(String email) {
  this.email = email;
 }
 public String getPhone() {
  return phone;
 }
 public void setPhone(String phone) {
  this.phone = phone;
 }
 public String getAddress() {
  return address;
 }
 public void setAddress(String address) {
  this.address = address;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public String[] getInterest() {
  return interest;
 }
 public void setInterest(String[] interest) {
  this.interest = interest;
 } 
}
test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "simple.web.model.*, java.util.*"%>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
p { color: blue;  font-size: 14pt;}
</style>
</head>
<body>
   <p> c:forEach 테스트 </p>
   <%
        String[] list={"사과", "바나나", "키위"};
        session.setAttribute("fruits", list);
        ArrayList<Member> members = new ArrayList<Member>();
        members.add(new Member("kim", "111","김영숙",
          "yskim@korea.com", "010-1111-2222","address"));
        members.add(new Member("lee", "111","이순신",
          "yskim@korea.com", "010-1111-2222","address"));
        members.add(new Member("hong", "111","홍길동",
          "yskim@korea.com", "010-1111-2222","address"));
        members.add(new Member("park", "111","박찬호",
          "yskim@korea.com", "010-1111-2222","address"));
        request.setAttribute("member", members); //m이라는 객체를 request 스콥에 박아넣음
   %>
       회원목록<br/>
   <ul>
       <c:forEach var="m" items="${member}">
          <li>회원ID  : ${m.id}    &nbsp;&nbsp;
                패스워드: ${m.passwd} &nbsp;&nbsp;
                                     회원명     : ${m.name}  &nbsp;&nbsp;
                이메일     : ${m.email} &nbsp;&nbsp;<br/>
               전화번호: ${m.phone} &nbsp;&nbsp;
                주소          : ${m.address} &nbsp;&nbsp;
          </li>    
       </c:forEach>
   </ul>
   </body>
</html>
 
<!-- 여기서 m.id라는 것은 member에 있는 getId라는 것을 호출해서 출력한다.
                                       그러하기에 반드시 JAVA BEAN 객체여야 한다.
  -->






<c:forEach>와 <c:forTokens>태그
<c:froTokens>태그는 items 속성으로 전달받은 문자열을 구분자를 이용해서 나눈 뒤 나뉘어진 각 문자열을 var속성에 명시한 변수에 저장한다. 예를 들어, 아래 코드는 item을 속성의 값을 (/)로 나눈 "red", "green", "blue"문자열을 color변수에 차례로 대입한다.
 
  <c:forTokens var="color"   items="red,green,blue" delims=",">
       ${color}
  </forTokens}


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "simple.web.model.*, java.util.*"%>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
p { color: blue;  font-size: 14pt;}
</style>
</head>
<body>
   <p> c:forEach 테스트 </p>
   <%
        String wishList="집,돈,맥북,아이폰";
        request.setAttribute("wish", wishList);
       
        String wishList2="토끼/사슴/호랑이/앵무새";
        request.setAttribute("wish2", wishList2); 
   %>
       희망목록
   <ol>
        <c:forEach var="w" items="${wish}">
            <li>${w}</li>
        </c:forEach>
   </ol>
   <!-- forEach는 ,(콤마)를 기준으로 자른다. -->
       구분자를 지정해 준 forToken
   <ol>
         <c:forTokens var="w" items="${wish2}" delims = "/">
                       <li>${w}</li>
         </c:forTokens>
   </ol>
 </body>
</html>  








<c:catch>태그
<c:catch>태그는 발생된 예외를 EL 변수에 저장할 때 사용되는 태그이다.

  <c:catch   var="exName">
       ......
       예외가 발생할 수 있는 코드 
       .......
  </c:catch>
      .....
   ${exName}   사용

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
p { color: blue;  font-size: 14pt;}
</style>
</head>
<body>
   <c:catch var="ex">
     <% int b = 10/0;%>
  </c:catch>
  <c:if test="${not empty ex}">
          ${ex}
  </c:if>
  </body>
</html>
















Posted by Triany
2011. 1. 27. 11:00


표현언어의 기능
- JSP의 네가지 기본 객체가 제공하는 영역의 속성 사용
   : 네가지 기본객체 - SCOP(session, application,
- 집합 객체(Collection)객체에 대한 접근 방법 제공
- 수치 연산, 관계 연산, 논리 연산자 제공
- 자바 클래스 메서드 호출 기능 제공
- 표현 언어만의 기본 객체 제공

 ${변수명}
 ${메소드호출}
 ${계산}


>EL이 제공하는 11개의 기본 객체

기본객체

설명

pageContext

JSP의 page 기본객체와 동일하다

pageScope

pageContext 기본 객체에 저장된 속성의 <속성, 값>매핑을 저장한

Map 객체

requestScope

request 기본객체에 저장된 속성의 <속성,값>매핑을 저장한

Map객체

sessionScope

session 기본객체에 저장된 속성의 <속성,값>매핑을 저장한

Map객체

applicationScope

application 기본객체에 저장된 속성의 <속성,값>매핑을 저장한

Map객체

param

요청 파라미터의 <파라미터이름,값>매핑을 저장한 MAp객체.

파라미터 값의 타입은 String으로서, request.getParameter(이름)의 결과와 동일하다.

paramValues

요청 파라미터의 <파라미터이름.값배열>매핑을 저장한 Map객체.

값의 타입은 String[]으로서, rerquest.getParameterValues(이름)의 결과와 동일하다.

header

요청 정보의 헤더이름, 값> 매핑을 저장한 Map객체.

request.getHeader(이름)의 결과와 동일하다.

headerValues

요청정보의 <헤어이름, 값>배열 매핑을 저장한 Map객체.

request.getHeaders(이름)의 결과와 동일하다.

cookie

<쿠키 이름,Cookie>매핑을 저장한 Map 객체. request.getCookies()로 구한 Cookie배열로부터 매핑을 생성한다.

initParam

초기화 파라미터의 <이름, 값> 매핑을 저장한 Map 객체. application.getInitParameter(이름)의 결과와 동일하다.






test.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
p { color: blue;  font-size: 14pt;}
</style>
</head>
<body>
       <!-- 이런 식으로 실행  http://dddd/test.jsp?name=kim-->
        1.  수신된 데이터: ${param.name} <br/>
        2.  수신된 데이터: <%= request.getParameter("name")%> <br/>
        3.  JSESSIONID 쿠기값 : ${cookie.JSESSIONID.value}
      
</body>
</html>

'Java' 카테고리의 다른 글

파일과 입출력 API  (0) 2011.01.11
java.util 패키지(유틸리티 API)  (0) 2011.01.11
static정리  (0) 2011.01.06
추상클래스 / 인터페이스  (0) 2011.01.06
instanceof연산자  (0) 2011.01.05
Posted by Triany
2011. 1. 25. 15:51














Posted by Triany
2011. 1. 25. 14:48


login 처리의 예!!!

 login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action = "login.do" method  = "post">
사용자명 : <input type = "text" id = "id" name = "id"/><br/>
패스워드 : <input type = "password" id = "passwd" name = "passwd"/><br/>
<input type = "submit" value = "로그인"/>
<input type = "reset" value = "취소"/>
</form>

</body>
</html>

LoginServlet.java

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet
 */
public class LoginServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
   
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  request.setCharacterEncoding("utf-8");
  String id = request.getParameter("id");
  String passwd = request.getParameter("passwd");
  if( id != null && id.equals("kim") &&
    passwd != null && passwd.equals("123")){
   String message = id +"님 환영합니다.";
   request.setAttribute("message", message);
   RequestDispatcher patcher =
    request.getRequestDispatcher("success.jsp");
   patcher.forward(request, response);
   return;
  }else{
   String message = "로그인 실패";
   request.setAttribute("message", message);
   RequestDispatcher patcher =
    request.getRequestDispatcher("failed.jsp");
   patcher.forward(request, response);
   return;
  }
  
  
 }


 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
 }

 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */

}

sucess.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor = "green">
   <b1><font color = "white" size = "6" >
   <%= request.getAttribute("message") %></b1>

</body>
</html>

failed.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor = "red">
  <b1><font color = "white" size = "6" >
   <%= request.getAttribute("message") %></b1>
</body>
</html>





index.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel = "stylesheet" href = "login.css" type = "text/css"/>
</head>
<body>
   <div id="container">
 <div id="header">
  <h1>
   HomeShopping♡
  </h1>
 </div>
 <div id="navigation">
  <ul>
   <li><a href="#">홈으로</a></li>
   <li><a href="#">거래내역</a></li>
   <li><a href="#">장바구니</a></li>
   <li><a href="#">개인정보</a></li>
  </ul>
 </div>
 <div id="content-container">
  <div id="content">
   <h2>
     Hello!!!
   </h2>
   <p>
    Lorem ipsum dolor sit amet consect etuer adipi scing elit sed diam nonummy nibh euismod tinunt ut laoreet dolore magna aliquam erat volut. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
   </p>
   <p>
    Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
   </p>
   <p>
    Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
   </p>
  </div>
  <div id="aside">
   <jsp:include page = "login.jsp"/> 
  </div>
  <div id="footer">
   Copyright © Site name, 20XX
  </div>
 </div>
</div>
</body>
</html>

 login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<% if (session.getAttribute("username") == null ) {%>
<form action = "login.do" method  = "post">
사용자명 : <input type = "text" id = "id" name = "id"/><br/>
패스워드 : <input type = "password" id = "passwd" name = "passwd"/><br/>
<input type = "submit" value = "로그인"/>
<input type = "reset" value = "취소"/>
</form>
<%} else { %>
<p><%= session.getAttribute("username") %> 님 환영합니다. </p>
<p><a href = "logout.jsp"> 로그아웃</a> &nbsp;
   <a href = "mod_user_info.jsp">정보수정</a></p>
<% } %>
</body>
</html>
 




 

logout.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% session.invalidate(); %>
<script language = "javascript">
 alert("성공적으로 로그아웃하였습니다.");
 location.href = "index.jsp";
</script language>

login.css
 @CHARSET "UTF-8";
#sidebar{ float:right; width:245px;}
/* 로그인 */
#login {width:208px; height:128px; background:url(standard/images/bg_login.jpg) no-repeat; margin-bottom:10px; padding:47px 17px 0 20px;} /*패딩때문에 높이와 너비가 줄었음 */
#login dd{width:141px; float:left; vertical-align:top;}
#login dd.pw{ margin-top:3px;}
#login .input_text{border:1px solid #c9c9c9; width:137px; height:18px; color:#444;}
#login #id{background:#fff url(images/bg_login_id.gif) no-repeat 0px 0px;}
#login #pw{background:#fff url(images/bg_login_pw.gif) no-repeat 0px 0px;}
#login .keeping{float:right; margin:-22px 0 0 0; background:#003366}
#login .log_in_etc{float:left; padding:5px 0 0 0; .padding:3px 0 0 0; color:#9e9e9e; font:normal 11px dotum; width:170px;}
#login .log_in_etc input{ vertical-align:-2px; margin:0 3px 0 0;}
#login .log_in_find {float:left; clear:both; margin-top:14px;.margin-top:9px; font-size:12px; width:200px; letter-spacing:-1px;}
#log_notice {float:left; clear:both;width:200px; margin-top:16px;.margin-top:13px;font:normal 11px dotum; } /*.margin은 IE6의 공백을 맞추기위해 핵사용*/
#log_notice img{ vertical-align:-1px;}

 

 

#container
{
 margin: 0 auto;
 width: 900px;
 background: #ffc0cb;
}

#header
{
 background: #ffb6C1;
 padding: 20px;
}

#header h1 { margin: 0; }

#navigation
{
 float: left;
 width: 900px;
 background: #bc8f8f;
}

#navigation ul
{
 margin: 0;
 padding: 0;
}

#navigation ul li
{
 list-style-type: none;
 display: inline;
}

#navigation li a
{
 display: block;
 float: left;
 padding: 5px 10px;
 color: #fff;
 text-decoration: none;
 border-right: 1px solid #fff;
}

#navigation li a:hover { background: #383; }

#content-container
{
 float: left;
 width: 900px;
 background: #ffe4f1 url(/wp-content/uploads/layout-two-fixed-background.gif) repeat-y 100% 0;
}

#content
{
 clear: left;
 float: left;
 width: 560px;
 padding: 20px 0;
 margin: 0 0 0 30px;
 display: inline;
}

#content h2 { margin: 0; }

#aside
{
 float: right;
 width: 240px;
 padding: 20px 0;
 margin: 0 20px 0 0;
 display: inline;
}

#aside h3 { margin: 0; }

#footer
{
 clear: left;
 background: #ffdab9;
 text-align: right;
 padding: 20px;
 height: 1%;
}

 LoginServlet.java
package simple.web.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class LoginServlet
 */
public class LoginServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
   
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  request.setCharacterEncoding("utf-8");
  String id = request.getParameter("id");
  String passwd = request.getParameter("passwd");
  HttpSession session = request.getSession();
  if( id != null && id.equals("kim") &&
    passwd != null && passwd.equals("123")){
   session.setAttribute("username", id);
  }
  RequestDispatcher patcher =
  request.getRequestDispatcher("index.jsp");
  patcher.forward(request, response);
  return;
 }


 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
 }

 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */

}

 











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

JSTL 환경 설정  (0) 2011.01.27
색상테이블 / 색상표 / 색상코드  (0) 2011.01.25
JSP == Servlet (궁극적으로...)  (0) 2011.01.25
JSP 페이지 구성 요소 / 웹 요청 처리 SCOPE  (0) 2011.01.25
서블릿 (ⅱ)  (0) 2011.01.25
Posted by Triany
2011. 1. 25. 14:41
JSP가 Servlet인지 확인해 보자-

작성한 jsp를 Export 시킨다 - WAR file으로..






경로는 c:\apache-tomcat-6.0.30\webapps로.



Export 시키고, webapps 폴더에 가보면 webproject.war파일이 생긴 것을 볼 수 있다.





eclips 서버를 잠시 stop 시키고, cmd에서 startup시킨다.



webapps에 webproject 폴더가 생긴 것을 볼 수 있다.








웹에서 webproject/add.jsp를 실행해 보자.






웹에서 실행 시킨 후,  아래 경로에 java 파일이 생긴것을 볼 수 있다.


아래 add_jsp.java 파일을 보면
servlet형식으로 쓰여 진 것을 볼 수 있다.
궁극적으로 jsp는 servlet으로 바뀌게 된다.









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

색상테이블 / 색상표 / 색상코드  (0) 2011.01.25
login 처리. / home 간단 sample 처리.  (0) 2011.01.25
JSP 페이지 구성 요소 / 웹 요청 처리 SCOPE  (0) 2011.01.25
서블릿 (ⅱ)  (0) 2011.01.25
서블릿 (ⅰ)  (0) 2011.01.24
Posted by Triany
2011. 1. 25. 13:36
JSP의 주된 목적은 웹 브라우저에 보여줄 html 문서를 생성하는것이다.
<%@ %> : 지시어(Directive) -> 페이지에 대한 설정 정보를 지정
                <%@ page   ..... %>
                <%@ taglib  ..... %>   
                <%@ include  .....%>    : 다른 페이지를 포함시키는 용도
<%! %> : 선언문(Declaration)
              클래스의 멤버변수, 멤버메서드를 선언하기 위한 문법
              init(), destroy() 메서드는 선언문 안에서 선언해야 한다. 
<%= %> : 표현식
               변수값, 메서드 호출결과를 화면에 출력하는 부분
<%-- --%> : 커멘트
                   JSP에서 사용되는 주석문
                  ☆  HTML에서 사용하는 주석문<!-- --> 과의 차이점
                  - 서블릿 코드에 <%-- --%>로 작성된 주석은 들어가지 않는다.
<% %> : 스크립트릿(Scriptlet)
             자바코드를 실행한다.

◇JSP 페이지의 구성 요소

- 디렉티브(Directive)

- 스크립트 : 스크립트릿(Scriptlet), 표현식(Expression), 선언부(Declaration)

- 표현 언어(Expression Language)

- 기본 객체 (Implicit Object)

- 정적인 데이터

- 표준 액션태크(Action Tag)

- 커스텀 태그(Custom tag)와 표준 태그 라이브러리(JSTL)

◇page 디렉티브

: JSP 페이지에 대한 정보를 입력하기 위해 사용

>페이지 디렉티브 주요 속성

속성

설명

기본값

language

JSP 스크립트 코드에서 사용되는 프로그래밍 언어를 지정한다.

java

contentType

JSP가 생성할 문서의 타입을 지정한다.

text/html

import

JSP 페이지에서 사용할 자바 클래스를 지정한다.

session

JSP 페이지가 세션을 사용할지의 여부를 지정한다.

“true"일 경우 세션을 사용하고,

”false"일 경우 세션을 사용하지 않는다.

true

buffer

JSP 페이지의 출력 버퍼의 크기를 지정한다. “none"일 경우 출력 버퍼를 사용하지 않으며, ”8kb"라고 입력한 경우 8킬로바이트 크기의 출력 버퍼를 사용한다.

최소

8kb

autoFlush

출력 버퍼가 다 찼을 경우 자동으로 버퍼에 있는 데이터를 출력 스트림에 보내고 비울지의 여부를 나타낸다.

"true"일 경우 버퍼의 내용을 웹 브라우저에 보낸 후 버퍼를 비우며, “false"일 경우 에러를 발생시킨다.

true

info

JSP 페이지에 대한 설명을 입력한다.

errorPage

JSP 페이지를 실행하는 도중에 에러가 발생할 때 보여줄 페이지를 지정한다.

isErrorPage

현재 페이지가 에러를 발생될 때 보여지는 페이지인지의 여부를 지정한다. “true”일 경우 에러 페이지이며, “false"일 경우 에러 페이지가 아니다.

false

pageEncoding

JSP 페이지 자체의 캐릭터 인코딩을 지정한다.

isELignored

"true"일 경우 표현 언어를 지원하며, “false"일 경우 표현 언어를 지원하지 않는다.

기본값은 web.xml 파일이 사용하는 JSP 버전 및 설정에 따라 다르다.

deferredSyntaxAllowedAsLiteral

#{ 문자가 문자열 값으로 사용되는 것을 허용할지의 여부를 지정한다.

false

trimDirectiveWhitespaces

출력 결과에서 템플릿 텍스트의 공백 문자를 제거할지의 여부를 지정한다.

false

스크립트 요소

스크립트 요소는 JSP 프로그래밍에서 로직을 수행하는 데 필요한 부분으로, 스크립트 코드를 사용하여 프로그램이 수행해야 하는 기능을 구현할 수 있다.

JSP의 스크림트 요소에는 다음과 같이 세가지가 있다.

★ 스크립트릿(Scriptlet) : JSP 페이지에서 자바 코드를 실행할 때 사용되는 코드의 블록이다.

<%

자바코드 1;

자바코드 2;

자바코드3;

%>

★ 표현식(Expression) : 어떤 값을 출력 결과에 포함시키고자 할 때 사용된다.

<%= 값 %>

★ 선언부(Declaration) : JSP 페이지의 스크립트릿 표현식에서 사용할 수 있는 함수를 작성할 때 사용된다.

<%!

public 리턴 타입 메서드이름(파라미터 목록) {

자바 코드1;

자바 코드2;

.....

자바 코드n;

return 값;

}

%>






[웹요청 처리 SCOPE]

PAGE : 한 페이지

REQUEST : 요청 -> 응답까지

SESSION : 로그인 -> 로그아웃

APPLICATION : 서버시작 -> 서버종료




[JSP기본 객체]

pageContext : PAGE SCOPE에서 사용되는 데이터를 처리할 수 있는 객체

request : REQUEST SCOPE에서 사용되는 데이터를 처리할 수 있는 객체

request.setAttribute(name,value)

request.getAttribute(name)

session : SESSION SCOPE에서 사용되는 데이터를 처리할 수 있는 객체

HttpSession session = request.getSession();

session.setAttribute(name, value)

session.getAttribute(name)

application : APPLICATION SCOPE에서 사용되는 데이터를 처리할 수 있는 객체

out

exception

page

config

기본 객체의 속성(Attribute 사용하기

>속성 처리 메서드

메서드

리턴 타입

설명

setAttribute(String name,

object value)

void

이름이 name인 속성의 값을 value로 지정한다.

getAttribute(String name)

Object

이름이 name인 속성의 값을 구한다. 지정한 이름의 속성이 존재하지 않을 경우 null을 리턴한다.

removeAttribute(String name)

void

이름이 name인 속성을 삭제한다.

getAttributeNames()

java.util.

Enumeration

속성의 이름 목록을 구한다.(pageContext 기본 객체는 이 메서드를 제공하지 않는다.)



[액션태그]

<jsp:include>

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

<jsp:forward>

<jsp:param>

==>key==100 값을 가지고 test.jsp페이지 이동

<jsp:forward page = "test.jsp">

<jsp:param name = "key value = "100" />

<jsp:forward>

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

색상테이블 / 색상표 / 색상코드  (0) 2011.01.25
login 처리. / home 간단 sample 처리.  (0) 2011.01.25
JSP == Servlet (궁극적으로...)  (0) 2011.01.25
서블릿 (ⅱ)  (0) 2011.01.25
서블릿 (ⅰ)  (0) 2011.01.24
Posted by Triany
2011. 1. 25. 10:42

Servlet은 Controller(제어)의 역할을 담당하게 한다.
RequestDispatcher가 경우에 따라 jsp(present 구현)해주는 페이지로 넘겨준다.
(프레임 웤이 하는 일을 서블릿이 하도록 작성해 보자)
 : 아직 프레임 웤을 사용하지 않기 때문

소스)
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    현재시간 : <%= new java.util.Date() %> <br></br>
  <p>데이터를 입력하고 전송 버튼을 눌러 주세요</p>
  <form action = "first.do" method = "get">
       이름 : <input type = "text" name = "name"/><br/>
       좋아하는 동물은 ?
       <input type = "checkbox" name = "pet" value = "강아지">강아지</input>
       <input type = "checkbox" name = "pet" value = "고양이">고양이</input>
       <input type = "checkbox" name = "pet" value = "송아지">송아지</input>
       <br/>
       <input type = "submit" value = "전송"/>
    </form>
</body>
</html>


FirstSetvlet.java
package simple.web.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 private int count;
 
 public FirstServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
 
 /*
  * init()
  * 서블릿을 시작할 때 호출한다.
  * 시작할 때 무엇인가를 처리하고 싶다면..
  * init()에 처리
  */
 @Override
 public void init() throws ServletException {
  // TODO Auto-generated method stub
  super.init();
  count = 100;
  System.out.println("init() called... count = " + count);
  //콘솔에 창 띄움.
 }
 
 /*
  * destroy()
  * 서버를 종료시키면 호출된다.
  * 서블릿을 종료시킬 때 처리하고 싶은 것이 있다면...
  * destory()에 처리
  */
   @Override
 public void destroy() {
  // TODO Auto-generated method stub
  System.out.println("destroy() called... count = " + count);
 }
 
 
 
    //새로 생성. doGet방식으로 들어오든, doPost방식으로 들어오든(요청)
    //같은 방식으로 처리하겠다.
   protected void process(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
     response.setContentType("text/html;charset=utf-8");
     request.setCharacterEncoding("utf-8");
     //POST 방식으로 보냈을 때 한글로 처리하기 위함
     PrintWriter out = response.getWriter();
     String name = request.getParameter("name");
     if( name.equals("김영숙")){
      RequestDispatcher dispatcher =
       request.getRequestDispatcher("success.jsp");
      dispatcher.forward(request, response);
      return;
     } else{
      RequestDispatcher dispatcher =
       request.getRequestDispatcher("failed.jsp");
      dispatcher.forward(request, response);
      return;
     }
   }
   
   /*
    * 서비스는 종류에 따라 불러짐.
    * get - doget
    * post - dopost
    */
    protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
 }

 protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
  
 }
}
sucess.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor = "green">
   <b1><font color = "white" size = "6" > 환영합니다.</b1>
</body>
</html>


failed.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor = "red">
<font color = "white" size = "6" > 실패하셨습니다.</font>
</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



















 

Posted by Triany
2011. 1. 24. 15:55

group study.

서블릿

Servet = > 1. 서버에서 실행되는 자바 컴포넌트
               2. HTTP 요청을 받아서 처리
               3. HTTP 응답을 동적으로 만들어서 처리
               4. Web Container에서 실행
                     (Web Container : Servlet과 Thread pool을 관리하는 특별한 형태의 JVM)


head   url, HTTP1.1, Cookie
body   data

  [클라이언트가 보내는 요청 방식]
※GET방식
head  http://○.○.○/○.jsp?name=kim  
※POST방식
head http://○.○.○/○.jsp
body name = kim

1) GET :  요청정보를 head에다 담아가는 방식. (ex) http://***.***.***/login.jsp?user=kim&pass)
특별히 어느 방식으로 요청하지 않으면 GET이 Default 방식이 된다.
Bookmarking같은 것이 필요한 경우에는 반드시 GET방식으로 써야 한다.
(눈에 보여도 상관없는 경우도 OK.)
2) POST : 요청정보를 body에다 담아가는 방식 사용  (ex) user = kim & pass = 1, 2, 3
서버에게 보내야 하는 데이터가 경우, 전송데이터에 보안이 요구되는 경우
3)PUT ( 파일을 올릴때 ) [자주 사용하진 않음] 
4)DELETE ( 삭제 할 때 ) [자주 사용하진 않음]

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
     public FirstServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
    //새로 생성. doGet방식으로 들어오든, doPost방식으로 들어오든(요청)
    //같은 방식으로 처리하겠다.
    protected void process(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
     response.setContentType("text/html;charset=utf-8");
     PrintWriter out = response.getWriter();
     out.println("<b>환영합니다</b>"); //respontse가 알아서 씀.\
  out.close();
  //이 페이지를 요청하면 환영합니다. 하고 끝~
 }
   
 protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
 }
 protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
  
 }
}


[서블릿 클래스의 기능을 이해하고 생성할 수 있다.]
 HttpServlet
 init();
 service(request,response);
    ->doPost(request, response)
    ->doGet(request, response)
 destroy();

 Servlet Life Cycle
1. load servlet class
2. create sevlet instance
3. Call the init method
4. Call the service method
    서비스는 종류에 따라 달리 불러질 것
    GET - doget
    POST - dopost
5. Call the destroy dethod

The web container manages the life cycle of a servlet instance
These methods should not be called by your code. 




import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 private int count;
 
 public FirstServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

 
 /*
  * init()
  * 서블릿을 시작할 때 호출한다.
  * 시작할 때 무엇인가를 처리하고 싶다면..
  * init()에 처리
  */
 @Override
 public void init() throws ServletException {
  // TODO Auto-generated method stub
  super.init();
  count = 100;
  System.out.println("init() called... count = " + count);
  //콘솔에 창 띄움.
 }
 
 /*
  * destroy()
  * 서버를 종료시키면 호출된다.
  * 서블릿을 종료시킬 때 처리하고 싶은 것이 있다면...
  * destory()에 처리
  */
   @Override
 public void destroy() {
  // TODO Auto-generated method stub
  System.out.println("destroy() called... count = " + count);
 }
 
 
 
    //새로 생성. doGet방식으로 들어오든, doPost방식으로 들어오든(요청)
    //같은 방식으로 처리하겠다.
   protected void process(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
     response.setContentType("text/html;charset=utf-8");
     PrintWriter out = response.getWriter();
     out.println( "<b>환영합니다" + (count++) +"번째 방문객입니다.</b>"); //respontse가 알아서 씀.\
  out.close();
  //이 페이지를 요청하면 환영합니다. 하고 끝~
 }
   
   /*
    * 서비스는 종류에 따라 불러짐.
    * get - doget
    * post - dopost
    */
    protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
 }

 protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
  
 }
}








 

JSP용도 : 프레젠테이션.(보여주기만 하는것)
Client의 요청을 서블릿에게 보내줌...!!!!!!
클라이언트에게 요청이 들어오면 그 요청을 서블릿이 받아서 처리할 것
서블릿은 내가 호출하는 것이 아니라, 
클라이언트가 요청을 보내면 Web Container()가 받아서,,, Web Container가 Request에 해당하는 객체를 자동적으로 만들어줌.
그 과정에서 만들어진 HttpServerRequest와 HttpServerResponse에 의해 init, doget, dopost, destroy 부름..

 

request와 response객체를 이해한다.
   HttpServlet Request
       getHeanerName()
       getHeader(name)
   HttpServletResponse
       getParameter(name)
       getParameterValues(name)
       getParameterNames()
       getRequestDispatcher("다음으로 갈 페이지명")
           ->반환하는 객체가 RequestDispatcher이다.
             이 객체가 제공하는 forward(request, response)
             메서드를 호출하여 다음 페이지로 이동한다.



요청 헤더 정보의 처리 

JSP의 request 기본 객체는 헤더 정보를 읽어올 수 있는 기능을 제공하고 있으며, 이 기능을 제공하는 메서드는 아래와 같다.
; 헤더정보 ex)웹 브라우저는 웹 부라우저의 종류에 대한 정보를 헤더에 담아서 전송

 [request 기본 객체가 제공하는 헤더 읽기 메서드]
 메서드 리턴 타입  설명 
 getHeaderNames() java.util.Enumeration  모든 헤더의 이름을 구한다. 
 getHeader(String name) String  지정한 이름의 헤더 값을 구한다. 
 getHeaders(String name) java.util.Enumeration  지정한 이름의 헤더 목록을 구한다. 
 getIntHeader(String name) int  지정한 헤더의 값을 정수 값으로 읽어온다. 
 getDateHeader(String name) long  지정한 헤더의 값을 시간 값으로 읽어온다.(이때 시간은 1970년 1월 1일 이후로 흘러간 1/1000초 단위의 값을 가진다. 


import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 private int count;
 
 public FirstServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
 
 /*
  * init()
  * 서블릿을 시작할 때 호출한다.
  * 시작할 때 무엇인가를 처리하고 싶다면..
  * init()에 처리
  */
 @Override
 public void init() throws ServletException {
  // TODO Auto-generated method stub
  super.init();
  count = 100;
  System.out.println("init() called... count = " + count);
  //콘솔에 창 띄움.
 }
 
 /*
  * destroy()
  * 서버를 종료시키면 호출된다.
  * 서블릿을 종료시킬 때 처리하고 싶은 것이 있다면...
  * destory()에 처리
  */
   @Override
 public void destroy() {
  // TODO Auto-generated method stub
  System.out.println("destroy() called... count = " + count);
 }
 
 
 
    //새로 생성. doGet방식으로 들어오든, doPost방식으로 들어오든(요청)
    //같은 방식으로 처리하겠다.
   protected void process(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
     response.setContentType("text/html;charset=utf-8");
     PrintWriter out = response.getWriter();
     out.println( "<b>환영합니다" + (count++) +"번째 방문객입니다.</b>"); //respontse가 알아서 씀.\
     
  
   //getHeaderNames() 헤더에 담겨져 오는 데이터의 이름값을 가져온다.
     Enumeration headers = request.getHeaderNames();
     //헤드 정보 이름 : 값. 으로 구성되 있음...
     while ( headers.hasMoreElements()) //요소가 있는 동안에 돌리겠다.
     {
      String name = (String)headers.nextElement();
      //getHeader(name)는 해당 이름에 해당하는 값을 읽어 온다.
      String value = request.getHeader(name);
      out.println("<li>"+ name + "  : " + value);
     }
     
     
     out.close();
  //이 페이지를 요청하면 환영합니다. 하고 끝~
 }
   
   /*
    * 서비스는 종류에 따라 불러짐.
    * get - doget
    * post - dopost
    */
    protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
 }


 protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
  
 }
}





 




요청 파라미터의 처리
>request 기본 객체의 파라미터 읽기 메서드

 메서드 리턴 타입  설명 
 getParameterNames() java.util.Enumeration  웹 브라우저가 전송한 파라미터의 이름을 구한다. 
 getParameter(String name) String  이름이 name인 파라미터의 값을 구한다. 존재하지 않을 경우 null을 리턴한다. 
 getParameterValues(String name) String[]  이름이 name인 모든 파라미터의 값을 배열로 구한다. 존재하지 않을 경우 null을 리턴한다. 
 getParameterMap() java.util.Map  웹 브라우저가 전송한 파라미터의 맵을 구한다. 맵은 <파라미터 이름, 값> 쌍으로 구성된다. 



실제로 파라메터 값을 읽어올 수 있는지 확인하기 위한 jsp화면.
>POST형식으로 데이터 request 하기

 index.jsp
 <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    현재시간 : <%= new java.util.Date() %> <br></br>
  <p>데이터를 입력하고 전송 버튼을 눌러 주세요</p>
  <form action = "first.do" method = "post">
       이름 : <input type = "text" name = "name"/><br/>
       좋아하는 동물은 ?
       <input type = "checkbox" name = "pet" value = "강아지">강아지</input>
       <input type = "checkbox" name = "pet" value = "고양이">고양이</input>
       <input type = "checkbox" name = "pet" value = "송아지">송아지</input>
       <br/>
       <input type = "submit" value = "전송"/>
    </form>
</body>
</html>
 FirstSetvlet.java

 package simple.web.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 private int count;
 
 public FirstServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

 
 /*
  * init()
  * 서블릿을 시작할 때 호출한다.
  * 시작할 때 무엇인가를 처리하고 싶다면..
  * init()에 처리
  */
 @Override
 public void init() throws ServletException {
  // TODO Auto-generated method stub
  super.init();
  count = 100;
  System.out.println("init() called... count = " + count);
  //콘솔에 창 띄움.
 }
 
 /*
  * destroy()
  * 서버를 종료시키면 호출된다.
  * 서블릿을 종료시킬 때 처리하고 싶은 것이 있다면...
  * destory()에 처리
  */
   @Override
 public void destroy() {
  // TODO Auto-generated method stub
  System.out.println("destroy() called... count = " + count);
 }
 
  
    //새로 생성. doGet방식으로 들어오든, doPost방식으로 들어오든(요청)
    //같은 방식으로 처리하겠다.
   protected void process(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
     response.setContentType("text/html;charset=utf-8");
     request.setCharacterEncoding("utf-8");
     //POST 방식으로 보냈을 때 한글로 처리하기 위함
     PrintWriter out = response.getWriter();
     
     String name = request.getParameter("name");
     String[] pet = request.getParameterValues("pet");
     out.println("<b>"+ name + "님 환영합니다."
       + (count++) +"번째 방문객입니다.</b>"); //respontse가 알아서 씀.\
     out.println("좋아하는 동물을 다음과 같이 선택하셨습니다.");
     for(String p : pet){
      out.println("<li>"+p);
     }
     
  
     out.close();
  //이 페이지를 요청하면 환영합니다. 하고 끝~
 }
   
   /*
    * 서비스는 종류에 따라 불러짐.
    * get - doget
    * post - dopost
    */
    protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
 }

 protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  process(request, response);
  
 }
}







>GET형식으로 데이터를 한글로!! request 하기
1) 일단 설정을 변경하여야 한다.(톰캣 자체를)

redirectPort 밑에 라인 추가
URIEncoding = "utf-8"




2)이제 한글로 출력해 보자.  앞에 jsp 파일에서 method = "get" 부분만 수정해 주면 된다.
(default일 경우 get처리 되므로 생략하여도 get 처리된다.) 

GET방식으로 하면, head에 한글이 첨부되어 간다(블록 처리해 놓은 것 참조)

Posted by Triany