'분류 전체보기'에 해당되는 글 95건

  1. 2012.11.23 Ubuntu server 실습 과제.
  2. 2012.10.05 JSP 수업 DB부분
  3. 2012.09.26 DB정리!!!
  4. 2012.09.25 JSP 수업.
  5. 2012.09.13 네번째 수업.
  6. 2012.09.11 jsp 세번째수업
  7. 2012.09.07 두번째 수업 (추가정리).
  8. 2012.09.07 두번째 수업.
  9. 2012.09.04 톰캣 ant 설치
  10. 2012.09.04 리눅스 명령어
posted by changhozz 2012. 11. 23. 16:09

 

리눅스의 계정 정보를 가지고 있는 파일.
화면이 짤려서 밑에 명령어를 다시 입력했다.
즉, cat  /etc/passwd 를 입력하게 되면 위에 내용이 뜬다.

 

그룹 목록을 가지고 있는 파일

 

test란 User 추가

 

addUser 결과.

 

 

test User 삭제하기.

 

 delete 결과.

 test란 Group 추가하기.

 test란 Group 삭제하기

 

파일 사용 권한들 .

 

 

test 폴더에 퍼미션 변경.

'(공개)세미나 과제' 카테고리의 다른 글

쉘 실습 과제.  (0) 2012.11.23
posted by changhozz 2012. 10. 5. 20:25

JSP에서 JDBC 프로그래밍하기.

JDBC( Java DataBase Connectivity)는 자바에서 데이터베이스와 관련된
작업을 처리할 수 있도록 도와주는 API이다.

JDBC의 구조는

자바어플리케이션    ㅡ> JDBC API  ㅡ> JDBC드라이버  ㅡ> 데이터베이스 
(우린 JSP일테고)

이런식이다.

각각의 DBMS는 자신에게 알맞은 JDBC 드라이버(클래스 형태로 존재하면 일반적으로 Jar파일로 제공됨)를 제공하고 있으며, JDBC API는 JDBC 드라이버를 거쳐 데이터베이스와 통신을 한다.

나같은 경우는 mysql-connector-java-5.1.22.zip파일을 받았는데
압축을 풀게되면 mysql-connector-java-5.1.22-bin.jar 파일이 있다.
이 jar파일을 원하는프로젝트/WEB-INF/lib 디렉터리에 복붙하면된다.

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

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

JDBC 프로그램의 일바너인 실행 순서 ㅡ>

1.JDBC 드라이버로딩
2.데이터페이스 커넥션 구함
3.쿼리 실행을 위한 Statement 객체 생성
4.쿼리 실행
5.쿼리 실행 결과 사용
6 Statement 종료
7.데이터베이스 커넥션 종료

 

 

// 1. JDBC 드라이버 로딩

Class.forName("com.mysql.jdbc.Driver");

Connection conn = null; Statement stmt = null; ResultSet rs = null;

    try {

        // 2. 데이터베이스 커넥션 생성

     conn = DriverManager.getConnection(""jdbc:mysql://localhost:3306/chap12", "user", "pass");

        // 3. Statement 생성

        stmt = conn.createStatement();

        // 4. 쿼리 실행

        rs = stmt.executeQuery("select * from MEMBER order by MEMBERID");

        // 5. 쿼리 실행 결과 출력

        while(rs.next()) {

             String name = rs.getString(1);

        }

    } catch(SQLException ex) {

        ex.printStackTrace();

    } finally {

        // 6. 사용한 Statement 종료

        if (rs != null) try { rs.close(); } catch(SQLException ex) {}

        if (stmt != null) try { stmt.close(); } catch(SQLException ex) {}

        // 7. 커넥션 종료

        if (conn != null) try { conn.close(); } catch(SQLException ex) {}

    }

 

 

 

DBMS와의 통신을 위한 JDBC 드라이버.

여기서 Class.forName("여기안에는 JDBC드라이버 클래스의 완전한 이름"); 이들어간다.
나같은 경우는 MySQL을 사용하므로 MySQL에 대한 JDBC 드라이버에 해당하는 클래스를 입력하면된다. 그것이 바로 com.mysql.jdbc.Driver 이다.

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

데이터베이스 식별을 위한 JDBC URL

데이터베이스를 구분할 때에도 URL과 비슷한 형식을 취하는 JDBC URL을 사용한다.
MySQL JDBC 드라이버는 다음과 같은 JDBC URL을 사용한다.

jdbc:mysql://HOST[:PORT]/DBNAME[?param=value&param1=value2&...]
여기서 [HOST]는 MySQL 서버의 호스트 주소를 나타내며, [DBNAME]은 데이터베이스 이름을 나타낸다. [PORT]는 MySQL 서버가 사용하는 포트 번호를 나타낸다. JDBC URL뒤에 몇 가지 설정 정보를
추가할 수 있으며, 표현 방식은 파라미터와 동일하다.

ex)
jdbc:mysql://locallhost:3303/test(DB명임)?useUnicode=true&characterEncoding=euckr

MySQL JDBC 드라이버가 MySQL 서버와 데이터를 주고 받을 때 사용되는 캐릭터 셋을
올바르게 지정하지 않을 경우 한글이나 한자와 같은 글자가 잘못된 값으로 데이터베이스에
저장될 수 있다. 따라서 MySQL에서 한글 데이터를 올바르게 하기 위해서는 위에와 같이
추가 파라미터를 이용해서 캐릭터 셋을 알맞게 지정해 주어야한다.

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

데이터베이스 커넥션

데이터베이스 프로그래밍을 하기 위해서는 먼저 데이터베이스와 연결된 커넥션을 구해야한다.
java.sql.Connection 클래스가 데이터베이스 커넥션을 나타내며, 커낵션은 java.sql.DriverManager
클래스가 제공하는 getConnection() 메서드를 사용해서 구할 수 있다.
DriverManager 클래스는 다음과 같은 두 개의 getConnection()메서드를 제공하고 있다.

DriverManager.getConnection(String jdbcURL)
DriverManager.getConnection(String jdbc URL, String user, String password)

JDBC URL과 데이터베이스 사용자 계정/아이디를 올바르게 지정했다면, DriverManager.getConnection() 메서드는 Connection 객체를 리턴한다.
리턴받은 Connection 객체를 사용해서 필요한 작업을 시작할 수 있는 것 이다.

*여기서 주의할 점*
Connection 객체를 다 사용한 뒤에는 close() 메서드를 호출하여 Connection 객체가 사용한 시스템
자원을 반환해 주어야 한다. 그렇지 않을 경우 시스템 자원이 불필요하게 소모되어 커넥션을 구할 수 없는 상황이 발생할 수도 있다.
Connection을 줄때 try문으로 묶은뒤 finally에서 close()를 사용하여 닫아주면된다.

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

Statement를 사용한 쿼리 실행

Connection 객체를 생성한 후에는 Connection으로부터 Statement를 생성한 뒤에 쿼리를 실행할 수 있다. Statement는 다음과 같이 Connection.createStatement() 메서드를 사용하여 생성할 수 있다.

Statement stmt = conn.createStatement();
여기서 conn은 Connection의 객체임.

위와 같이 Statement 클래스를 생성한 다음에는 다음의 두 메서드를 사용해서 쿼리를 실행 할 수 있다.

(리턴값 : ResultSet) executeQuery(String query) : SELECT 쿼리를 실행한다.     
(리턴값 :int)  executeUpdate(String query) : INSERT , UPDATE, DELETE 쿼리를 실행한다. 

executeUpdate()메서드는 리턴값이 int인 이유는 변경된 (또는 삽입된) 레코드의 개수를 리턴하기 때문

 

 

'JSP > JSP 수업' 카테고리의 다른 글

네번째 수업.  (0) 2012.09.13
jsp 세번째수업  (0) 2012.09.11
두번째 수업 (추가정리).  (0) 2012.09.07
두번째 수업.  (0) 2012.09.07
첫번째 수업.  (0) 2012.09.03
posted by changhozz 2012. 9. 26. 22:06

cmd에서>mysql -u root -p
root라는 계정으로 들어감. 패스워드설정해놨으므로 -p 입력.
(-u ㅡ> 이것은 계정을 지정한단 뜻.)
이러면 root라는 계정이 지정된 것이다.
여기서 이제 grant 쿼리를 이용하여 계정 추가 및 권한 설정을 한다.
mysql> grant select, insert, update, delete, create, drop on chap12.* to 'jspexam'@'localhost'
identified by 'jspex';

이것은 localhost에서 접속하는 jspexam 계정에 chap12 데이터베이스의 모든 것에 대해
select, insert, update, delete, create, drop 쿼리를 실행할 수 있는 권한을 주며,
이때 암호는 'jspex'를 사용한것이다.

이제 모든 서버에 연결할수있도록 권한을 준다.

mysql> grant select, insert, update, delete, create, drop on chap12.* to 'jspexam'@'%'
identified by 'jspex';
(달라진건 @ 뒤가 %로 바뀐것뿐.)

이제 MySQL 클라이언트인 mysql을 실행해서 chap12 데이터베이스를 사용할 수 있다.
cmd에서>mysql -u jspexam -p chap12

들어온상태에서 테이블 목록을 볼수있다.
mysql> show tables;
(지금은 테이블을 만들지 않았으므로 empty가 뜨게된다.)


---------------------------------------------------------
테이블 생성 쿼리.
create table TABLENAME(
 COL_NAME1   COL_TYPE1(LEN1),
 COL_NAME2   COL_TYPE2(LEN2),
 COL_NAMEn   COL_TYPE3(LENn)
);

TABLENAME : 테이블을 식별할 때 사용할 이름
COL_NAME : 각 칼럼의 이름
COL_TYPE : 각 칼럼에 저장될 값의 타입
LEN : 저장될 값의 최대 길이.

ex)
create table MEMBER(
 MEMBERID   VARCHAR(10),
 PASSWORD   VARCHAR(10),
 NAME       VARCHAR(20),
 EMAIL    VARCHAR(80)
);

주요키 칼럼을 표시할 때에는 칼럼 타입 뒤에 'PRIMARY KEY'라는 문장을 추가하며,
필수 값에 대해서는 'NOT NULL'을 추가한다.
예를 들어, MEMEBERID 칼럼이 주요키이고, PASSWORD,NAME칼럼이 필수 요소라면
ex)
create table MEMBER(
 MEMBERID   VARCHAR(10) NOT NULL PRIMARY KEY,
 PASSWORD   VARCHAR(10) NOT NULL,
 NAME       VARCHAR(20) NOT NULL,
 EMAIL    VARCHAR(80)
);


여기서 테이블이란
-데이터가 저장되는 가상의 장소
-테이블은 1개 이상의 칼럼으로 구성
--각 칼럼은 타입을 가지며, 제양(값의 길이, 가질 수 있는 값 등)을 갖는다.
--이런 테이블의 구성을 스키마(schema)라고 함.

여기서 칼럼이란
-표의 세로 열을 말한다.

여기서 레코드란.
- 하나의 테이블은 여러 개의 레코드로 구성.

여기서 주요키(PRIMARY KEY)란
-각각의 레코드를 구별하기 위해 사용되는 것
-각 레코드가 서로 다른 값을 갖는 칼럼
-주요키 값을 이용해서 빠른 검색 가능.

인덱스란
-지정한 칼럼에 맞춰 데이터의 정렬 순서를 미리 계산
-주요키로 인덱스의 종류
-인덱스로 사용되는 칼럼은 중복된 값을 가질 수도 있음.

이제 테이블을 생성했으면 데이터를 삽입한다.

---데이터 삽입 쿼리----
INSERT 쿼리!!!

사용법,
insert into [테이블이름]([칼럼1], [칼럼2], ..., [칼럼n])
values([값1],[값2],..,[값n])

ex)
mysql> insert into MEMBER (MEMBERID, PASSWORD, NAME) values ('changhozz', '1234',
 '김창호');

이렇게 칼럼 목록을 표시한상태라면 전체 칼럼에 대해서 모두 값을 지정해줄필요가없다.
EMAIL은 지정해주지않았으니 NULL값이 들어가있는 상태다.
만약 EMAIL이 NOT NULL이라고 명시했다면 NULL을 값으로 갖지않고 아예 EMAIL에 값이 없게
되는것이다.

하여튼
칼럼 목록을 표시하지않고 값을 지정해줄때애네는 전체 칼럼에 대해서 값을 지정해주어야한다.

ex)
insert into MEMBER values('changhozz', '1234', '김창호', 'changhozz@nate.com');
이런식으로...

만약 값에 작은따옴표가 있다면 두번 입력해주면된다.

예를 들어 김창호's  라면
김창호''s 이런식으로!!

!!!!*****앞에서 MEMBERID,PASSWORD,NAME을 NOT NULL로 지정해주었기때문에,
값을 무조건 넣어된다. 반면 EMAIL은 NOT NULL을 지정하지 않았기 때문에
값을 안넣어도 상관이없다.
그래서 EMAIL을 제외하고 insert를 해주어 EMAIL값은 NULL이 되버렸다.
그다음 다시 insert를 이용하여 EMAIL에만 값을 넣어주려했는데 안된다...
왜냐면 insert는 말그대로 삽입이다. 이거 하나만 넣을수가없는것이다.
아직 update가 나오지않아 발생한일..

----------------------------------------
데이터 조회 쿼리.  (조회 및 조건)
SELECT 쿼리!!!!
사용법,
select [칼럼1], [칼럼2],..,[칼럼n] from [테이블이름]

ex)
select MEMBERID, NAME from MEMBER;

만약 전체 칼럼을 모두 읽어오려면
ex)select * from MEMBER;

where절!!!!!!!!
조건에 맞는 레코드 검색

select * from MEMBER where NAME='김창호';

이것은,, MEMBER라는 테이블중에서 NAME이 김창호인 데이터만 불러오는것이다.!!

또한 and나 or을 이용하여 다양한 조건 지정이 가능하다.
select * from MEMBER where NAME = '김창호' and EMAIL = 'changhozz@nate.com';
하게되면 MEMBER라는 테이블중에서 NAME이 김창호고 EMAIL이 changhozz@nate.com
데이터만 불러오는것이다.!!!!


같지 않음을 표현할 때에는 '<>'연산자를 사용한다.
예를 들어, EMAIL 칼럼의 값이 공백 ('')이 아닌 레코드를 검색하고 싶다면
다음과 같은 쿼리를 사용하면된다.
사용법,
select * from MEMBER where EMAIL <>'';

또한 칼럼의 값이 NULL 이거나 NULL이 아닌 레코드를 구하고 싶은 경우도 있는데,
이런 경우에는 다음과 같이 NULL과 관련된 전용 쿼리를 사용할 수도 있다.
사용법,
select * from MEMBER where EMAIL is NULL;
select * from MEMBER where EMAIL is NOT NULL;

또한 부등호 기호를 사용할 수도 있다.
예를들어, 숫자 칼럼에서 값의 범위가 1부터 100사이에 있는 레코드를 읽어오고 싶다고 해보자,
이 경우 다음과 같이 '<','>','<=','>=' 등의 연산자를 사용하면 된다.

where SALARY >= 1000 and SALARY <= 2000;

마지막으로 LIKE 조건!!!!!!

LIKE 조건을 사용하면 특정 문장이 포함된 것을 찾을수있다.
예를들어 NAME 값이 '김'으로 시작하는 레코드를 찾고 싶다면 다음과 같이
LIKE 조건을 사용 할 수 있다.
where NAME like '김%';

 

------------------------------------------------------------
데이터 쿼리 조회 - 정렬
ORDER BY 절!!!!!!
사용법,
select .. from [테이블이름] where [조건절] order by [칼럼1] asc, [칼럼2] desc,...

여기서 [칼럼]은 정렬하고 싶은 칼럼의 이름을 나타내며, 칼럼 이름 뒤에 'asc'나
'desc'를 붙일 수 있다. 'asc'를 붙히면 오름차순으로 정렬되며 'desc'를 붙이면
내림차순으로 정렬된다.

ex)
select * from MEMBER order by NAME asc, MEMBERID asc;

위 쿼리는 NAME 칼럼을 기준으로 먼저 오름차순 정렬이되고,
정렬된 상태에서 MEMBERID 칼럼에 대해서 오름차순으로 정렬한다.
이때 주의사항!
일단 NAME 칼럼으로 정렬된 상태가 되면, NAME 칼럼이 같은 값을 갖는 것들에
대해서만 MEMBERID 칼럼으로 정렬이 이루어진다는 점이다.
-------------------------------------------------------------------
데이터 쿼리 조회 - 집합.
집합 관련된 쿼리에는 sum(), max(), min(), count() 등의 함수가 존재한다.
말그대로 sum은 총합, max는 최댓값, min은 최솟값, count는 개수를 구할 때 사용됨.

사용법,
select max(SALARY), min(SALARY), sum(SALARY) from....
 
만약 특정 조건에 해당하는 레코드에 대해서만 집합 관련 함수를 실행하고 싶다면
where 조건문을 붙히면된다.
예를들어, NAME 칼럼의 값이 '김'으로 시작하는 레코드의 개수를 구하고 싶다면
다음과 같은 쿼리를 실행하면 된다.
사용법,
select count(*) from MEMBER where NAME like '김%';


--------------------------------------------------------------------
데이터 수정 쿼리

수정 쿼리 ㅡ> UPDATE!!!!!!!!!

사용법,
update [테이블이름] set [칼럼1]=[값1], [칼럼2]=[값2], ..where[조건절];

만약 where절을 사용하지않고
update MEMBER set NAME='김창호';
라고한다면, 모든 레코드의 NAME 칼럼의 값을 '김창호'로 변경하게되니
WHERE사용을 주의하자!!!!

ex)
mysql> update MEMBER set EMAIL='changhozz@nate.com' where MEMBERID = 'changhozz';

이것은,
MEMBER 테이블에서 칼럼 EMAIL에 값으로 changhozz@nate.com을 넣겠다.
근데 조건이 MEMBERID가 changhozz인 것만 넣겠다.
이런뜻!.


--------------------------------------------------------
데이터 삭제 쿼리

삭제 쿼리 ㅡ> DELETE!!!!!!!!!

사용법,
delete from [테이블이름] where [조건절]

이것또한 조건 where을 입력하지 않으면 전체 레코드를 삭제해버린다!!!
ㅡ> delete from MEMBER
이렇게하면 MEMBER테이블 내용 다사라짐!!
where을 주의하자!!

이런식으로 사용하자.
mysql> delete from MEMBER where MEMBERID = 'changhohh';

MEMBER 테이블에서 MEMBERID가 changhohh 인것만 삭제한다!!라는뜻!.


-----------------------------------------------------------
조인.

-조인(Join)은 두개 이상의 테이블로부터 관련 있는 데이터를 읽어올 때 사용된다.
조인의 기본 형식은 다음과 같다.

select A.칼럼1, A.칼럼2, B.칼럼3, B.칼럼4 from [테이블1] as A, [테이블2] as B
where A.[칼럽x] = B.[칼럼y]


예를 들기위해
create table MEMBER_ETC(
 MEMBERID    VARCHAR(10) NOT NULL PRIMARY KEY,
 BIRTHDAY    CHAR(8)
);

테이블생성후,
값으로
changhozz 19890105 와 tkdwnsdlzz 19880911와 jungwoogi 19881027을 넣었다.
그 다음
mysql> select * from MEMBER as A, MEMBER_ETC as B where A.MEMBERID = B.MEMBERID;

를 입력하게되면
MEMBER에 있는 MEMBERID와 MEMBER_ETC에 있는 MEMBERID가 같은경우에
테이블을 일렬로 나열하여 전부 보여주었다.
공통된 changhozz와 tkdwnsdlzz의 값들이 아이디 비번 이름 이메일 아이디 생일 순으로
쭉 나열되었다.

 

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

MVC패턴과 모델 1,2  (2) 2013.01.09
JSP 수업.  (0) 2012.09.25
웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
posted by changhozz 2012. 9. 25. 22:11

8장 - 에러 처리.

1.page 디렉티브에서 지정.
에러페이지 지정방법.
<%@ page erroPage = "error.jsp">

에러 페이지 작성방법.
<%@ page isErroPage = "true" %>
IE에서 예외가 올바르게 보여지려면 에러 페이지가 출력한 응답 데이터 크기가
513바이트보다 커야함.
만약에 513바이트보다 작다면 IE에서 기본적으로 제공하는 에러페이지가 나타남.

2.web.xml 파일에서 예외 타입 별 에러 페이지 지정.

<error-page>
<exception-type>예외클래스명</exception-type>
<location>에러페이지의 URI</location>
</error-page>

3.web.xml 파일에서 응답 상태 코드별 에러 페이지 지정.

<error-page>
   <error-page>에러코드</error-page>
   <location>에러페이지의 URI</location>
</error-page>

에러페이지의 우선순위는 번호 그대로,
page 디렉티브 ㅡ> 에외 타입별 ㅡ> 에러 코드별이다.
(아무것도 해당되지 않을 경우 웹 컨테이너가 제공하는 기본
에러 페이지를 보여줌.)

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

9장 - 클라이언트와의 대화 1: 쿠키

쿠키 ㅡ> 웹 브라우저가 보관하고 있는 데이터로서
웹 서버에 요청을 보낼 때 함께 전송.

쿠키의 생성은 웹서버에서 일어나지만, 쿠키의 저장소는 웹 브라우저이다.

쿠키 생성법.
<%
Cookie cookie = new Cookie("cookieName", "cookieValue");
response.addCookie(cookie);
%>
cookie 이름은 cookieName이고 값은  cookieValue이며,
cookie객체를 더하여 보낸것이다.

쿠키를 읽으려면,
Cookie [] cookies = request.getCookies();
이런식,


* 쿠키는 값으로 한글과 같은 문자를 가질 수 없다.
따라서 인코딩을 하여 보낸후, 디코딩하여 받아야한다.

값 설정시 : URLEncoder.encode("값". "euc-kr")
인코딩을 해준후 인코딩 값을 쿠키의 값으로 넣어준다.
new Cookie("name", URLEncoder.encode("값","euc-kr"));

값 조회시 : URLDecoder.decode("값","euc-kr")
String value = URLDecoder.decode(cookie.getValue(),"euc-kr");

 

-쿠키의 도메인과 경로.

도메인 지정시 , 해당 도메인에 쿠키를 전달한다.
-Cookie.setDomain()으로 쿠키 설정.
-도메인 형식
 만약 .madvirus.net으로 지정해다면
지정한 도메인이 들어간 www.madvirus.net 과 javacan.madvirus.net 모두에
쿠키를 전달한다. 도메인이 벗어난 쿠키는 저장하지 않는다.

만약 경로를 지정해주었다면,
설정한 경로 및 그 하위 경로에 대해서 쿠키를 전달한다.
Cookie.setPath()로 경로 설정함.

-쿠키 유효 시간 지정.
유효시간 미 지정시, 웹 브라우저 닫을 때 쿠키도 함께 살제.
쿠키를 삭제하는 메서드는 존재하지않는다.
따라서 유효시간을 0이나 음수를 주어 삭제시킨다.
Cookie.setMaxAge()를 이용하여... (초단위임.)

 

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

10장 클라이언트와의 대화 2: 세션.

세션또한 데이터를 보관하여 쿠키와 같아 보이지만,
세션은 웹서버에서 생성되고, 저장또한 웹 서버에 저장된다.
(세션은 브라우저당 하나지만, 쿠키는 여러개일수있음.)

세션 사용법,
<%@ page sessing = "true"%>
<%
    session.setAttribute("userInfo", userInfo);
%>
기본 값이 true이므로 false로 하지 않는 이상 항상 세션 사용.

 

-세션 종료/ 타임아웃.
session.invalidate()을 이용해서 세션 종료.
세션이 종료되면 기존에 생성된 세션이 삭제되고,
이후 접근 시 새로운 세션이 생성 됨.

또한 유효 시간을 설정하여 마지막 세션 사용 이후 유효 시간이 지나면
자동 종료될수 있도록 web.xml 파일에서 지정해줄수 있음.

<session-config>
    <session-timeout>
      30 (분단위임)
     </sessing-timeout>
</session-config>
또는 session 기본객체의 setMaxInactiveInterval()메서드를 이용하여 지정가능.
(초단위임.)

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

11장 <jsp:useBean> 액션 태그

자바빈(JavaBeans)이란 웹 프로그래밍에서 데이트의 표현을 목적으로 사용하는것을 말함.

collection 개념으로써 페이지상에서 들고다닐수있는, 말그대로 콩 조각이 모인 완두콩을 뜻한다.
collection을 이용하여 클래스를 만든 후, 객체를 사용하여 필요한 값에 접근한다.
일반적으로 setter, getter를 이용하여 값을 읽고 쓴다.

여기서 <jsp:useBean> 태그는 JSP에서 자바빈 객체를 생성할 때 사용된다.
사용법,
<jsp:useBean id ="[빈이름]" class="[자바빈클래스이름]" scope="[범위]" />

id - jsp 페이지에서 자바빈 객체에 접근할 때 사용할 이름.
class - 패키지 이름을 포함한 자자빈 클래스의 완전한 이름.
scope - 자바빈 객체가 저장될 영역을 지정. page,request,session,application 중 하나를
값으로 갖는다. 기본값은 page임.

ex)
<jsp:useBean id = "info" class="chap11.member.MemberInfo" scope="request" />
<%= info.getName()%>

-  <jsp:setProperty> 액션 태그
1.<jsp:setProperty name = "id" property="이름" value="값" />
이런식으로 객체의 값을 설정할수도 있음.
name ㅡ> 자바빈 객체의 이름
property ㅡ> 값을 설정할 프로퍼티
value  ㅡ> 프로퍼티의 값.

2.<jsp:setProperty name="id" property="이름" param="파라미터 이름" />
 param ㅡ> 프로퍼티의 값으로 사용할 파라미터 이름.

3.<jsp:setProperty name = "id" property="*" />
 프로퍼티와 동일한 이름의 파라미터를 이용해서 값을 설정
폼에 입력한 값을 자바 객체에 저장할 때 유용하게 사용.

 -  <jsp:getProperty> 액션 태그
프로퍼티의 값을 출력하기 위해 사용.
사용법,
<jsp:getProperty name = "자바빈" property="프로퍼티" />
그러나 EL(Expression Language)의 사용으로 거의 사용 X

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

MVC패턴과 모델 1,2  (2) 2013.01.09
DB정리!!!  (0) 2012.09.26
웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
posted by changhozz 2012. 9. 13. 21:21

6장 기본객체와 영역.

우선 JSP의 기본 객체로는
request, response, pageContext, session, application, out, config,
page, exception 등이 있는데,

여기서 exception 객체는 에러페이지에서만 사용가능하다.
나머지 객체들은 일반 jsp페이지에서 사용가능.

request객체의 실제타입에는 javax.servlet.http.HttpServletRequest 와
javax.servlet.ServletRequest 있는데 이 둘은 버전에 따라 사용되며,
현재는 전자를 쓴다.


-------------------------out 기본 객체-------------------------

write() 메서드는 스트림출력을 할때 사용되고,
print() 메서드는 단순 콘솔출력을 할때 사용된다.

JSP페이지가 생성하는 모든 내용은 out 기본 객체를 통해서 전송된다.
JSP 페이지 내에서 사용되는 비스크립트 요소들(일반적인 HTML 코드 내지 텍스트)은
out 기본 객체에 그대로 전달되며, 값을 출력하는 표현식의 결과값 역시out  기본객체에 전달된다.

ex) out.println("<html>");
     out.println("<head>");
    또는
   out.println("안녕하세요");

-----------------------------pageContext 기본객체-----------------------------

pageContext가 제공하는 기본 객체 접근 메서드

 

메서드 

리턴타입 

설명 

getRequest() 

ServletRequest 

request 기본 객체를 구한다. 

getResponse() 

ServletResponse 

response 기본 객체를 구한다. 

getSession() 

HttpSession 

session 기본 객체를 구한다. 

getServletContext() 

ServletContext 

application 기본 객체를 구한다. 

getServletConfif() 

ServletConfig 

config 기본 객체를 구한다. 

getOut() 

JspWriter 

out 기본 객체를 구한다. 

getException() 

Exception 

exception 기본 객체를 구한다. 

getPage() 

Object 

page 기본 객체를 구한다. 

마찬가지로 getException() 메서드는 JSP페이지가 에러 페이지인 경우에만 의미가 있다.

 

-------------------------application 기본객체-----------------------------

application 기본 객체는  웹 어플리케이션과 관련된 기본 객체로써,
특정 웹 어플리케이션에 포함된 모든 JSP페이지는 하나의 application 기본 객체를 공유하게된다.

즉 제일 큰 덩어리를 뜻한다.

WEB-INF\web.xml 파일에서 웹 어플리케이션 전체에서 사용할 수 있는 초기화 파라미터를
<context-param> 태그를 사용하여 추가할 수 있다.

application 기본 객체의 웹 어플리케이션 초기화 파라미터 관련 메서드

 

메서드 

리턴 타입 

설 명 

getInitParameter(String name) 

String 

이름이 name인 웹 어플리케이션 초기화 파라미터의 값을 읽어 온다. 존재하지 않을 경우 null을 리턴한다. 

getInitParameterNames() 

Enumeration 

웹 어플리케이션 초기화 파라미터의 이름 목록을 리턴한다. 


--------------------JSP 기본 객체와 영역----------------------

PAGE 영역 : 하나의 JSP 페이지를 처리할 때 사용되는 영역
REQUEST영역: 하나의 HTTP 요청을 처리할 때 사용되는 영역(form.jsp 와 result.jsp처럼 요청을 하는
관계를 합쳐서 REQUEST 영역이라 함.)
SESSION 영역: 하나의 웹 브라우저와 관련된 영역(브라우저하나당 SESSION영역도 하나.)
APPLICATION 영역 : 하나의 웹 어플리케이션과 관련된 영역.(JSP의 모임.)

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

 

메서드 

리턴타입 

설명 

setAttribute(String name,
                 Object value) 

void 

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

getAttribute(String name) 

Object 

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

removeAttribute(String name) 

void 

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

getAttributeNames() 

java.util.Enumeration 

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

형변환 autoBoxing unBoxing 주의!!

 

7장 페이지 모듈화와 요청 흐름 제어

-----<jsp:include> 액션 태그를 이용한 페이지 모듈화----

<jsp:include> 액션 태그는 지정한 페이지를 태그가 위치한 부분에 포함시킬 때 사용된다.

----include 디렉티브를 이용한 중복된 코드 삽입----

include 디렉티브도 <jsp:include>와 마찬가지로 지정한 페이지를 현재 위치에 포함시켜
주는 기능을 제공한다. 하지만, <jsp:include>완느 달리 include 디렉티브는 포함되는 방식에서 큰 차이를 보인다. <jsp:include>는 다른 JSP로 흐름을 이동시켜 그 결과물을 현재 위치에 포함시키는 방식인 반면, include 디렉티브는 다른 파일의 내용을 현재 위치에 삽입한 후에 JSP파일을 자바 파일로
변환하고 컴파일 하는 방식이다.

ex)   <%@ include file = "포함할파일"%>

'JSP > JSP 수업' 카테고리의 다른 글

JSP 수업 DB부분  (0) 2012.10.05
jsp 세번째수업  (0) 2012.09.11
두번째 수업 (추가정리).  (0) 2012.09.07
두번째 수업.  (0) 2012.09.07
첫번째 수업.  (0) 2012.09.03
posted by changhozz 2012. 9. 11. 21:42

파라미터 request될때 String으로 넘어온다.

if esle문 말고 switch 문으로 해라.

 

5장 필수 이해 요소


서블릿에 요청 전달하는 것은 순수 자바를 말함.

java ㅡ> 실행코드방식
jsp ㅡ> 스크립트방식

was(톰캣)가 실행 될때 자바가 실행됨.

톰캣 ㅡ>

jsp란 확장자가 있으면 자바 코드가 없어도 class파일을 떨군다.

 

출력 버퍼 ------

jsp가 생성한 응답 결과를 임시로 저장

출력 결과를 버퍼에 저장하고 버퍼가 꽉 차게되면 내뱉는다.
버퍼가 꽉 안찼어도 로딩이 다 됐다면 내뱉는다.

오토플러시가 투르 일때!!
팔스면 꽉찼을때 오류 띄움.


buffer 속성  보통 8kb로 설정함.8kb 성능이좋음.

버퍼 ㅡ> 잠시 거쳐가는 임시 저장소. 컨트롤 해줌.


--------------------------------------------------
웹 어플리케이션디렉터리 구성
src ㅡ> 자바만 들어감 (자바소스 저장됨.)
webcontent ㅡ> META_INF
           ㅡ> WEB_INF      web.xmlㅡ>설정파일
                   ㅡ>lib 
      ㅡ>classes               
 web  ㅡ> 패키지관리를 잘해라. 지금 부터 연습. 패키기 구조 잡기.

원랜 bin폴더에 떨궈지는데
빌드패스를 classes로 바꿔라.!!!!!!!!!!!

빌드가 (컴파일이)다시 필요한 파일들을 classes에 모아둬야함.
java파일이나 server.xml이나 설정파일등.

앤트빌드 ㅡ> 수동으로 컴파일.


---------------------------------------------------------
war    ㅡ> 웹 어플리케이션 archieve

우리는 servel.xml 설정으로 해줘서 webapps를 통하지않고
바로 접근하게 한다.

 

----------------------------------------------------
목요일 (기본객체 읽어오기.)
메서드  같은거 보고오기.

 

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

1) JSP의 처리과정
웹 컨테이너는 JSP에 해당하는 서블릿이 존재하지 않을 경우
JSP페이지를 컴파일 하여 서블릿을 생성한 후, 생성된 서블릿을
사용하여 클라이언트의 요청을 처리한다.
JSP에 해당하는 서블릿이 존재하는 경우엔 곧바로 서블릿을
사용하여 클라이언트의 요청을 처리한다.

즉, JSP 페이지를 요청할 때에는 JSP를 직접적으로 실행하는 것이
아니라, JSP를 자바 소스 코드로 변환을 한ㄷ 뒤 컴파일 해서 생성된
서블릿을 실행하는것 이다. 여기서 JSP 페이지를 자바 코드로
변경하는 단계를 "변환 단계"라고 하며, 자바 코드를 서블릿 클래스로
변경한는 단계를 "컴파일 단계"라고 한다.

2) 출력 버퍼와 응답
JSP페이지가 생성하는 출력 내용을 곧바로 웹 브라우저에 전송하지 않고
버퍼에 저장했다가 한꺼번에 전송함으로써 생기는 장점은 다음과 같다.
-데이터 전송 성능이 향상된다.
-곧바로 웹 브라우저로 전송되지 않기 때문에, JSP 실행 도중에 버퍼를 비우고
새로운 내용을 보여줄 수 있다.
-버퍼가 다 차기 전까지는 헤더를 변경할 수 있다.

버퍼 설정.
<%@ page buffer = "8kb"%>
보통 8kb로 설정한다고함.(가장 높은 성능을 보임.)

"none" 일경우엔 내용을 바로 웹 브라우저에 전송.
page디렉티브 속성중 autoFlush는 true, false를 속성값으로 갖는다.
true : 버퍼가 다 찼을 경우 버퍼를 플러시하고 계속해서 작업을 진행
false: 버퍼가 다 찼을 경우 예외를 발생시키고 작업을 중지.

3) 웹 어플리케이션 디렉터리 구성과 URL 매핑

WEB-INF = 웹 어플리케이션 설정 정보를 담고 있는 web.xml 파일이 위치한다.
WEB-INF\classes = 웹 어플리케이션에서 사용하는 클래스 파일이 위치한다.
WEB-INF\lib = 웹 어플리케이션에서 사용하는 jar파일이 위치한다.

4) 웹 어플리케이션의 배포
개발된 웹 어플리케이션을 실 서버에 배포하는 방법은 크게 다음의 두 가지가 있다.
-대상 디렉터리에 직접 복사
-war 파일로 묶어서 배포

'JSP > JSP 수업' 카테고리의 다른 글

JSP 수업 DB부분  (0) 2012.10.05
네번째 수업.  (0) 2012.09.13
두번째 수업 (추가정리).  (0) 2012.09.07
두번째 수업.  (0) 2012.09.07
첫번째 수업.  (0) 2012.09.03
posted by changhozz 2012. 9. 7. 19:36

일반적인 JSP 코드는 JSP페이지에 대한 정보를 입력하는 설정 부분과 실제로 HTML 문서를
생성하는 생성 부분으로 나눌 수 있다.
JSP의 설정 부분에는 JSP 페이지에 대한 정보가 위치하며, 일반적으로 다음과 같은 정보를 입력한다.

●JSP페이지가 생성하는 문서의 타입.
●JSP페이지에서 사용할 커스텀 태그
●JSP페이지에서 사용할 자바 클래스 지정 (import)

<%@page...%>   ㅡ> page 디렉티브라고 함.

<%@ page import = "java.util.Calendar, java.util.Date"%> 이런식으로 한번에 속성값을 써도 됨.(콤마)

page 디렉티브 속성중  trimDirectiveWhitespaces는
디렉티브나 스크립트로 인해 발생한 공백 문자가 응답 결과에 포함되지 않게 해준다.
즉 jsp페이지를 작성한후 소스보기를 하면 자바내용이 안보이게 되는데
이부분은 원래 공백으로 나타나게된다.
이 공백을 없애 준다는것.
사용법 ㅡ>
<%@ page trimDirectiveWhitespaces = "true" %>

 

JSP가 제공하는 디렉티브

 

디렉티브 

설명 

page 

JSP 페이지에 대한 정보를 지정한다. JSP가 생성하는 문서의 타입, 출력 버퍼의 크기, 에러 페이지 등 JSP페이지에서 필요로 하는 정보를 입력한다.

taglib 

JSP페이지에서 사용할 태그 라이브러리를 지정한다. 

include 

JSP페이지의 특정 영역에 다른 문서를 포함시킨다. 

 

 

--------------------------------심화--------------------------------------

*액션태그 - JSP 페이지에서 자바 코드 등의 스크립트 언어를 사용하지 않고도 다른 페이지의
서블릿이나 자바빈의 객체에 접근 할 수 있도록 태그를 이용해 구현된 기능을 말함.

액션태그 중의 하나인 <jsp:include>는
특정한 페이지의 실행 결과를 현재 위치에 포함시킬 때 사용 된다.

ex) <jsp:include page="header.jsp" flush="true" />

커스텀태그  = JSP코드에서 중복되는 것들을 모듈화 하거나 또는 스크립트 코드를
사용할 때의 소스 코드의 복잡함을 없애기 위해서 사용된다.

JSTL(JavaServer Pages  Standard Tag Library) - 커스텀 태그 중에서 자주 사용되는 것들을
별도로 표준화한 태그 라이브러리.

 

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

 

 

 

 

 

'JSP > JSP 수업' 카테고리의 다른 글

JSP 수업 DB부분  (0) 2012.10.05
네번째 수업.  (0) 2012.09.13
jsp 세번째수업  (0) 2012.09.11
두번째 수업.  (0) 2012.09.07
첫번째 수업.  (0) 2012.09.03
posted by changhozz 2012. 9. 7. 14:34

-JSP의 구성요소.-

1).디렉티브
▶사용법  <%@ 디렉티브이름 속성1="값1"; 속성2="값2" %>
ex )  <%@ page contentType="text/html"%>
text/html 말고도 여러 가지가 있는데 이것을 MIME타입이라고 한다.
▶제공 디렉티브 
-page : JSP페이지에  대한 정보를 지정.
(문서의 타입, 출력 버퍼의 크기, 에러 페이지 등 정보 지정).
--page의 주요 속성
---contentType : JSP가 생성할 문서의 타입을 지정
---import  : JSP 페이지에서  사용할 자바 클래스를 지정
---session  : JSP페이지가 세션을 사용할 지의 여부를 지정.
---info : JSP 페이지에 대한 설명을 입력한다.
---errorPage  :  에러가 발생할 때 보여줄 페이지를 지정.
---isErrorPage : 에러 페이지인지의 여부를 지정.
-taglib : 사용할 태그 라이브러리를 지정.
-include : 다른 문서를 포함.
모두 한번에 정의 할 수 있음.
<%@ page…%>
<%@ taglib…%>
<%@ include…%>

2).스크립트 요소
▶표현식 (값을 출력) - 리턴타입이 있는 경우엔 표현식을 써야함.
사용법  <%= 출력할 값 %>
<%= author %> 와 ${author} 는 같다.
▶스크립트릿 (자바 코드를 실행)
사용법  <% 자바코드 %>
▶선언부 (자바 메서드 정의) 
사용법  <%!  메서드   %>

3).기본객체(=내장객체)
별도 선언없이(iterator처럼 new 연산자 없이) 사용할 수 있음.
▶주요 기본 객체
★ request   -  요청 정보를 구할 때 사용 (요청시 보이진 않지만 , 헤더 부분도 딸려감.)
주요 기능
-클라이언트(웹 브라우저)와 관련된 정보 읽기 기능
-서버와 관련된 정보 읽기 기능
-클라이언트가 전송한 요청 파라미터 읽기 기능
-클라이언트가 전송한 요청 헤더 읽기 기능
-클라이언트가 전송한 쿠키 읽기 기능.
-속성처리 기능
response  -  응답과  관련된 설정 (헤더, 쿠키 등) 시 사용.
out  -  직접 응답을 출력할 때 사용.
session -  세션관리에 사용. (기록 같은걸로 보면 됨.)
★ response  -   웹 브라우저에 전송하는 응답 정보 설정
주요 기능
-헤더 정보 입력
- 리다이렉트 처리
방법 ㅡ>  response.sendRedirect (String location)

4)파라미터를 전송하는 방식
▶GET 방식 - 쿼리문자열로 전송
ex) ?이름1=값1&이름2=값2       ㅡ> 보안상의 문제가있음.

▶POST방식 - 요청 몸체 데이터로 전송  (헤더 바디안에 기술.)

▶파라미터 값의 인코딩/디코딩
웹 브라우저에서 '김창호'란 파라미터 값을 넘기게되면 웹브라우저는 '김창호'를 인코딩하여
웹 서버로 넘기게되면 웹 서버는 다시 인코딩된 '김창호'(%E3%F12% 이런식으로 인코딩됨.)를
다시 디코딩해야한다.
-방법.
<%
request.setCharacterEncoding("euc-kr");
String name = request.getParameter("name");
%>

 

 

'JSP > JSP 수업' 카테고리의 다른 글

JSP 수업 DB부분  (0) 2012.10.05
네번째 수업.  (0) 2012.09.13
jsp 세번째수업  (0) 2012.09.11
두번째 수업 (추가정리).  (0) 2012.09.07
첫번째 수업.  (0) 2012.09.03
posted by changhozz 2012. 9. 4. 22:11

http://tomcat.apache.org 에 접속하여
좌측에 Tomcat 6.0을 클릭한후
Binary Distributions - Core에
tar.gz(pgp,md5)를 다운받는다.

또한
http://ant.apache.org/에 접속하여
좌측에 Download에 Binary Distributions을 클릭한 후
apache-ant-1.8.4-bin.tar.gz 를 다운 받는다.

Install이란 폴더에 archive폴더를 만든후 이곳에 저장한다.
또 Install폴더에 ant폴더와 tomcat폴더를 만든다.

archive 폴더로 들어가서 우선 apache-tomcat-6.0.35.tar.gz를 압축을 풀어줘야한다.
현재 archive폴더에있는 apache-tomcat-6.0.35.tar.gz 압축파일을 전 디렉토리에 있는
tomcat에 풀어주기위하여
tar -zxvf ./apache-tomcat-6.0.35.tar.gz -C ../tomcat/ 을 입력하여 풀어준다.

마찬가지로
현재 archive폴더에있는 apache-ant-1.8.4-bin.tar.gz 압축파일을 전 디렉토리에 있는
ant에 풀어주기위하여
tar -zxvf ./apache-ant-1.8.4-bin.tar.gz -C ../ant/ 을 입력하여 풀어준다.

vim ./.configure에 경로를 잡아준다.
잡아준후
echo ${PATH} 를해준다.
vim ./.bashrc에 들어가서 소스 뭐뭐를 해준다.
. .configure

cd /cygdrive/d/Install/tomcat/apache-tomcat-6.0.35 에 들어가서
bin 으로 들어가
 .startup.sh 를 해준다 or ./startup.sh

'Linux' 카테고리의 다른 글

리눅스 명령어  (0) 2012.09.04
posted by changhozz 2012. 9. 4. 20:59

man 명령어ㅡ> 명령어에대한 설명을 해줌    ex)man ls

명령어 --help  ㅡ> 마찬가지로 명령어에대한 설명을 해줌.   ex)ls --help 

둘다 q 누르면 다시 명령어 모드로 감.

pwd   ㅡ> 현재 경로를 알려줌.

cat> 파일명  ㅡ> 파일명을 만들고 입력할수있게 해준다.   ctrl + d  하면 저장후 해당파일에서 빠져나감. (즉, 덮어쓰기 기능도 된단뜻.)

cat >> 파일명  ㅡ> 원래 있던 파일에 이어쓰려고할때 사용. 사용후 똑같이 ctrl + d 하면 저장후에 빠져나옴.

cat 파일명  ㅡ> 해당 파일을 읽어서 콘솔에 출력함.     ex)cat test.txt

cat -b 파일명 ㅡ> 해당 파일명안에 있는 글에 라인별로 넘버를 표시해준다. 단 , 공백라인은 표시하지 않음.

cat -n 파일명   ㅡ> 공백라인까지 표시해줌. 

cat 파일1 파일2 >> 파일3      ㅡ> 파일3를 만든후 파일1과 파일2의 내용을 합쳐서 파일3에 저장하겠단 뜻.    ex) cat test1.txt test2.txt >> test3.txt

cd . .   ㅡ> 상위경로로 이동

cd ~   ㅡ> home 디렉토리로 이동

cd -    ㅡ>  뒤로가기

cd 폴더명  ㅡ> 폴더로 이동.

cp -r 파일명1 파일명2     ㅡ> 파일명1의 내용을 파일명2에 복사함.  파일명1도 그대로 내용이 있음.

cp -r 파일명 폴더명       ㅡ> 지정파일을 지정폴더에 복사한다.

cp -r 폴더명1 폴더명2      ㅡ> 폴더명2 폴더에 폴더명1 폴더 전체를 복사한다.

cp -b 파일명1 파일명2        ㅡ> 파일명1을 파일명2에 복사를하는데 , 파일명 b의 백업을 만들어줌.

cp -i 파일명1 파일명2           ㅡ> 파일명1의 내용을 파일명2에 복사를하는데 , 만약 파일명2에 내용이 이미 있다면 교체를 할껀지 물어본다. 이때 yes를 누르면 됨.

mv 파일명 디렉토리            ㅡ> 해당파일을 해당 디렉토리(폴더)로 이동한다. 당연히 원래 있던 파일은 없어진다.

mv 파일1 파일2            ㅡ> 파일1의 파일명을 파일2로 변경한다.

mv 디렉토리 디렉토리(없는 폴더명 일때)    ㅡ>  디렉토리 이름변경

mv 디렉토리 디렉토리(있는 폴더명 일때)   ㅡ> 해당폴더를 원하는 폴더로 이동.

rm 파일명    ㅡ> 해당파일 삭제

rm -r      ㅡ> 디렉토리(폴더)  삭제

rmdir 지울폴더명        ㅡ>  폴더 삭제(디렉토리에 내용이 없어야 지울 수 있음.)

rmdir -r 지울폴더명1/지울폴더명2    ㅡ>폴더 2개를 한번에 삭제할수있다.(마찬가지로 디렉토리에 내용이 없어야 함).

--------------------------------압출 풀기---------------------------------------

tar xvfz 파일명.tar.gz : gz계열 압축 풀기   ?
tar xvfb 파일명.tar.bz : bz계열 압축 풀기      ?

 

.    ㅡ> 현재위치

./      ㅡ>이것도 현재위치

../    ㅡ>여기 위 폴더. 

 

 

압축 푸는거

archive   ㅡ> 묶기만  하는거 (파일형식임.)

zip         푸는 명령어 보기

 

 

'Linux' 카테고리의 다른 글

톰캣 ant 설치  (0) 2012.09.04