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