System.out.println("Hello, World");

Service()가 실행될때마다 카운터 쌓기

1. 우선 클래스를 만들어준다.



2. 다음과 같이 코딩한다.

이 코딩은 서비스가 요청될때마다 카운터가 하나씩 쌓여서 화면에 출력하는걸 의미한다.


3. web.xml도 다음과 같이 코딩해준후 서버를 가동시킨다.


4. http://127.0.0.1:8088/myweb/counter로 들어가서 다음과 같이 나오는지 확인한다.


5. 새로고침 할때마다 서비스가 요청되어 카운터가 쌓이는걸 볼 수 있다.


6. 여러번 새로고침한 상황이다.

하지만 위와 같이 코딩하게 되면 서버를 재 실행하게 되면 카운터는 인스턴스 변수이기 때문에 초기화 된다.


그래서 외부자원을 이용해야 하지만 항상 서비스가 요청될때마다 읽고 쓰기가 되면 계속 작업을 하기 때문에 버벅거리게 된다. 


이 문제를 해결하기 위해 destroy()에 저장하고 init()때 읽어 들이기를해야 한다.


1. Init()와 destroy()를 활용하여 코딩하기로 한다.


2. 우선 Init()를 코딩한다.

 - init()에서는 파일을 읽어서 그 파일안에 있는 값을 로드하는 기능을 한다.





3. 그다음 Destroy()를 코딩한다.

 - destroy()는 visitcount를 저장하는 역할을 하게 된다.


4. 그 다음 서버를 가동시키고 http://127.0.0.1:8088/myweb/counter를 실행하면 다음과 같이 나와야 한다.

밑 사진은 이미 22번째까지 새로고침을 한 것이다.

5. 이제 서버를 재가동하여 값이 제대로 저장되어 불러오는지 테스트한다.



6. 재가동하여 이전에 불러온값 +1이 적용되면 성공적으로 코딩한 것이다.


CounterServlet 소스코드








Posted by 김마농

1. 이클립스 font 설정하기 위해서 Window -> preference로 진입한다.



2. 그후 Java탭에서 -> Editor -> Syntax Coloring으로 들어간뒤 오른쪽 메뉴에서 Java를 선택하여 

바꾸고 싶은 항목을 선택하여 색깔이라든지, Bold체 등 바꿔주면 된다. 



Posted by 김마농



Web Application

 - 정적서비스(Web서버)

 - 동적서비스[프로그램](클라이언트 요청이 들어오면 그때마다 서비스)


○ Servlet의 메인은 doGet메서드

 - 클라이언트가 서블릿을 요청하면 웹서버에서 웹컨테이너로 넘어간다.


CGI

 - Servlet : Java기반 - html 출력 V2.5

 - JSP     : html기반  - Java code 삽입 V2.1

  ○ 예전에는  web container를 servlet engine으로 불렸었다.


[MVC패턴]

Container 

- component(JavaBeans) : 독립적인 업무를 처리하고 재사용가능한 P/G 모듈

- component 실행환경

 : Infra 기술들은 제공

 : component들이 실행하는데 공통적으로 필요한 Logic

ex) 


개발환경과 Tomcat 환경

<개발환경>


<Tomcat 환경>


Web.xml

- 배포(배치) 서술자(설명자)-Deployment Descripter(DD파일)

- Web Application에 대한 여러가지 설정을 해주는 xml기반의 파일

  º 서블릿 등록

  º 서블릿 요청을 위한 url 설정

  º 초기 파라미터 설정

  º 보안 설정

- 모든 web application은 하나의 web.xml 파일을 가여쟈 함. 

위치 : WEB-INF 폴더 아래

 º web.xml 파일의 설정들은 web application 시작시 메모리에 로딩된다.

  -> 수정을 할 경우 web application을 재시작해야 한다.

 º ROOT TAG : <webapp>  </webapp>


XML 작성시 주의점

1. 대소문자 구분
2. attribute값은 반드시 ""또는 ''으로 감싸야 한다.

3. 태그는 반드시 닫아야 한다.-content가 없는 tag의 경우


[HTML]

1.대소문자 구문안한다.

<br> = <BR>

 <p> = <P>


2. ""로 안감싸도 된다.

<font size="6"> = <font size=6>


3. 태그는 반드시 안닫아도 된다.

<br>같은 경우 단독으로 사용 가능

[XML]

1. 대소문자를 구분 한다.

<br>과 <BR>은 엄연히 다르다.


2. 무조건 "",''로 감싸야 한다.

<font size="6">, <font size='7'>


3. 컨텐트가 없다는 표시로 <br/>를 써줘야 한다.


<Servlet>

<servlet>-> 서블릿 객체 설정

서블릿 매핑-<servlet-mapping>

 - client의 요청url과 그 요청에 일할 서블렛 객체를 연결하나ㅡㄴ 설정

 - 구문

<servlet-mapping>

<servlet-name>이름</servlet-name> 일할 서블릿 객체의 이름

<url-pattern>패턴</url-pattern>클라이언트가 요청할 url 패턴


-url 패턴의 세가지 방법

1. 이름까지 정확하게 일치하도록 설정

<url-pattern>/[경로]/이름</url-pattern>


2. 디렉토리까지 일치하도록 설정

<url-pattern>/[경로]*</url-pattern>


3. 확장만 일치하도록 설정

<url-pattern>*.확장자</url-pattern>






<life-cycle or call back 메소드가 호출되는 시기>

 º init() - 서블릿 객체 생성 직후(딱 1번만 실행됨)

 º service() - client의 요청이 들어오면 실행

 º destory() - 서블릿 객체가 소멸되기 직전

- 이 모든 메소드들이 web Container가 호출한다.




ex)서비스 준비는 식당이 개점하기전 재료손질, 처옷등을 의미하고, service()는 식사, 판매, 배달등 서비스를 나타내며

     소멸단계는 폐점을 의미한다.




Service()

 - doGet()  -> Get 방식

 - doPost() -> Post 방식

Life-cycle(Service()) 대신 쓰인다.


Init(), Service(), Destroy() 확인하기

1. 우선 class를 새로 생성한다.


2. 다음과 같이 코딩한다.


3. xml도 다음과 같이 코딩하고 서버 Start한다.

4. 웹페이지에 다음과 같이 http://127.0.0.1:8088/myweb/lifecycle을 실행한다. 



5. 위 화면과 같이 아무것도 안나온다면 성공한것이다.



6. Console창을 확인해보면 다음과 같이 실행된것을 확인 할 수 있다. 



7. 웹페이지를 새로고침을 시도하여 서비스를 계속 요청한 상황이다.



8. 서버를 stop한 상태. 다음과 같이 Destory() 메소드가 실행된다.


Posted by 김마농

<Servlet 만들기>


1. 우선 Dynamic Web Project를 통해 새로 프로젝트를 만든다.



2. Servlet를 만들기 위해 Java Resources에 class 파일을 생성하도록 한다.



3. package는 servlet.hello

   클래명은 HelloServlet로 한다.



4. 다음과 같이 코딩해준다.


5. 이제 WebContent -> WEB-INF에 들어있는 web.xml을 선택하여 Source를 추가하도록 한다.



6. 소스는 다음과 같이 넣으면 된다.


7. 그리고 Server 탭에서 myweb을 Add시켜준후 서버를 재가동 시키도록 한다.



8. 익스플로러나 크롬에서 http://127.0.0.1:8088/myweb/helloServlet로 접속하여 다음 사진과 똑같이 나오는지 확인해야 한다.

만약 404에러나 500에러가 나올 경우 자신이 오타를 낸 경우이니 다시 확인하도록 한다.




<JSP 만들기>


1. WebContent 폴더에 JSP파일을 새로 생성한다.



2. JSP파일명은 Hello.jsp로 지정한다.



3. 그후 소스는 다음과 같이 넣으면 된다.


4. 익스플로러나 크롬에서 http://127.0.0.1:8088/myweb/Hello.jsp로 들어가서 제대로 나오는지 확인한다.



Posted by 김마농

HTTP - web

 - client : Web browser

 - server : web 서버


<요청>

요청방식 - Requset Method

 : Client가 서버에 요청하는 목적에 따라 7가지 방식이 있다.(Get, Post 등등)


 - Get

목적 : 서버가 가진 자원 요청

 - 요청의 기본 방식

 - 요청 파라미터 : URL 뒤에 붙어서 전송

 - URL?name=value&name=value.....

           QueryString이라 부른다.

 - 문자열 값만 전송 가능(binary file들 전송 불가능)

 - link -> Get방식, 주소창 입력 -> Get 방식 : 따로 언급하지 않으면 Get방식이다.

 - 보안 X : Web browser 주소창에 다 보인다.

ex)웹페이지에서 id랑 pw를 입력해서 로그인을 할 경우 http://login?name=id&pw=000

이렇게 아이디와 패스워드가 노출되게 된다.


 - Post

목적 : Client가 가진 자원을 서버로 보내는 것,

 - <form> 태그를 통한 요청만 가능

 ex)<form method="post">

 - 요청 파라미터 : 요청 body부분에 넣어 전송

 - URL뒤에 안보여 보안이 좋다.

 - 문자열, binary file 모두 전송 가능


요청라인 ex)Get /select/selectBeer.jsp HTTP/1.1


<응답>


응답코드

200번대- OK

400번대- HTTP 오류

404      - NOT FOUND

500번대 - CGI(Servlet/JSP) 프로그램 오류 (Exception)



URL

http://   www.wick.com:8088/  beer/Advice/select/   beerl.html

프로토콜          주소       포트    경로(path)                리소스



Web Application

 ○Web site : 정적 서비스

    -> Web 서버


  동적인 서비스(Client의 요청에 맞게 응답)

   -> CGI(Common Gateway Interface)-Perl, ASP, PHP, Servlet과 JSP(Web Container)

      : 동적 서비스를 만들기 위한 표준

      : HTTP Protocol의 서버단에서 실험되는 프로토콜

Posted by 김마농

HTML 코드

&nbsp; (공백을 준다)



-링크걸기


<h1~6> 헤드라인 : 볼드체, 엔터, 1(큰)~6(작은)글자 크기


<hr> : 라인


Style 적용하기


스타일 태그

-배경 변경




-border 설정


-margin 설정





위와 같이 margin을 설정해주면 30px만큼 바깥쪽으로 빈공간을 만들어주게 된다.


-padding 설정



위 그림에서 보면 검은색 사각형으로 범위를 지정해놨는데 파란색 border에서 안쪽 검은색 사각형사이에 30px만큼 거리가 

생긴것이다.


-Div 설정

div는 블록을 지정해서 엔터 효과를 준다



-Span 설정

블록을 지정해주는 태그


블록만 지정해주기 때문에 적용하면 아무것도 변하지 않는다.



-Id 설정




위와 같이 한 태그만 설정되어 적용된다.


-Class 설정



위와 같이 여러개를 설정해서 한꺼번에 스타일 효과를 적용 시킬수 있다.


- 줄 귿기 




위 그림과 같이 줄이 그어지게 된다.





Posted by 김마농

Java

- Java Me(모바일)

- Java SE(데스크탑, PC)

- Java EE(기업용 어플리케이션) : Web기반, 분산환경 지원

   [Servlet, JSP,EJB]


인터넷 : Network의 Network를 연결

- 전세계 컴퓨터를 Network로 묶은것


프로토콜 : 통신규약


HTTP: Hyper text transfer protocol


서버 : HyperText 기능이 있는 text file을 서비스

- 정적 서비스

- 가지고 있는 File만 서비스



HTML(Hyper Text Markup Language)
목적 : Display -> 내용(글)이 web browser상에서 어떻게 보여질지 지정
- web page 작성하기 위한 markup 언어
- 문서의 구조, 문서의 disply style(CSS)
- Tag 기반 언어
- Text, HTML 태그들로 구성되어 있다.(file의 확장자 : .html, .htm)

Elements(요소) : <start 태그명> 내용 </end 태그명>
내용안에 text, element 들어 갈 수 있다.


<start 태그 attribute="값"[attr="value"]>

attribute->태그에 추가 정보 명시


<font size="6" color="red">내용</font>


구성


태그의 예)

<font> : 폰트 관련 설정 -attribute

  size : 글자크기(1~6 : 3이 기본)

  color : 글자색(상수,#RGB)

  face : 글자체-폰트 지정


<p>문단(paragraph)테그</p> 

<br>엔터

<b> : 볼드

      <u> : 밑줄

 <i> : 이태리체



           




         

<ol> : 목록 순서 

  ex : <ol>

   <li>목록</li>

   ->1. 목록

 <ul> : 목록 순서 X

   <li>목록</li>

   ->점 목록

  <ol>,<ul> : 목록태그(순서가 있는, 순서가 없는)

   sub태그로 <li>를 가짐 - 목록에 들어갈 item을 지정하는 태그

Posted by 김마농

1. Tomcat을 다운 받기 위해 http://www.apache.org에 접속한다.



2. apache 사이트에서 밑으로 내려가면 Tomcat항목으로 들어간다.

3. 왼쪽 프레임에서 Tomcat 6.0이라고 써있는 항목으로 들어간다.


4. zip 파일을 선택하면 다운로드가 시작된다. 


   <설정 수정 전>


<설정 수정 후>


5. 다운로드가 완료되었으면 파일 압축을 풀고 적절한 곳에다가 위치 시킨다. 

apache-tomcat-6.0.35\conf\server.xml을 에디트 플러스나 메모장으로 열어서 위와 같이 설정을 수정한다.



6. 내 컴퓨터 -> 환경변수 항목으로 들어가 위와 같이 tomcat파일 경로를 적절하게 넣어준다. 



7. cmd창을 열어서 startup 명령어를 실행 시킨다. 

위 그림과 같이 실행된다면 환경변수 설정은 완료된것이다.

이제 이클립스에서 tomcat을 실행시킬수 있는 설정을 한다.



8. 적절하게 Workspace도 새로 만들어준다.



9. Window -> Preference에서 encod로 검색하여 위 그림과 같이 UTF-8로 수정한다.



10. CSS, HTML. JSP도 UTF-8로 수정한다.



11. Server탭에서 New Server Wizard를 실행하여 Tomcat 6,0을 지정하고 서버 호스트네임을 127.0.0.1로 수정한다.



12. Tomcat이 설치된 위치를 지정해준다.




13. Server탭에서 Tomcat v6.0을 더블 클릭해서 위와 같은 윈도우를 출력시킨 다음에 'Server Location'에서 2번쨰 라디오 버튼을 선택하고 

Deploy path에서 wtpwebapps라고 되어 있는 부분을 webapps로 바꾸어준다.



14. 그리고 서버를 가동시키고 http://127.0.0.1:8088을 실행시키도록 한다.



15. 위와 같은 화면이 나왔다면 이클립스와 톰캣 연동 성공한 것이다.


Posted by 김마농

여기서 고객이라는 이름을 가진 테이블을 작성한다.
고객의 속성은 대략 ID, 혈액형, 성별, 나이, 전화번호 정도가 있어서 바로 테이블 작성이 가능하지만 
테이블의 구조를 참고하여 설계한후 작성한다.

테이블의 구조는 위와 같이 구성되어 있다. 이것을 바탕으로 기본 설계를 한다.

테이블명 : Customer
이름 : 이름에 한글이 들어가기 때문에 varchar2로 정하고 한글로 기본 이름은 4자까지 있고, 한글은 3바이트를 차지하기 때문에 넉넉하게 20바이트를 준다.
나이 :  나이는 숫자이기 때문에 number로 주고 100살까지 고려하여 3자리를 한다.
전화번호 :  전화번호는 number로 주면 절대로 안된다. 010이나 032같은 핸드폰 번호와 지역번호를 입력할 경우 01과 32로 인식하기 때문에 varchar2로 선언해야 한다.
                 또한 010-123-4567이나 031-232-1231와 같이 "-"도 주어야 할 수 있으니 전부 더하여 13바이트를 준다.
혈액형 : 혈액형은 AB때문에 2바이트를 준다. 왜 char을 안쓰는 이유는 char로 주어줄 경우 일단 AB때문에 2바이트를 줘야 하고 A만 넣었을 경우 char은 고정 길이 문자                                     이기 때문에 빈 공백이 저장된다. 만약 A를 검색했을때 공백까지 포함해서 검색해야 하니 가변 길이를 쓰는 varchar2를 이용한다.
성별 : 성별은 남과 여 밖에 없기 때문에 M과 F로 표현하기로 하고 1바이트를 준다.

이제 테이블을 생성하도록 한다.


테이블 생성하기

1. 우선 오라클 메인페이지에서 SQL을 선택한다.

2. 그후 SQL 명령을 선택한다.

3. SQL 명령을 선택하면 밑과 같이 명령어를 칠수 있는 페이지가 출력된다. 
이제 여기서 모든 작업을 하는 것이다.

4. 이제 테이블을 작성한다. 테이블을 작성한후 실행을 선택한다.

테이블에서 컬럼을 작성할때는 [columm명 datatype명] [제약조건] 이렇게 해야 한다.
제약조건을 작성할때 Columm과 같이 쓸수 있지만 밑에 따로 작성할 수 있다.



위 그림과 같이 작성 할 수 있다.


제약조건을 걸 경우 위와 같이 작성을 하는데 

constraint [식별자] [제약조건] (columm명)이런 식으로 한다.

create table customer(
id varchar2(10),-- primary key 이렇게 바로 줄수 있다.
name varchar2(20) NOT NULL,
age number(3) NOT NULL,
tel varchar2(13) NOT NULL,
bloodtype varchar2(2),
gender char(1),
constraint customer_pk primary key(id), --customer_pk는 식별자
constraint customer_gender_ck CHECK(gender IN ('M','F')) --gender라는 값은 M과 F 두개의 값을 갖는다.
)

5. 실행을 선택하면 테이블이 생성되었다고 뜬다.

 


6. 테이블이 생성되었는지 확인할려면 SELECT * FROM tab을 입력하여 생성되었는지 확인한다.

7. 테이블 구조를 확인하기 위해서는 DESC 테이블명을 입력하면 된다.

8. 테이블 저장은 오른쪽 위에 있는 저장버튼을 선택하면 팝업창이 출력된다. 
팝업창에 이름을 적고, 그 테이블을 설명하는 글을 적어주면 된다.

9. 저장된지 확인할려면 밑쪽에 있는 메뉴바에서 [저장된 SQL]을 선택하여 확인하면 된다.

Posted by 김마농

테이블의 형태

- 테이블 데이터베이스의 기본적인 테이더 저장 단위

- 테이블은 시스템내에서 독립적으로 사용되길 원하는 엔티티를 표현한다.

- 컬럼(속성)과 로우(튜플, 레코드)로 구성되어 있다.
  로우(튜플) : 표현하고자 하는 값
  컬럼 : 여러 레코드중 하나의 속성값

- Domain : System에서 표현하고자 하는 Data

 -테이블은 다른 테이블과의 관계를 표현할 수 있다.
 ->외래키 사용

관계형 데이터 베이스

- Domain을 다른 Domain들과 관계를 맺어(참조) Data표현을 확장한다.

- 데이터베이스 : 지속적으로 유지, 관리되어야 하는 데이터들의 집합.

- 데이터베이스 관리시스템 : Database Management System으로 데이터베이스를 관리해 주는 시스템을 말한다.
  ex) 오라클 DBMS, MS-SQL, DB2 ㄷ으

 - 관계형 데이터베이스 : 데이터들을 여러항목(컬럼)의 집합으로 표현하는 테이블 형태로 데이터를 관리하는 방식


테이블 생성
- 대소문자를 안가리기 때문에 섞어서 쓸수 있다.

Table은 컬럼으로 이루어져 있다.

CREATE TABLE table_name)
( columm명 datatype [제약조건]
  [, columm datatype . . .]
  [,제약조건]
)

ex)
CREATE TABLE customer
( id varchar2(10),
  name varchar2(50),
  age number(3),
)
---> customer라는 테이블을 생선한다.
        id는 varchar2 데이터타입이고 10바이트를 이용한다.
        name은 varchar2 데이터타입이고 50바이트를 이용한다.
        age는 number 데이터타입이고 3자리까지 사용할 수 있다.


 

VARCHAR2(n)
-가변 길이랑 VARCHAR2(5)라 설정하고 "abc"값을 넣었다고 가정하면

이렇게 데이터가 삽입되고 뒤에 2자리가 남게 된다. 이때 뒤에 있는 빈 공백을 사용하지 않으니

잘라버려서 3자리로 만든다.

CHAR(n)
- char(5)로 설정하고 "abc"를 넣을때에는

위 그림과 같이 abc가 각각의 자리에 위치하고 남는 빈자리는 공백으로 채워주어서 무조건 5글자를 유지한다.

 NUMBER(p,s)
  - number  : 정수(무한대)
  - number(n) : 정수 (n자리수)
     ex)number(5) -> 00000 ~ 99999까지 표현한다.
  - number(p,s) : 실수(총단위 p, 소숫점 이하 S)
     ex)number(5,2) -> 000.00 ~ 999.99까지 표현한다.


Posted by 김마농