16// context path="" debug=" 에러메세지 설정 (0~5)" reloadable = " 서블릿파일을 만들어서 특정 웹어플리케이션 디렉토리에 같다 놓으면 url을 실행하는데 서블릿 파일이 바꼈을때 그것을 인식하도록 하려면 true로 설정해야함 ( 개발할떄는 true, 서비스할때는 false로)"실제로 만든 웹어플리케이션을 톰캣과 연결하는 작업<-Eclipse Plugin이 자동으로 설정

17.환경변수 설정도 plugin이 자동으로 해줌

18.dd파일 작성(web.xml이 DD파일) 배치기술서의 약자. Option File이므로 있어도 되고 없어도 됨. WEB-INF디렉토리에 꼭위치.

DD파일은 부모자식의 관계로 작성. 부모는 C:\apache-tomcat-6.0.18\conf\web.xml파일 열어보면 여러 가지 설정

<session-config>

<session-timeout>30</session-timeout><--세션이 정보를 가지고 있는 시간이 30분. 작업안하고 30분이 흐르면 세션에서 정보를 잃어버려 로그아웃

</session-config>

<welcome-file-list>

<welcome-file>index.html</welcome-file><--WEB-INF\lib\web.xml 에 설정을 해주지 않으면 자동으로 dd파일에 있는 설정을 따름. 복사해서 web.xml 붙여넣고 main.html이라 하면 그것을 따름.

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

19. step7 : TOMCAT 5부터는 서블릿을 호출할수 없으므로 파일을 수정해야함. C:\apache-tomcat-6.0.18\conf\web.xml 파일에 115~ 127라인의 주석을 해제, 365~370라인 주석해제.

web.xml 파일 수정후에는 tomcat을 반드시 리스타트 해야함.

step 7-1 : TOMCAT 6부터는 권한부여 해제까지 해줘야됨.

C:\apache-tomcat-6.0.18\conf\context.xml -->19번라인에<Context reloadable="true" privileged="true">

서블릿은 실행시키는것이 아니고 웹프로그램은 웹어플리케이션에 배치를 해두면 자동으로 객체생성후 서비스해줌. 접근은 웹브라우저로..http://localhost:8080/servlet/패키지명.서블릿명

20.서블릿을 서비스 받으려면 클라이언트는 웹브라우저에서 주소로 접근 -> 서블릿 컨테이너에 요청(1. 서블릿객체생성 2.doGet메서드에 리퀘스트 리스폰스 객체 생성 3. 바로 서비스하는것이 아니라 멀티스레드 방식으로 생성 한후 서비스 메스드 호출 4. 클라이언트가 GET방식으로 호출하면 doGet호출 POST방식이면 doPost 호출 5. 서비스는 서블릿이 상속한 HttpServlet가 가지고 있는메서드 GET인지 POST인지 구분해줌. 6. 리스폰스를 다시 서블릿컨테이너에 보내주면 컨테이너에서 다시 클라이언트에 있는 브라우저로 보내서 브라우저에서 파싱해서 클라이언트가 볼수있음.)

같은 페이지를 클라이언트가 다시요청(refresh)하면 서블릿 객체는 이미 만들어져있으므로 기존에 있는 객체 사용. Thread등 나머지는 다시 생성

21. http는 요청 응답후 관계가 끊어짐. 여러명이 따로 들어오면 커플링이 바로바로 끊어져있으므로 서버에 무리 X TCP/IP는 커플링 유지.

커플링이 끊어지면 클라이언트쪽의 정보까지 잃어버리게 되므로 정보를 session과 cookie에 저장. 서버는 session, 클라이언트쪽에 저장은 cookie

request = HTTP메서드(GET, POST ~), URL주소, 폼 파라미터

response = 상태코드 (CGI코드-> 404 NotFound같은것.) 300 인증 ERROR 500 서버ERROR

컨텐츠 타입(그림, 텍스트..)

컨텐츠(html, 코드..)

22. GET과 POST의 차이는 파라미터의 위치 차이( post에서는 파라미터가 바디에 존재)

GET : 요청헤더에 accept에 브라우저에서 인식할수있는 컨텐츠 타입도 같이 보냄 (요청헤더에는 용량이 정해져있음(보통 700byte) 파라미터가 길어져서 용량을 넘어갈 경우 에러) 장점: 코딩하기 쉬움 // 단점:데이터 전송한계, 데이터가 보임. ID pwd는 보안의 이유로 POST로

li <a href = 'test.jsp?id=syh1011'>여기</a>

POST : 메시지 몸체에 파라미터 포함. (바디의 용량은 무한대이므로 내용이 길 경우 (ex: 게시판) 포스트방식이 유리)

단점 : 코딩하기 어려움(반드시 <form method='post'> 그 외 모든 것이 장점

li <a href='javascript:goJsp()'>여기</a>

<form name='f' method='post' action='test.jsp'>

<input type='hidden' name='id' value='syh1011'/>

</form>

<script>

function goJsp(){

f.submit();

}

</script>

25. HTTP응답 응답하면서 Connection : close 커넥션이 응답후 끊김.

//톰캣 get방식 한글깨질때

톰캣 - conf - server.xml 71라인

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding='utf-8' />

26. servlet alias

<form name='f' method='get' action='/servlet/get.GetServlet'> <--밑줄부분을 Get만으로 접근가능하게 하고싶을때

web.xml에서

<servlet>

<servlet-name>get</servlet-name>

<servlet-class>get.GetServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>get</servlet-name>

<url-pattern>/Get</url-pattern>

</servlet-mapping>

추가

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

*url-pattern 3가지

1) exactly matching - 반드시 “/"로 시작하고, 문자로 끝나야 한다.(우선순위 上)

예) <url-pattern>/Get</url-pattern>

2) directory matching - '' "*"로 ''

예) <url-pattern>/Get/*</url-pattern>

3) extension matching - "/"로 시작하면 안되고, 확장자로 끝나야 한다.

예) <url-pattern>*.do</url-pattern>




27. Servlet Life - Cycle

Dose_not_exit : 존재하지 않는상태. servlet은 클라이언트의 요청이 처음 있을때 생성됨. 아무도 요청하지 않은상태. 클라이언트의 요청이 처음 있으면 init() or init(~)메서드 호출하고 Initialized 상태가 됨. destroy()메서드를 호출하고 객체가 사라짐. (servlet에 있는 멤버변수를 초기화하여야 하는데 new라는 것으로 생성하는것이 아니고 invorker에 의해 생성되는 것이므로 초기화할수 없음. 그래서 init()메서드 호출을 하여 멤버변수를 초기화함.)

28. Client의 처음 request가 있을때 servlet생성되면서 default 생성자 생성 그후

init() 최초의 클라이언트의 요청이 있을때 or servlet container의 호출할 경우Servlet객체 생성

그후에 service()메서드를 호출하여 클라이언트의 request가 Get인지 Post인지 판단하여 doGet() or doPost()메서드 호출.

destory() 서블릿 삭제시 호출. 1) 일정기간 경과시 삭제. 2) 서블릿파일을 재컴파일하여 메모리에 reload될때 3)Tomcat죽을때 언로드 하면서 서블릿 삭제(Shut Down을 하여야 서블릿삭제)

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

DBCP

톰캣 버전따라 설정방법 다름.

C:\apache-tomcat-6.0.18\conf\server.xml 파일에

<Context path="" reloadable="true" docBase="C:\eclipse\workspace\web_app"

workDir="C:\eclipse\workspace\web_app\work" >

<Resource name="jdbc/Oracle" auth="Container"

type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@localhost:1521:orcl"

username="test" password="0105" maxActive="20" maxIdle="10"

maxWait="-1"/>

</Context>변경

//jar파일 추가

//web.xml 에 추가

<resource-ref>

<description>Oracle Connection</description>

<res-ref-name>jdbc/Oracle</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

//DB test/0105 계정에 member테이블 생성

create table member(

id varchar2(20) not null,

name varchar2(20),

cellphone varchar2(11),

register varchar2(10),

hobby varchar2(100));

util/ConnLocator 클래스를 만들어서 이클래스에서 Connection객체를 얻어옴.

신고

'programing > JAVA' 카테고리의 다른 글

File Up & Down  (0) 2009.06.02
Paging  (0) 2009.06.02
FileUtil  (0) 2009.06.02
JSP ibatis+Struts2  (0) 2009.06.02
ConnectionPool  (0) 2009.06.02
Servlet & JSP 1'  (0) 2009.04.15
Posted by 대절님

댓글을 달아 주세요



티스토리 툴바