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>
다시방문을 눌러도 방문자 수가 증가하고, 브라우저가 바뀌어도 방문자 수는 초기화되지 않고 유지된다.
'Java & Oracle' 카테고리의 다른 글
자바빈, 우편번호 검색(dbcp), 쿠키, session, 로그인(bean) (0) | 2014.06.23 |
---|---|
사원 봉급 정보 (0) | 2014.06.20 |
Action Tag, plugin, 에러처리, mysql connector, 성적관리프로그램 (0) | 2014.06.19 |
9개의 JSP 내장객체(implicit object, 기본객체), Scope, Action Tag (0) | 2014.06.18 |
JSP의 9가지의 구성요소, 9개의 JSP 내장객체(implicit object, 기본객체) (0) | 2014.06.17 |