http://commons.apache.org/ 접속.

DBCP 누르고, Downloads 누르고, commons-dbcp-1.4-bin.zip 다운.

다시 http://commons.apache.org/ 가서

Pool 누르고, Downloads 누르고,  Apache Commons Pool Downloads page 누르고,

commons-pool-1.6-bin.zip 다운.

다운받은 두개의 알집파일을 풀고 commons-dbcp-1.4.jar 파일과 commons-ppol-1.6.jar 파일을 작업폴더의 lib폴더로 옮긴다.

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

DBCP 1.4 API 의 사용방법


1. DBCP 관련 Jar 파일 및 JDBC 드라이버 Jar 파일 설치하기

   1)Downloads

- DBCP API ==> http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi

- Pool API ==> http://commons.apache.org/proper/commons-pool/download_pool.cgi

   2)Downloads Jar files

- DBCP API 관련 Jar 파일 : commons-dbcp-1.4-bin.zip

- DBCP API 가 사용하는 자카르타 Pool API 의 Jar 파일 : commons-pool-1.6-bin.zip

   3)위의 파일의 압축을 풀고 각각의 jar 파일을 WEB-INF\lib\ 폴더에 import 한다.

        - commons-dbcp-1.4.jar, commons-pool-1.6.jar


   

2. 커넥션 풀 관련 설정 파일 및 초기화하기

   1) 설정파일은 jocl 로 만들어지며 WEB-INF\classes\ 폴더밑에 저장한다.

  

   소스파일) \WEB-INF\classes\pool.jocl

*********************************************************************************************************

<object class="org.apache.commons.dbcp.PoolableConnectionFactory"

    xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">

   <object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">

      <string value="jdbc:oracle:thin:@localhost:1521:XE" />   <!-- URL -->

      <string value="scott" />                                     <!-- user -->

      <string value="tiger" />                                     <!-- password -->

   </object>

  

   <object class="org.apache.commons.pool.impl.GenericObjectPool">

      <object class="org.apache.commons.pool.PoolableObjectFactory" null="true" />

      <int value="10" />                                          <!--  maxActive -->

      <byte value="1" />                                         <!--  wait mode -->

      <long value="10000" />                                  <!--  wait time 10000 ms -->   

      <int value="10" />                                           <!-- maxIdel -->

      <int value="3" />                                             <!-- minIdel --> 

      <boolean value="true" />                                

      <boolean value="true" />

      <long value="600000" />

      <int value="5" />

      <long value="3600000" />

      <boolean value="true" />

   </object>

  

   <object class="org.apache.commons.pool.impl.GenericKeyedObjectPoolFactory" null="true" />



   <string null="true" />

  

   <boolean value="false" />

  

   <boolean value="true" />

</object>


*********************************************************************************************************


3. 커넥션 풀 관련 드라이버 로딩하기


소스파일) \WEB-INF\src\com\javasoft\db\DBCPInit.java

*********************************************************************************************************

package com.javasoft.apache;


import javax.servlet.http.HttpServlet;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import java.util.StringTokenizer;


public class DBCPInit extends HttpServlet {

    public void init(ServletConfig config) throws ServletException {

        try {

            String drivers = config.getInitParameter("jdbcdriver");

            StringTokenizer st = new StringTokenizer(drivers, ",");

            while (st.hasMoreTokens()) {

                String jdbcDriver = st.nextToken();

                Class.forName(jdbcDriver);

            }            

            Class.forName("org.apache.commons.dbcp.PoolingDriver");            

        } catch(Exception ex) {

            throw new ServletException(ex);

        }

    }

}


*********************************************************************************************************


4. 웹 어플리케이션이 시작될 때 DBCPInit 서블릿 클래스가 시작될 수 있도록 지정하기


소스파일) \WEB-INF\web.xml

*********************************************************************************************************

<?xml version="1.0" encoding="euc-kr"?>

....

....

  <servlet>

     <servlet-name>DBCPInit</servlet-name>

     <servlet-class>com.javasoft.apache.DBCPInit</servlet-class>

     <load-on-startup>1</load-on-startup>

     <init-param>

        <param-name>jdbcdriver</param-name>

        <param-value>oracle.jdbc.driver.OracleDriver</param-value>

     </init-param>

  </servlet>

</web-app>

*********************************************************************************************************


5. 커넥션을 가져오는 DBUtil 클래스

  - 커넥션을 구하는 클래스인 별도의 DBConn 클래스를 작성하는것이 개발하는데 편리하다.


소스파일) \WEB-INF\com\javasoft\apache\DBConn.java

********************************************************************************************************

package com.javasoft.apache;


import java.sql.DriverManager;

import java.sql.Connection;

import java.sql.SQLException;


public class DBConn {

    public static Connection getConnection(String poolName)

    throws SQLException {

        return DriverManager.getConnection(

            "jdbc:apache:commons:dbcp:/"+poolName);

    }

}

*********************************************************************************************************

6. 사용방법

    - 커넥션을 구하는 곳에 다음과 같이 해주면 된다.

try {

   conn = DBConn.getConnection("pool");

*********************************************************************************************************

JNDI를 이용한 Connection Pooling 방식


1. JNDI(Java Naming Directory Interface)

2. 자바의 명명 또는 디렉토리 서비스

3. name/value 방식으로 저장하고, name 을 통해 value를 얻는 방법

4. 대표적인 방식은 DNS 이다.

5. www.naver.com  도메인 이름으로 검색하면, DNS Server는 IP를 넘겨준다.

   도메인 이름은 name 이고, IP는 value이다.

6. 데이터베이스에서 JNDI를 사용할 때의 명명규칙은 jdbc/이름



STEP 1. server.xml 환경설정하자.

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

<Context docBase="0620" path="/0620" reloadable="true" source="org.eclipse.jst.jee.server:0620">

<Resource

 auth = "Container" 

 driverClassName = "oracle.jdbc.driver.OracleDriver"

 maxActive = "10"

 maxIdle = "10"

 maxWait = "10000"

 name = "jdbc/myoracle"

 username="scott"

 password = "tiger"

 type="javax.sql.DataSource"

 url = "jdbc:oracle:thin:@192.168.228.132:1521:orcl"

/> 

/>

STEP 2. web.xml 

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

<resource-ref>

  <description>JNDI 연습</description>

  <res-ref-name>jdbc/myoracle</res-ref-name>

  <res-type>javax.sql.DataSource</res-type>

  <res-auth>Container</res-auth>

</resource-ref>


STEP 3. 

*********************************************************************************************************


Connection을 만드는 4가지 방법. jdbc, singleton, dbcp, jndi의 data source를 이용.


dbinfo.properties

DBDRIVER=oracle.jdbc.driver.OracleDriver

DBURL=jdbc:oracle:thin:@192.168.89.130:1521:orcl

DBUSER=scott

DBPWD=tiger


jdbcdemo.jsp

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

    pageEncoding="UTF-8" errorPage="/error/error.jsp" %>

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

<%@ page import="java.util.Properties" %>

<%@ page import="java.io.FileInputStream, java.io.File" %>    

<%

Properties info = new Properties();

String path = application.getRealPath("/security/dbinfo.properties");

File file = new File(path);

info.load(new FileInputStream(file));

Class.forName(info.getProperty("DBDRIVER"));

Connection conn = DriverManager.getConnection(

                      info.getProperty("DBURL"),

                      info.getProperty("DBUSER"),

                      info.getProperty("DBPWD"));

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT empno, ename, job, hiredate, sal FROM emp");

while(rs.next()){

int empno = rs.getInt("empno"); 

String ename = rs.getString("ename");

String job = rs.getString("job");

Date hiredate = rs.getDate("hiredate");

double sal = rs.getDouble("sal");

out.println(String.format("%s,%s,%s,%s,%.2f", empno, ename, job, hiredate, sal));

out.println("<br />");

}

rs.close();

stmt.close();

conn.close();

%>


singleton.jsp

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

    pageEncoding="UTF-8" errorPage="/error/error.jsp" %>

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

<%@ page import="java.util.Properties" %>

<%@ page import="java.io.FileInputStream, java.io.File" %>    

<%

Properties info = new Properties();

String path = application.getRealPath("/security/dbinfo.properties");

File file = new File(path);

info.load(new FileInputStream(file));

Class.forName(info.getProperty("DBDRIVER"));

Connection conn = DriverManager.getConnection(

                      info.getProperty("DBURL"),

                      info.getProperty("DBUSER"),

                      info.getProperty("DBPWD"));

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT empno, ename, job, hiredate, sal FROM emp");

while(rs.next()){

int empno = rs.getInt("empno"); 

String ename = rs.getString("ename");

String job = rs.getString("job");

Date hiredate = rs.getDate("hiredate");

double sal = rs.getDouble("sal");

out.println(String.format("%s,%s,%s,%s,%.2f", empno, ename, job, hiredate, sal));

out.println("<br />");

}

rs.close();

stmt.close();

conn.close();

%>

jdbcdemo.jsp와 singleton.jsp 의 출력은 아래와 같다.

7369,SMITH,CLERK,1980-12-17,800.00 

7499,ALLEN,SALESMAN,1981-02-20,1600.00 

7521,WARD,SALESMAN,1981-02-22,1250.00 

7566,JONES,MANAGER,1981-04-02,2975.00 

7654,MARTIN,SALESMAN,1981-09-28,1250.00 

7698,BLAKE,MANAGER,1981-05-01,2850.00 

7782,CLARK,MANAGER,1981-06-09,2450.00 

7788,SCOTT,ANALYST,1987-04-19,3000.00 

7839,KING,PRESIDENT,1981-11-17,5000.00 

7844,TURNER,SALESMAN,1981-09-08,1500.00 

7876,ADAMS,CLERK,1987-05-23,1100.00 

7900,JAMES,CLERK,1981-12-03,950.00 

7902,FORD,ANALYST,1981-12-03,3000.00 

7934,MILLER,CLERK,1982-01-23,1300.00 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>0620</display-name>

  

  <servlet>

     <servlet-name>DBCPInit</servlet-name>

     <servlet-class>com.javaexpert.apache.DBCPInit</servlet-class>

     <load-on-startup>1</load-on-startup>

     <init-param>

        <param-name>jdbcdriver</param-name>

        <param-value>oracle.jdbc.driver.OracleDriver</param-value>

     </init-param>

  </servlet>

</web-app>


error.jsp

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

    pageEncoding="UTF-8"  isErrorPage="true"  %>

<%

String str = "<br /><span style='color:red;font-size:1.2em;font-weight:bold'>";

%>

<div align="center">

<img src="images/2.jpg" />

<%

if(exception instanceof NullPointerException){

out.print(str);

out.println("Null" + "</span>");

}else if(exception instanceof ArithmeticException){

out.print(str);

out.println("분모를 0으로 놓지 마십시오." + "</span>");

}else if(exception instanceof java.sql.SQLException){

out.print(str);

out.println("SQL 에러" + "</span>");

}else if(exception instanceof java.io.IOException){

out.print(str);

out.println("IO 에러" + "</span>");

}

%>

</div>


pool.jocl

<object class="org.apache.commons.dbcp.PoolableConnectionFactory"

    xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">

   <object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">

      <string value="jdbc:oracle:thin:@192.168.89.130:1521:orcl" />   <!-- URL -->

      <string value="scott" />                                     <!-- user -->

      <string value="tiger" />                                     <!-- password -->

   </object>

  

   <object class="org.apache.commons.pool.impl.GenericObjectPool">

      <object class="org.apache.commons.pool.PoolableObjectFactory" null="true" />

      <int value="10" />                                          <!--  maxActive -->

      <byte value="1" />                                         <!--  wait mode -->

      <long value="10000" />                                  <!--  wait time 10000 ms -->   

      <int value="10" />                                           <!-- maxIdel -->

      <int value="3" />                                             <!-- minIdel --> 

      <boolean value="true" />                                

      <boolean value="true" />

      <long value="600000" />

      <int value="5" />

      <long value="3600000" />

      <boolean value="true" />

   </object>

  

   <object class="org.apache.commons.pool.impl.GenericKeyedObjectPoolFactory" null="true" />



   <string null="true" />

  

   <boolean value="false" />

  

   <boolean value="true" />

</object>


com.javaexpert.apache 패키지의

DBConnection.java

package com.javaexpert.apache;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;


public class DBConnection {

public static Connection getConnection(String poolName)

   throws SQLException {

       return DriverManager.getConnection(

           "jdbc:apache:commons:dbcp:/"+poolName);

   }

}


DBClose.java

package com.javaexpert.apache;


import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;


public class DBClose {

public static void close(Connection conn, Statement stmt, ResultSet rs){

try {

if(rs != null)rs.close();

if(stmt != null) stmt.close();

if(conn != null) conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


DBCPInint.java

package com.javaexpert.apache;


import java.util.StringTokenizer;


import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;


public class DBCPInit extends HttpServlet {

public void init(ServletConfig config) throws ServletException {

        try {

            String drivers = config.getInitParameter("jdbcdriver");

            StringTokenizer st = new StringTokenizer(drivers, ",");

            while (st.hasMoreTokens()) {

                String jdbcDriver = st.nextToken();

                Class.forName(jdbcDriver);

            }            

            Class.forName("org.apache.commons.dbcp.PoolingDriver");            

        } catch(Exception ex) {

            throw new ServletException(ex);

        }

    }

}



com javaexpert.libs 패키지의

DBConnection.java

package com.javaexpert.libs;


import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;


//Singletone Pattern

public class DBConnection {

private static Connection instance;

public static Connection getInstance(String file){

if(instance == null) instance = create(file);

return instance;

}

private DBConnection(){}  //Constructor}

private Connection getConnection(String file){

Properties info = new Properties();

Connection conn = null;

try{

info.load(new FileInputStream(new File(file)));

Class.forName(info.getProperty("DBDRIVER"));

conn = DriverManager.getConnection(info.getProperty("DBURL"),

                                 info.getProperty("DBUSER"), 

                                 info.getProperty("DBPWD"));

}catch(IOException ex){

System.out.println(ex.toString());

}catch(ClassNotFoundException ex){

System.out.println("Class Not Found");

}catch(SQLException ex){

System.out.println(ex.toString());

}

return conn;

}

private static Connection create(String file){

return new DBConnection().getConnection(file);

}

}


DBClose.java

package com.javaexpert.libs;


import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;


public class DBClose {

public static void close(Connection conn, Statement stmt, ResultSet rs){

try {

if(rs != null)rs.close();

if(stmt != null) stmt.close();

if(conn != null) conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

dbcpdemo.jsp

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

    pageEncoding="UTF-8" errorPage="/error/error.jsp" %>

<jsp:directive.page import="com.javaexpert.apache.DBConnection, com.javaexpert.apache.DBClose" />

<jsp:directive.page import="java.sql.*" />

<%

Connection conn = DBConnection.getConnection("pool");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT empno, ename, job, hiredate, sal FROM emp");

while(rs.next()){

int empno = rs.getInt("empno"); 

String ename = rs.getString("ename");

String job = rs.getString("job");

Date hiredate = rs.getDate("hiredate");

double sal = rs.getDouble("sal");

out.println(String.format("%s,%s,%s,%s,%.2f", empno, ename, job, hiredate, sal));

out.println("<br />");

}

DBClose.close(conn, stmt, rs);

%>

출력은 jdbcdemo.jsp나 singletondemo.jsp 와 같다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

server.xml 의 context 추가할 때 아래처럼

      <Context docBase="0620" path="/0620" reloadable="true" source="org.eclipse.jst.jee.server:0620">

       <Resource

         auth = "Container" 

         driverClassName = "oracle.jdbc.driver.OracleDriver"

         maxActive = "10"

         maxIdle = "10"

         maxWait = "10000"

         name = "jdbc/myoracle"

         username="scott"

         password = "tiger"

         type="javax.sql.DataSource"

         url = "jdbc:oracle:thin:@192.168.89.130:1521:orcl"

       />

      </Context>


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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>0620</display-name>

  

  <resource-ref>

  <description>JNDI 연습</description>

  <res-ref-name>jdbc/myoracle</res-ref-name>

  <res-type>javax.sql.DataSource</res-type>

  <res-auth>Container</res-auth>

  </resource-ref>

  

  

    

  <servlet>

     <servlet-name>DBCPInit</servlet-name>

     <servlet-class>com.javaexpert.apache.DBCPInit</servlet-class>

     <load-on-startup>1</load-on-startup>

     <init-param>

        <param-name>jdbcdriver</param-name>

        <param-value>oracle.jdbc.driver.OracleDriver</param-value>

     </init-param>

  </servlet>

  

</web-app>


kr.co.javaexpert.libs.db 패키지의

DBConnection.java

package kr.co.javaexpert.libs.db;


import java.sql.Connection;

import java.sql.SQLException;


import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;


public class DBConnection {

public static Connection getConnection(){

Connection conn = null;

try{

Context context = new InitialContext();

Context other = (Context)context.lookup("java:comp/env");

DataSource ds = (DataSource)other.lookup("jdbc/myoracle");

conn = ds.getConnection();

}catch(NamingException ex){

System.out.println(ex.toString());

}catch(SQLException ex){

System.out.println(ex.toString());

}

return conn;

}

}


DBClose.java

package kr.co.javaexpert.libs.db;


import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;


public class DBClose {

public static void close(Connection conn, Statement stmt, ResultSet rs){

try {

if(rs != null)rs.close();

if(stmt != null) stmt.close();

if(conn != null) conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


jndidemo.jsp

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

    pageEncoding="UTF-8" errorPage="/error/error.jsp" %>

<jsp:directive.page import="kr.co.javaexpert.libs.db.DBConnection, kr.co.javaexpert.libs.db.DBClose" />

<jsp:directive.page import="java.sql.*" />

<%

Connection conn = DBConnection.getConnection();

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT empno, ename, job, hiredate, sal FROM emp");

while(rs.next()){

int empno = rs.getInt("empno"); 

String ename = rs.getString("ename");

String job = rs.getString("job");

Date hiredate = rs.getDate("hiredate");

double sal = rs.getDouble("sal");

out.println(String.format("%s,%s,%s,%s,%.2f", empno, ename, job, hiredate, sal));

out.println("<br />");

}

DBClose.close(conn, stmt, rs);

%>


출력은 역시 같다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

=====================================

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

자바빈

JavaBean?


1. Java Web 에서 사용하기 위한 Java Component(Java Class)

2. Java Web 에서 사용하기 위한 자바 클래스파일들

3. 스펙

  - 상속에 제한이 없다.

  - 반드시 클래스는 패키지화 돼야 한다.

  - 필요에 따라 직렬화를 할 수 있다.

  - 필요에 따라 기본 생성자를 생성할 수 있다.

  - 자바빈에서 사용하는 멤버변수를 property 라고 부른다.

  - 반드시 property 는 private 이어야 한다.

  - private 으로 되어 있는 프라퍼티에 접근하기 위해 메소드가 필요하며,

    그 메소드는 public 이어야 한다.

  - 그 페블릭 메소드를 우리는 setter, getter 라고 부른다.

  - setXxx(), getXxx()

  - 프라퍼티의 데이타티입이 boolean일 경우에는 isXxx() 를 만들 수 있다.


4. <jsp:useBean />

  - 자바 객체를 생성하거나 이미 생성된 객체를 추출하는 태그

  - 자바 객체의 기본생성자만 호출

  1)Syntax

    <jsp:useBean id="instanceName" class="package.ClassName"

        scope="page | request | session | application" />

  2)id

    - Java 식별자 규칙을 사용

    - 영문대소문자, 숫자, _만 사용가능

    - 대소문자 구별

    - 주어진 페이지내의 유일한 이름

    - 문자로 시작해야

  3)class

    - 사용하고자 하는 클래스를 패키지 이름과 같이 기술

  4)scope

    - page | request | session | application

    - 생략하면 page scope 가 적용

    - JavaBean 클래스의 유효기간과 사용 범위 즉 lifecycle 을 결정


5. <jsp:setProperty />

  - JavaBean 의 프라퍼티의 값을 설정 혹은 수정할 때 사용

  - JavaBean 의 setter 즉 setXxx() 메소드를 호출

  - 값을 설정할 때 리터럴로 할 것인지, 아니면 파라미터로 할 것인지를 결정가능

  1) Syntax

    <jsp:setProperty name="useBean의 아이디" 

       { property = "*" | property = "propertyName" }

       { value="propertyValue" | param = "paramValue" }

    />

    - name

      useBean의 id와 동일한 이름

    - property

      JavaBean의 프라퍼티 이름(멤버변수 이름)

      --> setXxx() setter호출됨


6. <jsp:getProperty />

   - JavaBean 의 프라퍼티의 값을 읽어올 때 사용

   - JavaBean 의 getXxx() 즉 getter 호출

   1)Syntax

     <jsp:getProperty name="useBean의 아이디" property="멤버변수 이름" />



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

usebeandemo.jsp

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

    pageEncoding="UTF-8"%>

<jsp:useBean id="today" class="java.util.Date" />

<%--

    Date today = new Date();

--%>

오늘은 <%=today %>


출력:

오늘은 Fri Jun 20 14:30:12 KST 2014

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

package org.javaexpert.libs패키지의 LoginBean.java

package org.javaexpert.libs;


public class LoginBean {

private String userid; //필드가 아니라 프라퍼티라고 한다.

private String passwd;

public String getUserid() {

return userid;

}

public void setUserid(String userid) {

this.userid = userid;

}

public String getPasswd() {

return passwd;

}

public void setPasswd(String passwd) {

this.passwd = passwd;

}

}

usebean.jsp

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

    pageEncoding="UTF-8"%>

<jsp:directive.page import="org.javaexpert.libs.LoginBean" />

<jsp:useBean id="log" class="org.javaexpert.libs.LoginBean" />

<body>

<h1>useBean 연습</h1>

<%

log.setUserid("javaexpert");

log.setPasswd("123456");

%>

사용자 아이디 : <%=log.getUserid() %> <br /> 

패스워드 : <%=log.getPasswd() %>

</body>

</html>


출력:

useBean 연습

사용자 아이디 : javaexpert 

패스워드 : 123456 

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

usebeanscope.jsp

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

    pageEncoding="UTF-8"%>

<%@ page import="org.javaexpert.libs.*" %>


<jsp:useBean id="aaa" class="org.javaexpert.libs.LoginBean" scope="session" />

<body>

<h1>Bean 의 Scope 연습</h1>

<%

aaa.setUserid("Sally");

aaa.setPasswd("P@$$W0rd");

%>

사용자 아이디 : <%=aaa.getUserid() %> <br /> 

패스워드 : <%=aaa.getPasswd() %>

</body>


usebeanscope1.jsp

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

    pageEncoding="UTF-8"%>

<%@ page import="org.javaexpert.libs.*" %>


<jsp:useBean id="aaa" class="org.javaexpert.libs.LoginBean" scope="session" />

<body>

사용자 아이디 : <%=aaa.getUserid() %> <br /> 

패스워드 : <%=aaa.getPasswd() %>

</body>

</html>


usebeanscope.jsp를 실행하면 아이디 비번이 설정된다. 그리고 usebeanscope1.jsp 을 실행하면 처음에 가졌던 정보를 유지하고있다. 

같은 session일 때 값을 저장한다. 다른 브라우저를 사용하거나 다시 브라우저를 실행시키면 기억하지못한다.

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

usebeanset.jsp

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

    pageEncoding="UTF-8"%>

    

<%@ page import="org.javaexpert.libs.*" %>


<jsp:useBean id="bbb" class="org.javaexpert.libs.LoginBean" />


<jsp:setProperty property="userid" name="bbb" value="Michael" />

<jsp:setProperty property="passwd" name="bbb" value="123456" />

<body>


    사용자 아이디 : <%=bbb.getUserid() %> <br /> 

패스워드 : <%=bbb.getPasswd() %>

</body>

</html>


출력:

사용자 아이디 : Michael 

패스워드 : 123456 

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

login.html

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>로그인 창</title>

</head>

<body>

<form method="post" action="usebeanparam.jsp">

아이디 : <input type="text" name="userid" required><br />

패스워드 : <input type="text" name="passwd" required><br />

<input type="submit" value="로그인">

</form>

</body>

</html>


usebeanparam.jsp

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

    pageEncoding="UTF-8"%>

<%@ page import="org.javaexpert.libs.*" %>


<jsp:useBean id="ccc" class="org.javaexpert.libs.LoginBean" />


<%    //더이상 이렇게 사용 안함.

//String userid = request.getParameter("userid");

//String passwd = request.getParameter("passwd");

%>


<jsp:setProperty name="ccc" property="*" />

<body>

사용자 아이디 : <%=ccc.getUserid() %> <br /> 

패스워드 : <%=ccc.getPasswd() %>

</body>

</html>

property와 param이 같으므로 param 을 없애고 * 을 사용하여 몇개를 입력받던지 가능하다.

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

usebeanget.jsp

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

    pageEncoding="UTF-8"%>

<%@ page import="org.javaexpert.libs.*" %>


<jsp:useBean id="ddd" class="org.javaexpert.libs.LoginBean" />


<jsp:setProperty name="ddd" property="userid" value="oracleexpert" />

<jsp:setProperty name="ddd" property="passwd" value="7777" />

<body>

사용자 아이디 : <jsp:getProperty name="ddd" property="userid" /> <br /> 

패스워드 : <jsp:getProperty name="ddd" property="passwd" />

</body>

</html>


출력:

사용자 아이디 : oracleexpert 

패스워드 : 7777 

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

CountBean.java

package org.javaexpert.libs;


public class CountBean {

private int count;    //property


public int getCount() {

return ++count;

}


public void setCount(int count) {

this.count = count;

}

}

requestscope.jsp

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

    pageEncoding="UTF-8"%>

<jsp:directive.page import="org.javaexpert.libs.CountBean" />


<jsp:useBean id="cnt" class="org.javaexpert.libs.CountBean" scope="request" />

<jsp:setProperty name="cnt" property="count" value="1" />


<body>

<h1>Scope : request or page</h1>

방문자 수 : <jsp:getProperty name="cnt" property="count" />명<br />

<a href="requestscope.jsp">다시방문</a>

</body>

</html>

다시방문을 눌러도 방문자 수는 증가하지 않는다.

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

sessionscop.jsp

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

    pageEncoding="UTF-8"%>

<jsp:directive.page import="org.javaexpert.libs.CountBean" />


<jsp:useBean id="eee" class="org.javaexpert.libs.CountBean" scope="session">

<jsp:setProperty name="eee" property="count" value="1" />

</jsp:useBean>

<body>

<h1>Scope : session</h1>

방문자 수 : <jsp:getProperty name="eee" property="count" />명<br />

<a href="sessionscope.jsp">다시방문</a>

</body>

</html>

다시방문을 눌렀을 떄 방문자 수는 증가하지만 브라우저가 바뀌면 세션은 초기화된다.

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

application.jsp

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

    pageEncoding="UTF-8"%>

<jsp:directive.page import="org.javaexpert.libs.CountBean" />


<jsp:useBean id="fff" class="org.javaexpert.libs.CountBean" scope="application">

<jsp:setProperty name="fff" property="count" value="1" />

</jsp:useBean>


<body>

<h1>Scope : application</h1>

방문자 수 : <jsp:getProperty name="fff" property="count" />명<br />

<a href="applicationscope.jsp">다시방문</a>

</body>

</html>

다시방문을 눌러도 방문자 수가 증가하고, 브라우저가 바뀌어도 방문자 수는 초기화되지 않고 유지된다.



0620.zip



+ Recent posts