교제P332

JDBC 드라이버를 준비해야한다. : JSP 와 DB 의 매개  클래스모음


JDBC API를 통해 표준화작업.


ojdbc14.jar


JDBC 드라이버 파일을 넣을수있는 위치


1. jdk 설치위치 : C:\Program Files\Java\jdk1.7.0_02\jre\lib\ext    




2.톰캣폴더 :  D:\javaWork\apache-tomcat-7.0.12-windows-x86\apache-tomcat-7.0.12\lib




3.프로젝트단위로 사용시 : WEB-INF/lib/ojdbc14.jar





테이블 생성하기
create table member1(
   id varchar2(10) primary key,
   passwd varchar2(10) not NULL,
   name varchar2(20) not NULL,
   register TIMESTAMP not NULL
);







JDBC 프로그래밍의 코딩 스타일


JDBC프로그램의 일반적인 실행 순서는 다음과 같다.

 1. JDBC 드라이버 로딩

 2. 데이터베이스 커넥션 구함

 3. 쿼리 실행을 위한 Statement 객체 생성

 4. 쿼리 실행

 5. 쿼리 실행 결과 사용

 6. Statement 종료

 7. 데이터베이스 커넥션 종료




JSP 에서 DB 접속하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!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>DB 연동 테스트</title>
</head>
<body>
<%
    Connection con=null;
    
    try{
        //thin드라이버가 성능이좋음
        String jdbcUrl="jdbc:oracle:thin:@localhost:1521:orcl";
        String dbId="hr";
        String dbPass="hr";
                
        //JDBC 수행 1단계
        //JDBC 드라이버 로드
        //Class.forName : Static한 메소드를이용해서 시스템중
        Class.forName("oracle.jdbc.driver.OracleDriver");
        
        //JDBC 수행2단계
        //Connection 객체 생성
        //db주소와 일반계정의 id, 비밀번호를 명시해서 인증된 상태에서 DB연동
        con=DriverManager.getConnection(jdbcUrl,dbId,dbPass);
        out.println("제대로 연결 되었습니다.");
    }catch(Exception e){
        e.printStackTrace();
    }
%>
</body>
</html>




<Oracle>


Record : 행


Primary Key  :  레코드 식별값 - 레코드에 접속하기 위해서


Index : Primary Key는 생성시 기본적으로 생김



create tabel 테이블명 ( )


insert into 테이블명 value ('칼럼1값','칼럼2값',....)


select [칼럼명1],[칼럼명2] from 테이블명 where 조건1 and 조건2


update 테이블명 set NAME="최범균" where 조건


delete from 테이블명 where 조건


Oracle











Statement (PreparedStatement가 표준 statement는 insert 같은 경우에 오류가있슴 사용하면안됨)



Statement 의 PreparedStatement 차이점 


1. *Statement  : 객체가 생성될때 SQL을 넘기는게 아니라 메소드에서 SQL을 넘겨줌

        //JDBC 수행3단계 : Statement 객체생성

        stmt=conn.createStatement();

        

        //JDBC 수행4단계 : SQL문 실행

        //JDBC 수행5단계 : SQL문 실행으로 얻어진 모든 레코드를 담은 ResultSet 객체생성

        rs=stmt.executeQuery(sql);


    *PreparedStatement : 객체가 생성될때 SQL 문장을 넘겨줌

        //JDBC 수행3단계 : PrepareStatement 객체생성

        pstmt=conn.prepareStatement(sql);

        //JDBC 수행4단계 : SQL문 실행

        //JDBC 수행5단계 : SQL문 실행으로 얻어진 모든 레코드를 담은 ResultSet 객체생성

        rs=pstmt.executeQuery();


2. PreparedStatement  가 속도도 더빠르다.

3. Statement  가 코드는 짧아보인다. 허나 웹서비스 or 속도 면에서 사용하면 안된다. 





PreparedStatement
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!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>테이블의 레코드를 화면에 표시하는 예제</title>
</head>
<body>
<h2>member1 테이블의 레코드를 화면에 표시하는 예제</h2>
<table width="550" border="1">

<tr>
	<td width="100">아이디</td>
	<td width="100">패스워드</td>
	<td width="100">이름</td>
	<td width="100">가입일자</td>
</tr>
<%
	Connection conn = null;
	PreparedStatement pstmt=null;
	ResultSet rs = null;
	
	try{
		String jdbcUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
		String dbId="hr";
		String dbPass="hr";
		
		//JDBC 수행 1 단계 : jdbc driver 로드
		Class.forName("oracle.jdbc.driver.OracleDriver");
		//JDBC 수행 2단계: Connection 객체 생성
		conn=DriverManager.getConnection(jdbcUrl,dbId,dbPass);
		
		String sql ="select * from member1";
		//JDBC 수행 3단계 : PreparedStatement 객체 생성
		pstmt=conn.prepareStatement(sql);
		//JDBC 수행 4단계 : sql문 실행
		//JDBC 수행 5단계 : sql문의 실행으로 얻어진 레코드를 담는 ResultSet 객체 생성
		//ResultSet은 커서의 개념이 있어서 next()메소드 사용시 데이터가 있는곳까지만 데이터 뽑아냄
		rs=pstmt.executeQuery();
		
		
		while(rs.next()){
			String id = rs.getString("id");
			String passwd = rs.getString("passwd");
			String name = rs.getString("name");
			Timestamp register = rs.getTimestamp("register");
%>
	<tr>
		<td width="100"><%=id %></td>
		<td width="100"><%=passwd %></td>
		<td width="100"><%=name %></td>
		<td width="100"><%=register.toString() %></td>
	</tr>
<%  }
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		if(rs != null)
			try{rs.close();}catch(SQLException sqle){}
		if(pstmt != null)
			try{rs.close();}catch(SQLException sqle){}
		if(conn != null)
			try{rs.close();}catch(SQLException sqle){}
	}
%>
</table>
</body>
</html>
Statement
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!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>테이블의 레코드를 화면에 표시하는 예제</title>
</head>
<body>
<h2>member1 테이블의 레코드를 화면에 표시하는 예제</h2>
<table width="550" border="1">

<tr>
	<td width="100">아이디</td>
	<td width="100">패스워드</td>
	<td width="100">이름</td>
	<td width="100">가입일자</td>
</tr>
<%
	//PreparedStatement -> Statement 차이점
	Connection conn = null;
	Statement stmt=null;
	//PreparedStatement pstmt=null;
	ResultSet rs = null;
	
	try{
		String jdbcUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
		String dbId="hr";
		String dbPass="hr";
		
		//JDBC 수행 1 단계 : jdbc driver 로드
		Class.forName("oracle.jdbc.driver.OracleDriver");
		//JDBC 수행 2단계: Connection 객체 생성
		conn=DriverManager.getConnection(jdbcUrl,dbId,dbPass);
		
		String sql ="select * from member1";
		//JDBC 수행 3단계 : Statement 객체 생성
		//pstmt=conn.prepareStatement(sql);
		stmt = conn.createStatement();
		
		//JDBC 수행 4단계 : sql문 실행
		//JDBC 수행 5단계 : sql문의 실행으로 얻어진 레코드를 담는 ResultSet 객체 생성
		//ResultSet은 커서의 개념이 있어서 next()메소드 사용시 데이터가 있는곳까지만 데이터 뽑아냄
		//rs=pstmt.executeQuery();
		rs=stmt.executeQuery(sql);
		
		//차이점은 sql문장 실행시킬때 sql을 넘김
		
		while(rs.next()){
			String id = rs.getString("id");
			String passwd = rs.getString("passwd");
			String name = rs.getString("name");
			Timestamp register = rs.getTimestamp("register");
%>
	<tr>
		<td width="100"><%=id %></td>
		<td width="100"><%=passwd %></td>
		<td width="100"><%=name %></td>
		<td width="100"><%=register.toString() %></td>
	</tr>
<%  }
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		if(rs != null)
			try{rs.close();}catch(SQLException sqle){}
		if(stmt != null)
			try{rs.close();}catch(SQLException sqle){}
		if(conn != null)
			try{rs.close();}catch(SQLException sqle){}
	}
%>
</table>
</body>
</html> 

PreparedStatement  가 더 나은 방법이라 함

더 나은 방법이란것을 뒷받침 하기 위한 예제 





INSERT


PreparedStatement

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
	request.setCharacterEncoding("utf-8");

	//전송된 데이터 처리
	String id= request.getParameter("id");
	String passwd= request.getParameter("passwd");
	String name= request.getParameter("name");
	//전송되지 않은 데이터를 jsp에서 생성함(날짜/시간)
	Timestamp register= new Timestamp(System.currentTimeMillis());
	
	Connection conn = null;
	PreparedStatement pstmt = null;
	
	try{
		String jdbcUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
		String dbId="hr";
		String dbPass="hr";
		
		//JDBC 수행 1단계 : jdbc driver 로드
		Class.forName("oracle.jdbc.driver.OracleDriver");
		//JDBC 수행 2 단계 : Connection 객체 생성
		conn =DriverManager.getConnection(jdbcUrl,dbId,dbPass);
		
		//sql 수행문 테이블명 뒤에 부분적으로 수정할경우에는 컬럼명을 입력해야됨
		//member1 (id,passwd,name,register) 모든 데이터를 추가할경우는 생략가능
		String sql = "insert into member1 values(?,?,?,?)";
		//JDBC 수행 3단계 : PreparedStatement 객체 생성
		//위에 sql문장을 저장시키고 각물음표에 매칭시키기
		pstmt = conn.prepareStatement(sql);
		pstmt.setString(1,id);
		pstmt.setString(2,passwd);
		pstmt.setString(3,name);
		pstmt.setTimestamp(4,register);
		//JDBC 수행 4단계 : SQL 문 실행
		pstmt.executeUpdate();
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		//자원 정리
		if(pstmt != null)
			try{pstmt.close();}catch(SQLException sqle){}
		if(conn != null)
			try{pstmt.close();}catch(SQLException sqle){}
	}
	
%>


<!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>레코드 삽입 (추가) 예제</title>
</head>
<body>
member 1 테이블에 새로운 레코드를 삽입(추가) 했습니다.
</body>
</html>

Statement

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
	request.setCharacterEncoding("utf-8");

	//전송된 데이터 처리
	String id= request.getParameter("id");
	String passwd= request.getParameter("passwd");
	String name= request.getParameter("name");
	//전송되지 않은 데이터를 jsp에서 생성함(날짜/시간)
	Timestamp register= new Timestamp(System.currentTimeMillis());
	
	Connection conn = null;
	Statement stmt = null;
	
	try{
		String jdbcUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
		String dbId="hr";
		String dbPass="hr";
		
		//JDBC 수행 1단계 : jdbc driver 로드
		Class.forName("oracle.jdbc.driver.OracleDriver");
		//JDBC 수행 2 단계 : Connection 객체 생성
		conn =DriverManager.getConnection(jdbcUrl,dbId,dbPass);
		
		//sql 수행문 테이블명 뒤에 부분적으로 수정할경우에는 컬럼명을 입력해야됨
		//member1 (id,passwd,name,register) 모든 데이터를 추가할경우는 생략가능
		//직접 매칭시킴
		String sql = "insert into member1 values('"+id+"','"+passwd+"','"+name+"',sysdate)";
		//JDBC 수행 3단계 : Statement 객체 생성
		stmt = conn.createStatement();
		//JDBC 수행 4단계 : SQL 문 실행
		stmt.executeUpdate(sql);
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		//자원 정리
		if(stmt != null)
			try{stmt.close();}catch(SQLException sqle){}
		if(conn != null)
			try{stmt.close();}catch(SQLException sqle){}
	}
	
%>


<!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>레코드 삽입 (추가) 예제</title>
</head>
<body>
member 1 테이블에 새로운 레코드를 삽입(추가) 했습니다.
</body>
</html>

Statement가 코드량이 적은건 사실이지만

기능적인 문제가 있는것도 사실이다 


Statement보단 PreparedStatement를 사용하는것이 낫지 않을까? 










Statement 사용시 ' 사용시 에러가 났음






'' 두개 사용시 '하나만 표시가 됨


 

어느 사용자가 '를 사용하기 위해''를 두번 넣는 수고를 할까?

PreparedStatement 실행






잘들어감...




Java Resource -> 패키지 -> 클래스


 

자바빈 자동으로 은닉화 시키는 방법

(정의만 내려주고 아래와 같이 하면됨)



쉽게 은닉화 캡슐화 시키는 방법


 


생성됨




선택후 ok




자바빈 생성확인 메소드 자동 생성 방법



자바빈이용 로그인

(오리지날 자바클래스)



src/chap11.member/MemberInfo.java
package chap11.member;

import java.util.Date;

public class MemberInfo {

    private String id, password, name, address, email;
    private Date registerDate;
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Date getRegisterDate() {
        return registerDate;
    }
    public void setRegisterDate(Date registerDate) {
        this.registerDate = registerDate;
    }

       @Override
    public String toString() {
        return "MemberInfo [id=" + id + ", password=" + password + ", name="
                + name + ", address=" + address + ", email=" + email
                + ", registerDate=" + registerDate + "]";
    }
}

WebContent/membershipForm.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>회원 가입 입력폼</title>
</head>
<body>
<form action="<%= request.getContextPath() %>/processJoing.jsp" method="post">

<table border ="1" cellpadding="0" cellspacing="0" align="center"> 
<tr>
    <td colspan="4" align="center">회원가입</td> 
</tr>
<tr>
    <td> 아이디 </td>
    <td> <input type="text" name="id" size="10"></td>
    <td> 비밀번호 </td>
    <td> <input type="text" name="password" size="10"></td>
</tr>
<tr>
    <td> 이름  </td>
    <td> <input type="text" name="name" size="10"></td>
    <td> 이메일 </td>    
    <td> <input type="text" name="email" size="10"></td>
</tr>
<tr>
    <td> 주소 </td>
    <td colspan="3"><input type="text" name="address" size="30"></td>
</tr>
<tr>
    <td colspan="4" align="center">
    <input type="submit" value="회원가입">
    </td>
</tr>
</table>
</form>
</body>
</html>



첫번째 방법 : import후 명시적으로 객체생성 해서 request를이용하여 데이터를 빼옴,

                  servlet에서는 이방법

processJoining.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="chap11.member.MemberInfo" %>
<%
    request.setCharacterEncoding("utf-8");

    //자바빈 객체 생성 
    //전문적으로 데이터가 보관대는 객체
    MemberInfo member = new MemberInfo();
    member.setId(request.getParameter("id"));
    member.setPassword(request.getParameter("password"));
    member.setName(request.getParameter("name"));
    member.setEmail(request.getParameter("email"));
    member.setAddress(request.getParameter("address"));

     //자바빈 객체 생성된 후 데이터가 정상적으로 저장되었는지 
    //코솔환경에서 확인한기 위해 
    System.out.println(member);

%>
<!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>자바빈 연습</title>
</head>
<body>
아이디 :<%=member.getId() %><br/>
비밀번호 :<%=member.getPassword() %><br/>
이름 :<%=member.getName() %><br/>
이메일 :<%=member.getEmail() %><br/>
주소 :<%=member.getAddress() %><br/>
</body>
</html>


두번째 방법: <jsp:useBean>을 이용한 객체 생성 <jsp:setProperty>와

 <jsp:geyProperty>를 이용. 자바빈에서는 이방법

processJoining.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    //한글처리
    request.setCharacterEncoding("utf-8");
    String id= request.getParameter("id");
    String password= request.getParameter("password");
    String name= request.getParameter("name");
    String email= request.getParameter("email");
    String address= request.getParameter("address");
%>
<jsp:useBean id="member" class="chap11.member.MemberInfo"></jsp:useBean>
<jsp:setProperty name="member" property="id" value="<%=id%>"/>
<jsp:setProperty name="member" property="password" value="<%=password%>"/>
<jsp:setProperty name="member" property="name" value="<%=name%>"/>
<jsp:setProperty name="member" property="email" value="<%=email%>"/>
<jsp:setProperty name="member" property="address" value="<%=address%>"/>

<!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>자바빈 연습2 - jsp:useBean 을 이용한 객체 생성하기</title>
</head>
<body>
아이디 : <jsp:getProperty name="member" property="id" /><br/>
비밀번호 : <jsp:getProperty name="member" property="password" /><br/>
이름 : <jsp:getProperty name="member" property="name" /><br/>
이메일 : <jsp:getProperty name="member" property="email" /><br/>
주소 : <jsp:getProperty name="member" property="address" /><br/>

</body>
</html>




setProperty 코드 줄이기 

-자바빈에 있는 멤버변수와 폼에 있는 name을 일치 시키면 간략하게 코드 사용 가능



변경 전
<pre class="brush:java"><%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String id = request.getParameter("id");
	String password = request.getParameter("password");
	String name = request.getParameter("name");
	String email = request.getParameter("email");
	String address = request.getParameter("address");
%>
<!-- usebean으로 객체 생성 -->
<jsp:useBean id="member" class="chap11.member.MemberInfo"></jsp:useBean>
<!-- 데이터 셋팅 -->
<jsp:setProperty name="member" property="id" value="<%=id %>"/>
<jsp:setProperty name="member" property="password" value="<%=password %>"/>
<jsp:setProperty name="member" property="name" value="<%=name %>"/>
<jsp:setProperty name="member" property="email" value="<%=email %>"/>
<jsp:setProperty name="member" property="address" value="<%=address %>"/>

<!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>자바빈 연습</title>
</head>
<body>
<!-- get Property로 값 가져오기 -->
아이디 : <jsp:getProperty name="member" property="id" /><br>
암호 : <jsp:getProperty name="member" property="password" /><br>
이름 : <jsp:getProperty name="member" property="name" /><br>
이메일 : <jsp:getProperty name="member" property="email" /><br>
주소 : <jsp:getProperty name="member" property="address" /><br>
</body>
</html></pre>


↓↓↓↓↓↓↓↓↓↓↓↓↓

변경 후
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    //한글처리
    request.setCharacterEncoding("utf-8");
%>
<!-- class="풀네임" import가 안먹기때문에 전체주소를 적어줘야 한다.  -->
<jsp:useBean id="member" class="chap11.member.MemberInfo"></jsp:useBean>

<!-- 
1.value="" 부분은 
request로 들어가서 프로퍼티 명과 파라미터네임과 같은것이 있는경우 그 데이터를 자바빈에 셋팅 
명시적으로 세팅을 할필요가없어졌다.

2.property="*" 
한줄로 줄일수있다 getProperty에서 프로퍼티명과 파라미터네임이 같은걸 가져옴

* 자바빈에 private 값설정과, 파라미터명, 프로퍼티명을  똑같게 써야 가능
-->
<jsp:setProperty name="member" property="*"/>

<!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>자바빈 연습2 - jsp:useBean 을 이용한 객체 생성하기</title>
</head>
<body>
아이디 : <jsp:getProperty name="member" property="id" /><br/>
비밀번호 : <jsp:getProperty name="member" property="password" /><br/>
이름 : <jsp:getProperty name="member" property="name" /><br/>
이메일 : <jsp:getProperty name="member" property="email" /><br/>
주소 : <jsp:getProperty name="member" property="address" /><br/>
</body>
</html>





'JSP > 기본(Oracle)' 카테고리의 다른 글

JSP DB연동 Oracle sqldeveloper setting  (0) 2012.06.20
PreparedStatement Statement 의 차이점(SELECT),(INSERT)  (0) 2012.06.20
회원가입 입력 폼  (0) 2012.05.31
Jsp를 이용한 달력  (0) 2012.05.31
JSP 세션 Session  (0) 2012.05.31
membershipForm.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><title>회원가입 입력 폼</title></head>
<body>

<form action="<%= request.getContextPath() %>/processJoining.jsp" 
                                              method="post">

<table border="1" cellpadding="0" cellspacing="0">
<tr>
	<td>아이디</td>
	<td><input type="text" name="id" size="10"></td>
	<td>비밀번호</td>
	<td><input type="text" name="password" size="10"></td>
</tr>
<tr>
	<td>이름</td>
	<td><input type="text" name="name" size="10"></td>
	<td>이메일</td>
	<td><input type="text" name="email" size="10"></td>
</tr>
<tr>
	<td>주소</td>
	<td colspan="3"><input type="text" name="address" 
	                                          size="30"></td>
</tr>
<tr>
	<td colspan="4" align="center">
	<input type="submit" value="회원가입">
	</td>
</tr>
</table>
</form>
</body>
</html>
processJoining.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="chap11.member.MemberInfo" %>    
<%
	request.setCharacterEncoding("utf-8");

    //자바빈 객체 생성
    MemberInfo member = new MemberInfo();
    member.setId(request.getParameter("id"));
    member.setPassword(request.getParameter("password"));
    member.setName(request.getParameter("name"));
    member.setEmail(request.getParameter("email"));
    member.setAddress(request.getParameter("address"));
    
    //자바빈 객체 생성된 후 데이터가 정상적으로 저장되었는지
    //콘솔환경에서 확인하기 위해
    System.out.println(member);
    
%>    
<!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>자바빈 연습</title>
</head>
<body>
아이디 : <%=member.getId() %><br>
암호 : <%=member.getPassword() %><br>
이름 : <%=member.getName() %><br>
이메일 : <%=member.getEmail() %><br>
주소 : <%=member.getAddress() %>
</body>
</html>






chap11.war


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp를 이용한 달력</title>
</head>
<body>
<%
Calendar cr = Calendar.getInstance();
int year = cr.get(Calendar.YEAR);
int month = cr.get(Calendar.MONTH);
int date = cr.get(Calendar.DATE);
String today = year + ":" +(month+1)+ ":"+date; // 오늘 날짜
// 1일부터 시작하는 달력을 만들기 위해 오늘의 연도,월을 셋팅하고 일부분은 1을 셋팅한다.
cr.set(year, month, 1);

// 셋팅한 날짜로 부터 아래 내용을 구함

// 해당 월의 첫날를 구함
int startDate = cr.getMinimum(Calendar.DATE);

// 해당 월의 마지막 날을 구함
int endDate = cr.getActualMaximum(Calendar.DATE);

// 1일의 요일을 구함
int startDay = cr.get(Calendar.DAY_OF_WEEK);
int count = 0;
%>
<table width="400" cellpadding="2" cellspacing="0" border="1" align="center">
 <tr height="30">
  <td><font size="2">일</font></td>
  <td><font size="2">월</font></td>
  <td><font size="2">화</font></td>
  <td><font size="2">수</font></td>
  <td><font size="2">목</font></td>
  <td><font size="2">금</font></td>
  <td><font size="2">토</font></td>
 </tr>
 <tr height="30">
<%
for (int i=1;i<startDay;i++){
 count++;
%>
        <td>&nbsp;</td>
<% 
}
for (int i=startDate;i<=endDate;i++){
 String bgcolor = (today.equals(year+":"+(month+1)+":"+i))? "#CCCCCC" : "#FFFFFF";
 String color = (count%7 == 0 || count%7 == 6)? "red" : "black";
 count++;
%> 
  <td bgcolor="<%=bgcolor %>"><font size="2" color=<%=color %>><%=i %></font></td>
<%
  if(count%7 == 0 && i < endDate){
%> 
 </tr>
 <tr height="30">
<%
  }
}
while(count%7 != 0){
%>
       <td>&nbsp;</td>
<% 
count++;
 }
%>
</tr>  
</table>
</body>
</html> 



이 방법은 많이 사용되는 방법은 아니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page session = "true" %>
<%@ page import = "java.util.Date" %>
<%@ page import = "java.text.SimpleDateFormat" %>
<%
	Date time = new Date();
	SimpleDateFormat formatter = 
	    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>세션정보</title></head>
<body>
세션ID: <%= session.getId() %> <br>
<%
	time.setTime(session.getCreationTime());
%>
세션생성시간: <%= formatter.format(time) %> <br>
세션생성시간 : <%=session.getCreationTime() %><br>
<%
	time.setTime(session.getLastAccessedTime());
%>
최근접근시간: <%= formatter.format(time) %><br>
최근접근시간: <%=session.getLastAccessedTime() %>

</body>
</html>





sessionLogin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String id = request.getParameter("id");
	String password = request.getParameter("password");
	
	if (id.equals(password)) {
		session.setAttribute("MEMBERID", id);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>로그인성공</title></head>
<body>

로그인에 성공했습니다.

</body>
</html>
<%
	} else { // 로그인 실패시
%>
<script>
alert("로그인에 실패하였습니다.");
history.go(-1);
</script>
<%
	}
%>


sessionLoginCheck.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
    String memberId = 
                    (String)session.getAttribute("MEMBERID");
    boolean login = memberId == null ? false : true;
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>로그인여부 검사</title></head>
<body>

<%
    if (login) {
%>
아이디 "<%= memberId %>"로 로그인 한 상태
<%
    } else {
%>
로그인하지 않은 상태
<%
    }
%>
</body>
</html>


sessionLoginForm.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><title>로그인폼</title></head>
<body>

<form action="<%= request.getContextPath() %>/member/sessionLogin.jsp"
      method="post">
아이디 <input type="text" name="id" size="10">
암호 <input type="password" name="password" size="10">
<input type="submit" value="로그인">
</form>

</body>
</html>


sessionLoginout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    session.invalidate();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>로그아웃</title></head>
<body>

로그아웃하였습니다.

</body>
</html>

아디디와 비번을 같이하면 성공~~



'JSP > 기본(Oracle)' 카테고리의 다른 글

회원가입 입력 폼  (0) 2012.05.31
Jsp를 이용한 달력  (0) 2012.05.31
JSP 쿠키 생성,보기,삭제,수정  (0) 2012.05.31
JSP 에러페이지 만들기 (404 ,500 에러~)  (0) 2012.05.30
JSP 페이지 이동  (0) 2012.05.30
makeCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.net.URLEncoder" %>
<%
   //쿠키 생성
	Cookie cookie = new Cookie("name", 
			           URLEncoder.encode("최범균","utf-8"));
    //쿠키 유효시간 지정
    //쿠키 유효시간을 지정하지 않으면 정보를 메모리에 저장하고
    //쿠키 유효시간을 지정하면 정보를 파일에 저장
    //cookie.setMaxAge(-1) : 정보를 메모리에 저장
    //cookie.setMaxAge(0) : 쿠키 유효시간 만료
    cookie.setMaxAge(30*60); 
    //생성된 쿠키를 클라이언트에 전송
	response.addCookie(cookie);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>쿠키생성</title></head>
<body>

<%= cookie.getName() %> 쿠키의 값 = "<%= cookie.getValue() %>"

</body>
</html>




쿠키 보기




<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.net.URLDecoder" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>쿠키 목록</title></head>
<body>
쿠키 목록<br>
<%
   //클라이언트가 서버에 제공한 쿠키 정보를 Cookie[]로 반환
	Cookie[] cookies = request.getCookies();
	if (cookies != null && cookies.length > 0) {
		for (int i = 0 ; i < cookies.length ; i++) {
%>
	<%= cookies[i].getName() %> = 
	<%= URLDecoder.decode(cookies[i].getValue(), "utf-8") %>
	<br>
<%
		}
	} else {
%>
쿠키가 존재하지 않습니다.
<%
	}
%>
</body>
</html>


'JSP > 기본(Oracle)' 카테고리의 다른 글

Jsp를 이용한 달력  (0) 2012.05.31
JSP 세션 Session  (0) 2012.05.31
JSP 에러페이지 만들기 (404 ,500 에러~)  (0) 2012.05.30
JSP 페이지 이동  (0) 2012.05.30
JSP include  (0) 2012.05.30


viewErrorMessage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage = "true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>예외 발생</title></head>
<body>

요청 처리 과정에서 예외가 발생하였습니다.<br>
빠른 시간 내에 문제를 해결하도록 하겠습니다.
<p>
에러 타입: <%= exception.getClass().getName() %> <br>
에러 메시지: <b><%= exception.getMessage() %></b>
</body>
</html>
<!--
만약 에러 페이지의 길이가 513 바이트보다 작다면,
인터넷 익스플로러는 이 페이지가 출력하는 에러 페이지를 출력하지 않고
자체적으로 제공하는 'HTTP 오류 메시지' 화면을 출력할 것이다.
만약 에러 페이지의 길이가 513 바이트보다 작은데
에러 페이지의 내용이 인터넷 익스플로러에서도 올바르게 출력되길 원한다면,
응답 결과에 이 주석과 같은 내용을 포함시켜서
에러 페이지의 길이가 513 바이트 이상이 되도록 해 주어야 한다.
참고로 이 주석은 456바이트이다.
-->


readParameter.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page errorPage = "/error/viewErrorMessage.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>파라미터 출력</title></head>
<body>

name 파라미터 값: 
            <%= request.getParameter("name").toUpperCase() %>

</body>
</html>






readParameter2.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><title>파라미터 출력</title></head>
<body>

name 파라미터 값: 
            <%= request.getParameter("name").toUpperCase() %>

</body>
</html>


error404.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><title>404 에러 발생</title></head>
<body>
<strong>요청한 페이지는 존재하지 않습니다:</strong>
<br><br>
주소를 올바르게 입력했는 지 확인해보시기 바랍니다.
</body>
</html>
<!--
만약 에러 페이지의 길이가 513 바이트보다 작다면,
인터넷 익스플로러는 이 페이지가 출력하는 에러 페이지를 출력하지 않고
자체적으로 제공하는 'HTTP 오류 메시지' 화면을 출력할 것이다.
만약 에러 페이지의 길이가 513 바이트보다 작은데
에러 페이지의 내용이 인터넷 익스플로러에서도 올바르게 출력되길 원한다면,
응답 결과에 이 주석과 같은 내용을 포함시켜서
에러 페이지의 길이가 513 바이트 이상이 되도록 해 주어야 한다.
참고로 이 주석은 456바이트이다.
-->


error505.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><title>500 에러 발생</title></head>
<body>
<strong>에러가 발생했습니다.:</strong>
<br><br>
페이지에 에러가 있습니다. 
</body>
</html>
<!--
만약 에러 페이지의 길이가 513 바이트보다 작다면,
인터넷 익스플로러는 이 페이지가 출력하는 에러 페이지를 출력하지 않고
자체적으로 제공하는 'HTTP 오류 메시지' 화면을 출력할 것이다.
만약 에러 페이지의 길이가 513 바이트보다 작은데
에러 페이지의 내용이 인터넷 익스플로러에서도 올바르게 출력되길 원한다면,
응답 결과에 이 주석과 같은 내용을 포함시켜서
에러 페이지의 길이가 513 바이트 이상이 되도록 해 주어야 한다.
참고로 이 주석은 456바이트이다.
-->


errorNullPointer.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><title>NULL 에러 발생</title></head>
<body>

<strong>서비스 처리 과정에서 널(NULL) 예외가 발생하였습니다.</strong>

</body>
</html>
<!--
만약 에러 페이지의 길이가 513 바이트보다 작다면,
인터넷 익스플로러는 이 페이지가 출력하는 에러 페이지를 출력하지 않고
자체적으로 제공하는 'HTTP 오류 메시지' 화면을 출력할 것이다.
만약 에러 페이지의 길이가 513 바이트보다 작은데
에러 페이지의 내용이 인터넷 익스플로러에서도 올바르게 출력되길 원한다면,
응답 결과에 이 주석과 같은 내용을 포함시켜서
에러 페이지의 길이가 513 바이트 이상이 되도록 해 주어야 한다.
참고로 이 주석은 456바이트이다.
-->


web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>chap08</display-name>
  
  <!-- HTTP Status Code -->
  <error-page>
  	<error-code>404</error-code>
  	<location>/error/error404.jsp</location>
  </error-page>
  
  <error-page>
  	<error-code>500</error-code>
  	<location>/error/error500.jsp</location>
  </error-page>
  
  <!-- Exception Type -->
  <error-page>
  	<exception-type>java.lang.NullPointerException</exception-type>
    <location>/error/errorNullPointer.jsp</location>
  </error-page>
    
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>








'JSP > 기본(Oracle)' 카테고리의 다른 글

JSP 세션 Session  (0) 2012.05.31
JSP 쿠키 생성,보기,삭제,수정  (0) 2012.05.31
JSP 페이지 이동  (0) 2012.05.30
JSP include  (0) 2012.05.30
<jsp:include> 액션 태그를 사용하여 페이지 모듈화  (0) 2012.05.30
select.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>옵션 선택 화면</title>
</head>
<body>
<form action="<%= request.getContextPath() %>/view.jsp">
보고 싶은 페이지 선택:
<select name="code">
	<option value="A">A 페이지</option>
	<option value="B">B 페이지</option>
	<option value="C">C 페이지</option>
</select>
<input type="submit" value="이동">
</form>
</body>
</html>


view.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String code = request.getParameter("code");
	String viewPageURI = null;
	
	if (code.equals("A")) {
		viewPageURI = "/viewModule/a.jsp";
	} else if (code.equals("B")) {
		viewPageURI = "/viewModule/b.jsp";
	} else if (code.equals("C")) {
		viewPageURI = "/viewModule/c.jsp";
	}
%>
<jsp:forward page="<%= viewPageURI %>">
	<jsp:param name="id" value="dragon" />
</jsp:forward>






a.jsp , b.jsp , c.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
    String code = request.getParameter("code");
    String id = request.getParameter("id");
    %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title><%=code %> 페이지</title></head>
<body>

이 페이지는 <b><font size="5"><%=code %></font></b> 입니다.<br>
id 는 <%=id %> 입니다.

</body>
</html>



info.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>INFO</title>
</head>
<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>제품 번호</td><td>XXXX</td>
</tr>
<tr>
<td>가격</td><td>10,000원</td>
</tr>
</table>

<jsp:include page="infoSub.jsp" flush="false">
	<jsp:param name="type" value="A" />
</jsp:include>
</body>
</html>


infoSub.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
    String type= request.getParameter("type");
    if(type != null){
    %>
<br>
<table width="100%" border="1" cellpadding="0" cellspacing="0" >
<tr>
	<td>타입</td>
	<td><b><%= type %></b></td>
	<tr>
	<td>특징</td>
	<td>
	<% if(type.equals("A")){ %>
	강한 내구성.
	<% } else if(type.equals("B")){ %>
	뛰어난 대처 능력
	<%} %>
	</td>
	</tr>
</table>
<% } %>





module.zip

다운 -> 압축해제 -> webContent 에 붙여넣기

<%@ 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>layout1</title>
</head>
<body>
	<table width="400" border="1" cellpadding="0" cellspacing="0">
		<tr>
			<td colspan="2">
				<jsp:include page="/module/top.jsp" flush="false" />
			</td>
		</tr>
		<tr>
			<td width="100" valign="top">
				<jsp:include page="/module/left.jsp" flush="false" />
			</td>
		<td width="300" valign="top">
		<!-- 내용 부분 : 시작 -->
		레이아웃 1
		<br/><br/><br/>
		<!--  내용 부분 : 끝 -->
		</td>
		</tr>
		<tr>
		<td colspan="2">
			<jsp:include page="/module/bottom.jsp" flush="false" />
		</td>
	</table>
</body>
</html>




압축되어있는 파일들은 HTML태그가 없다

layout.jsp에 들어가기 때문에 HTML태그가 필요 없음


'JSP > 기본(Oracle)' 카테고리의 다른 글

JSP 페이지 이동  (0) 2012.05.30
JSP include  (0) 2012.05.30
JSP 기본 객체와 영역  (0) 2012.05.30
JSP 기본 객체 사용하여 자원 읽기  (0) 2012.05.30
Servlet Context  (0) 2012.05.30
Page,Request,Session




a.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>JSP 4개 영역 및 기본객체 사용</title>
</head>
<body>
<%
	pageContext.setAttribute("season","봄");
	String season = (String)pageContext.getAttribute("season");
	
	request.setAttribute("season1", "여름");
	String season1 = (String)request.getAttribute("season1");
	
	session.setAttribute("season2", "가을");
	String season2 = (String)session.getAttribute("season2");
%>
page영역 : <%=season %><br/>
Request영역 : <%=season1 %><br/>
session영역 : <%=season2 %>
</body>
</html>


b.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>JSP 4개 영역 및 기본객체 사용</title>
</head>
<body>
<%
String season = (String)pageContext.getAttribute("season");
String season1 = (String)request.getAttribute("season1");
String season2 = (String)session.getAttribute("season2");
%>
page영역 : <%=season %><br/>
request영역 : <%=season1 %><br/>
session영역 : <%=season2 %>
</body>
</html>






Application




setApplicationAttribute.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
    	String name = "id";
    	String value = "dragon";
    	
    	application.setAttribute(name, value);
    %>
<!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>application 속성 지정</title>
</head>
<body>
application 기본 객체의 속성 설정 :
<%=name %> = <%= value %>
</body>
</html>


viewApplicationAttribute.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.util.Enumeration" %>
<!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>application 기본 객체 속성 보기</title>
</head>
<body>
<%
	Enumeration attrEnum = application.getAttributeNames();
while(attrEnum.hasMoreElements()){
	String name = (String)attrEnum.nextElement();
	Object value = application.getAttribute(name);
%>
application 속성 : <b><%=name %></b> = <%=value %><br/>
<%} %>
</body>
</html>





Application 사용시 주의사항

데이터 보관시 동기화 문제가 생김

Client를 구분하지 못하므로

Application은 다 공유할 수 있는 정보를 저장시키는데 사용함

자신이 저장한 데이터를 다른 클라이언트가 가져갈 수 있음 











WebContent -> message -> notice -> notice.txt





<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.io.*"%>
<!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>Application 기본 객체 사용하여 자원 읽기</title>
</head>
<body>
	<%
		String resourcePath = "/message/notice/notice.txt";
	%>
	자원의 실제 경로:
	<br />
	<%=application.getRealPath(resourcePath)%>
	<br> ****************************
	<br>
	<%=resourcePath%>의 내용
	<br /> ****************************
	<br>
	<%
		BufferedReader br = null;
		char[] buff = new char[512];
		int len = -1;

		try {
			br = new BufferedReader(new InputStreamReader(
					application.getResourceAsStream(resourcePath)));
			while ((len = br.read(buff)) != -1) {
				out.print(new String(buff, 0, len));
			}
		} catch (IOException ex) {
			out.println("예외 발생 : " + ex.getMessage());
		} finally {
			if (br != null)
				try {
					br.close();
				} catch (IOException ex) {
				}
		}
	%>
</body>
</html>



'JSP > 기본(Oracle)' 카테고리의 다른 글

<jsp:include> 액션 태그를 사용하여 페이지 모듈화  (0) 2012.05.30
JSP 기본 객체와 영역  (0) 2012.05.30
Servlet Context  (0) 2012.05.30
JSP 서버정보 출력, 로그 메세지 기록  (0) 2012.05.30
배포 구조  (0) 2012.05.30

+ Recent posts