PowerPoint Presentation

Size: px
Start display at page:

Download "PowerPoint Presentation"

Transcription

1 Servlet & JSP 기초 - 강사김현오

2 목차 1. Web 기본개념 2. Servlet 3. 세션관리 4. JSP 5. JSTL 6. Servlet 활용기술 7. 웹프로그래밍전략

3 1. Web 기본개념 1.1 Web 기본개념 HTTP 프로토콜 HTTP Method URL TCP 포트 웹서버 CGI

4 HTTP 프로토콜 웹에서만사용하는프로토콜 TCP/IP를기반으로하여, TCP/IP를이용해서한지점에서다른지점으로요청과응답을전송 TCP : 한쪽노드에서다른쪽노드로파일을보내기위한프로토콜 IP : 한호스트에서목적지호스트까지패킷을옮기고이동하기위한기반프로토콜 HTTP의구조는 요청 / 응답의끊임없는주고받음 이라고말할수있다. 요청 (request) 의주요구성요소 HTTP 메소드 접근하고자하는페이지 (URL) 폼파라미터 응답 (response) 의주요구성요소 상태코드 ( 요청이성공했는지아닌지등등 ) 컨텐츠타입 ( 텍스트, 그림, HTML 등 ) 컨텐츠 (HTML 코드, 이미지등 ) 요청 응답 클라이언트 서버 3

5 HTTP Method HTTP Method 는 HTTP 프로토콜을사용하여서버로요청을보내는방법이다. GET - URL 을이용하여자원을요청 POST - Request 에첨부한 Body 정보를서버로전송 HEAD - 헤더정보만요청. 요청한 URL 로부터정보는빼고헤더정보만가져옴 TRACE - 요청한메시지의루프백테스트를요청. 서버에서무엇을받았는지알고싶을때테스트목적으로사용 PUT - Body 정보를요청한 URL 로저장 DELETE - URL 에해당하는자원을삭제 OPTION - 요청한 URL 이응답할수있는 HTTP 메소드가무엇인지요청 4

6 HTTP GET GET은 HTTP 메소드중가장단순한것, 단순히서버에게자원을요청하는것뿐 (HTML, 이미지, PDF 등등 ) GET의데이터전송방식은브라우저주소란에기입하는 URL 뒤에붙이는방식 GET으로보낼수있는글자수는제한이있음 HTTP 메소드 웹서버상자원에대한경로요청파라미터 GET /select/selectbeertaste.jsp?color=dark&taste=malty Accept:image/webp,*/*;q=0.8 Accept Encoding:gzip,deflate,sdch Accept Language:ko KR,ko;q=0.8,en US;q=0.6,en;q=0.4 요 Cache Control:max age=0 청 Connection:keep alive 헤 Host:sstatic.naver.net 더 If Modified Since:Tue, 12 Oct :50:21 GMT If None Match:" b4d140" Referer: User Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/ (KHTML, like Gecko) Chrome/ Safari/

7 HTTP POST 서버에좀더복잡한요청을하기위한메소드 요청파라미터에대한길이제한이없음 HTTP 메소드 웹서버상자원에대한경로 POST /advisor/selectbeertaste.do Accept:image/webp,*/*;q=0.8 Accept Encoding:gzip,deflate,sdch Accept Language:ko KR,ko;q=0.8,en US;q=0.6,en;q=0.4 요 Cache Control:max age=0 청 Connection:keep alive 헤 Host:sstatic.naver.net 더 If Modified Since:Tue, 12 Oct :50:21 GMT If None Match:" b4d140" Referer: User Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/ (KHTML, like Gecko) Chrome/ Safari/ 파라 color=dark&taste=malty 미터 6

8 HTTP Response 서버가클라이언트로보내는응답 헤더와몸체로구성 헤더에는사용된프로토콜이뭔지, 보내준요청이성공했는지, 몸체에포함된컨텐츠의종류는무엇인지등이들어있음 몸체에는 HTML과같은컨텐츠가들어있음 Connection:Keep Alive 응 Content Length:20658 답 Content Type:text/html;charset=UTF 8 헤 Date:Sun, 02 Feb :04:19 GMT 더 Keep Alive:timeout=5, max=99 Server:Apache Coyote/1.1 Content-Type 의값을보통 MIME 타입이라고한다. MIME 타입이란브라우저에게화면에보여줄데이터형식을알려주는역할을함 컨텐츠 <html> </html> 7

9 URL 웹상에있는모든자원에대한주소 : 서버와대화하기위하여사용하는커뮤니케이션프로토콜 : 서버주소, 인터넷상에유일한주소 80 : URL 주소의옵션, 보통 80 포트는생략함 /course/java/ : 서버에서자원의위치 generic.html : 요청된컨텐츠이름 8

10 TCP 포트 서버하드웨어상에서돌아가는소프트웨어를구별하기위한 16비트숫자값 포트로쓸수있는값의범위는 0~65535 포트는서버하드웨어상에서돌아가는특정소프트웨어에대한논리적인연결을나타냄 대개 0번에서 1023번까지 TCP 포트는이미널리알려진서비스를위하여예약되어있음 포트란것이있기때문에서버는클라이언트가지금어느애플리케이션에접속하기를원하는지알수있음 Telnet SMTP FTP Time 서버 HTTP HTTPS POP3 9

11 웹서버 클라이언트로부터요청을받아요청한것을넘겨주는일을하는것 웹서버는정적인페이지만서비스함 웹서버는단지파일을찾아서있는그대로클라이언트에게넘겨주는일만함 요청한자료를찾지못하면 404 Not Found 메시지를보냄 동적인컨텐츠생성이불가능하다. Apache는유명한오픈소스웹서버 10

12 CGI CGI(Common Gateway Interface) 는초기웹프로그램개발에사용된개발방식이다. 동적인컨텐츠생성을도와주는도우미애플리케이션 대부분 CGI 프로그램은펄 (Perl) 스크립트로작성한다. 그외 C, 파이썬, PHP 등이있다. CGI 방식의문제점 각각의클라이언트호출에따른개별프로세스를생성한다. 접속자만큼프로세스가생성되므로시스템부하가많이생긴다. 윈도우에서 C언어등으로만들어진 CGI 애플리케이션은리눅스에서사용할수없다. 11

13 2. Servlet 2.1 Servlet 기본 2.2 Servlet 컨테이너 2.3 Request, Response 2.4 Redirect vs. Request Dispatch Servlet 개념 Servlet 구현

14 Servlet 소개 정의 서블릿은자바를사용하여웹페이지를동적으로생성하는서버측프로그램을말하며흔히 서블릿 이라한다. 자바를이용하여웹애플리케이션을만들기위해제공되는기술이다. 장점 자바언어를이용해서동적웹애플리케이션을구현할수있다. 자바를사용하기때문에플랫폼에독립적이다. 프로세스기반이아닌스레드기반이기때문에좀더효과적으로멀티태스킹을지원한다. 단점 화면에표현될 HTML 코드를프로그램적으로작성해야한다. 서비스하기전에반드시컴파일을해야한다. 이러한단점을보안하기위해서 JSP가탄생했다. 웹애플리케이션개발시서블릿을사용하면좋은점 컨텐츠와비즈니스로직을분리할수있다. 컨트롤러와뷰역할분담으로인해웹디자이너와개발자간의원활한작업이가능한다. 유지보수가용이하다. 기능확장이용이하다. JSP 페이지에 HTML, CSS, 자바스크립트와자바소스코드가뒤섞이는스파케티소스를막을수있다. 13

15 Servlet 시작하기 서블릿을개발하고서비스하기위해서는 JVM, 자바서블릿 API, 서블릿컨테이너, 웹서버가필요하다. 자바서블릿 API 서블릿은응답 / 요청모델에서작동하도록디자인되었다. 요청 / 응답모델에서클라이언트는서버에게요청메시지를보내고서버는이에대한응답으로메시지를돌려보낸다. - 서버란, 웹브라우저클라이언트로부터 HTTP 요청을받아들이고, 그 HTTP 요청에응답하는컴퓨터프로그램을말한다. - HTTP 란, WWW 상에서클라이언트와서버사이에서정보를주고받을수있는프로토콜이다. 주로 HTML 문서를주고받을데사용된다. - WWW 란, 인터넷에연결된컴퓨터들을통해사람들이정보를공유할수있는전세계적인정보공간을말한다. 자바서블릿 API 는순수자바로되어있으면서클라이언트로부터 HTTP 요청을받아들이고그요청에응답하는메커니즘을가지고있다. 그러므로서블릿은클라이언트의요청을받아들여영속성을가지는데이터저장소를이어주는중간계층에위치한다. javax.servlet 패키지, javax.servlet.http 패키지 서블릿을생성할경우 javax.servlet.http.httpservlet 상속받게된다. 서블릿컨테이너 서블릿을동작시키기위한실행환경을의미한다. 또한서블릿컨테이너는서블릿을생성, 호출, 소멸하는등의생명주기를관리한다. 서블릿컨테이너는 TCP/IP 연결을생성하고 HTTP 프로토콜을해석하는과정을수행하고있어웹프로그래머들이웹을쉽게구현할수있게지원해준다. 대표적인서블릿컨테이너 ( 웹서버에포함되어있음 ) - 아파치톰캣 (Apach Tomcat) - 제티 (Jetty) - 레진 14

16 서블릿컨테이너설치 (jetty) 이클립스의플러그인으로 jetty 설치

17 서블릿컨테이너설정 (jetty) Jetty 서버설정확인

18 서블릿컨테이너실행 (jetty) 웹프로젝트를 jetty 서버에빌드및배포, 서버구동

19 웹프로젝트생성 Dynamic Web Project 생성 18

20 웹프로젝트설정 Dynamic Web Project 생성 Project Name : Context Root : Context Directory : WebContent 19

21 웹프로젝트구조 Dynamic Web Project 생성완료 WebContent 폴더 웹루트폴더 JSP, HTML 등의파일위치 WebContent/WEB INF 폴더 xml, properties 등의설정파일위치 lib 폴더 라이브러리파일위치 서블릿 jar 추가 src 폴더 JAVA 소스파일위치 web.xml 웹프로젝트의 Deployment Descriptor( 배포설명자 ) Servlet, JSP 매핑, 필터등정의 20

22 Context 에대한이해 하나의 Context( 물리적인디렉토리와개념적인이름 ) 는하나의웹애플리케이션과완벽하게일치하는개념이다. Context : Context Directory 와 Context Path 웹애플리케이션은클라이언트가접근할수있는모든자원 ( 정적또는동적컨텐츠 ) 을 Context 디렉토리아래둔다. Context 디렉토리명은설정이가능하나서버마다달라질수있다. 현재우리는 WebContent 라는물리적인디렉토리가 Context 디렉토리에해당된다. Context Path 는클라이언트가웹애플리케이션으로진입하는시작점으로볼수있다. Context Path 는하나의웹애플리케이션의논리적인이름 ( 경로이름 ) 을의미한다. 이름이없어도상관없다. 클라이언트가웹애플리케이션에접근시, 으로접근한다면 Context Path 는 이다. 기본적으로서버에접근하기위해서는서버 IP 와포트번호가필요한데, 그뒤에 Context Path 가붙는다. Context Path 는위 Context Directory 와맞닿아있다. 21

23 서블릿클래스들간의관계 서블릿관련클래스및인터페이스상속관계 <<interface>> <<interface>> <<interface>> <<interface>> javax.servlet javax.servlet javax.servlet java.io ServletContext ServletConfig Servlet Serializable <<interface>> ServletRequest javax.servlet GenricServlet javax.servlet <<interface>> javax.servlet ServletResponse <<interface>> javax.servlet.http HttpServletRequest HttpServlet javax.servlet.http <<interface>> javax.servlet.http HttpServletResponse 22

24 Generic Servlet 추상클래스 서블릿관리에필요한기능을미리구현하여제공 서블릿을위한어댑터역할 javax.servlet.genericservlet void destroy() java.lang.string getinitparameter(java.lang.string name) java.util.enumeration<java.lang.string> getinitparameternames() ServletConfig getservletconfig() ServletContext getservletcontext() java.lang.string getservletinfo() java.lang.string getservletname() void init() void init(servletconfig config) void log(java.lang.string msg) void log(java.lang.string message, java.lang.throwable t) abstract void service(servletrequest req, ServletResponse res) 23

25 HTTP Servlet 추상클래스 일반적인서블릿을의미함 Generic Servlet 상속 Service 메서드를 HTTP 프로토콜요청에적합하게재구현 javax.servlet.httpservlet void dodelete(httpservletrequest req, HttpServletResponse resp) void doget(httpservletrequest req, HttpServletResponse resp) void dohead(httpservletrequest req, HttpServletResponse resp) void dooptions(httpservletrequest req, HttpServletResponse resp) void dopost(httpservletrequest req, HttpServletResponse resp) void doput(httpservletrequest req, HttpServletResponse resp) void dotrace(httpservletrequest req, HttpServletResponse resp) long getlastmodified(httpservletrequest req) void service(httpservletrequest req, HttpServletResponse resp) void service(servletrequest req, ServletResponse res) 24

26 Servlet 생성 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; // 서블릿중 99% 는 HttpServlet 를상속한다. public class ch2servlet extends HttpServlet { } // 실제프로젝트에서는서블릿중 99% 는 doget() 과 dopost() // 컨테이너가생성한 Request와 Response 객체참조를넘겨받는곳 protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter writer = response.getwriter(); writer.append("<html><body>"); writer.append("<h2>ch2servlet doget</h2>"); writer.append("</body></html>"); } 25

27 배포서술자 (Deployment Descriptor) web.xml 서블릿과 JSP 를어떻게실행하느냐에관한많은정보들이들어감. <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi=" xmlns=" xmlns:web=" xsi:schemalocation=" id="webapp_id" version="3.0"> <display-name>my-servlet</display-name> <! <servlet> 항목들을보면이컨테이너가관리하는웹애플리케이션에는어떤것들이있는지알수있다. --> <servlet> <servlet-name>helloservlet</servlet-name> <servlet-class>com.kosta.web.helloservlet</servlet-class> </servlet> <!-- 런타임시요청이들어오면컨테이너는 <servlet-mapping> 항목을검색한다. --> <servlet-mapping> <servlet-name>helloservlet</servlet-name> <url-pattern>/helloservlet</url-pattern> </servlet-mapping> </web-app> 26

28 2. Servlet 2.1 Servlet 기본 2.2 Servlet 컨테이너 2.3 Request, Response 2.4 Redirect vs. Request Dispatch Servlet 요청처리프로세스 Servlet 컨테이너역할 Servlet 라이프사이클 HTTP 메서드종류

29 Servlet 요청처리프로세스 클라이언트 ( 브라우저 ) 가 HTTP 요청 웹서버는해당요청을받아들임 (GET / POST) 웹서버는요청을컨테이너에게전달 컨테이너는 HTTP Request, HTTP Response 객체를만들어서블릿 dopost() 나 doget() 메소드중하나를호출 서블릿은요청에대한처리 요청결과 ( 응답 ) 는서블릿 > 컨테이너 > 웹서버 > 클라이언트 ( 브라우저 ) 에게전달됨 Server 컨테이너 응답응답 요청 클라이언트 ( 브라우저 ) 요청 응답 웹서버 요청 응답 JSP 요청 Servlet 28

30 Servlet 컨테이너가주는이점 웹서버와서블릿의커뮤니케이션지원 개발자가소캣생성, 포트리스닝등복잡한부분을직접구현할필요없음 라이프사이클관리 서블릿클래스의생성, 초기화, 호출, 소멸을관리함 개발자가직접생성하고초기화할필요가없음 멀티스레딩지원 요청이들어올때마다새로운스레드를생성하여처리 다중요청에대한스레드생성및운영에대해서관리 선언적인보안관리 보안에관련된내용을서블릿내부에하드코딩할필요없음 XML 설정을통해컨테이너가보안관리하도록함 JSP 지원 29

31 Servlet 컨테이너 서블릿이요청되면컨테이너는 HttpServletRequest, HttpServletResponse 객체생성 요청을처리할해당서블릿스레드를생성하여 Request, Response 객체를전달 컨테이너는서블릿의 service() 호출 요청방식에따라 doget() 또는 dopost () 호출 처리가끝나면컨테이너는 Response객체를 HttpResponse로전환하여클라이언트로전송 마지막으로서블릿스레드와 Request, Respose 객체는소멸 Server 컨테이너 컨테이너 클라이언트 ( 브라우저 ) 요청 응답 웹서버 요청 응답 응답응답 JSP Servlet 요청 요청 요청 request Servlet init() 응답 response response Servlet service() doget() dopost() 30

32 Servlet 라이프사이클 (1/2) 컨테이터에의해서호출되고소멸되는서블릿의라이프사이클 컨테이너서블릿클래스서블릿객체 클래스로딩 서블릿인스턴스 ( 생성자실행 ) 기본생성자실행생성자를오버로딩하지않도록한다. init() service() destory() 최초한번초기화시호출된다. 클라이언트의요청을핸들링한다. 요청마다새로운스레드에서실행된다. 서블릿이죽기전에가지고있는자원들을깨끗이정리한다. init() 처럼한번만호출된다. 31

33 Servlet 라이프사이클 (2/2) 주요메서드 init() 컨테이너가서블릿인스턴스를생성한후호출 클라이언트의요청을처리하기전서블릿을초기화하는기능 필요한경우재정의가능 ( 예 : 데이터베이스접속 ) init() 메서드가호출되는시점은서버마다다르게동작할수있다. 서버가구동하기시점일수도있고서블릿이최초에호출되는시점일수도있다. service() 컨테이너가클라이언트요청에대한서블릿인스턴스를생성 / 초기화한후호출 init() 메소드이후에호출됨 요청의 HTTP 메소드 (GET/POST 등 ) 를참조하여 doget() 또는 dopost() 를호출하는기능 재정의하지않음 ( 상속받은상위클래스의 service() 메소드를그대로사용 ) doget() / dopost() service() 메소드에의해서호출됨 요청을처리하기위한로직을구현 반드시재정의해서사용 destory() 요청처리가끝나면컨테이너가호출 재정의하지않음 32

34 HttpServlet 의메소드와 HTTP 메소드 HttpServlet Class Method HTTP Method void doget(httpservletrequest, HttpServletResponse ) GET void dopost(httpservletrequest, HttpServletResponse ) POST void doput(httpservletrequest, HttpServletResponse ) PUT void dodelete(httpservletrequest, HttpServletResponse ) DELETE 33

35 2. Servlet 2.1 Servlet 기본 2.2 Servlet 컨테이너 2.3 Request, Response 2.4 Redirect vs. Request Dispatch HttpServletRequest HttpServletResponse ContentType

36 HttpServletRequest Servlet 에서는 HttpServletRequest 객체로부터다양한요청정보를처리한다. 다음은 HttpServletRequest 인터페이스의메서드이다. request.getheader() : 요청정보의헤더정보를반환한다. request.getmethod() : 요청정보의 HTTP Method 정보를반환한다. request.getparameter() : 요청시정보의이름으로요청값을반환한다. request.getparametervalues() : 요청시같은정보의이름으로요청값들을배열로반환한다. requet.setcharacterencoding() : 요청정보의인코딩을설정한다. <<interface>> ServletRequest <<interface>> HttpServletRequest 이외에도다양한메서드가있으므로 Servlet API 를살펴본다 doc/servletapi/ 35

37 HttpServletResponse Servlet 에서는 HttpServletResponse 객체로부터다양한응답정보를처리한다. 다음은 HttpServletResponse 인터페이스의메서드이다. <<interface>> response.setcontenttype() : 클라이언트로보내는컨텐츠타입을설정한다. response.getwriter() : PrintWriter 객체를반환하여클라이언트에게전달할텍스트데이터를작성한다. ServletResponse response.getoutputstream() : ServletOutputStream 객체를반환하여클라이언트에게전달할바이너리데이터를작성한다 response.setstatus() : 응답에대한상태코드를지정한다. 이외에도다양한메서드가있으므로 Servlet API 를살펴본다 doc/servletapi/ <<interface>> HttpServletResponse 36

38 ContentType ContentType 은 HTTP 응답에반드시포함되어야하는헤더정보 브라우저에게지금반환하는데이터가무엇인지를미리알려줌 PDF : PDF 보기프로그램을내부적으로실행 VIDEO : 비디오플레이어를실행 파일다운로드를위해바이트정보저장 setcontenttype() 메소드를이용해 ContentType 을설정한후출력스트림에데이터기록 일반적인 MIME TYPE text/html application/pdf video/quicktime application/java image/jpeg application/jar application/octet stream application/x zip 37

39 Servlet 응답정보에저장된정보조회하여출력하기 CourseServlet.java public class CourseServlet extends HttpServlet protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter writer = resp.getwriter(); writer.append("<html><body>"); writer.append("<h2>courseservlet doget</h2>"); EducationProcess process = new EducationProcessImpl(); CourseDto coursedto = process.getcoursebyname(" 청년취업과정 "); int courseid = coursedto.getcourseid(); writer.append(string.format("<h3>%s, %s<h3>", courseid, coursedto.getname())); for (SubjectDto subjectdto : coursedto.getsubjects()) { writer.append(string.format("<p>%s, %s<p>", subjectdto.getsubjectid(), subjectdto.getname())); } } writer.append("</body></html>"); writer.close(); } 38

40 Servlet 요청정보로저장된정보조회하여출력하기 CourseServlet.java public class CourseServlet extends HttpServlet protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter writer = resp.getwriter(); writer.append("<html><body>"); writer.append("<h2>courseservlet doget</h2>"); } } String name = req.getparameter("name"); EducationProcess process = new EducationProcessImpl(); CourseDto coursedto = process.getcoursebyname(name); int courseid = coursedto.getcourseid(); writer.append(string.format("<h3>%s, %s<h3>", courseid, coursedto.getname())); for (SubjectDto subjectdto : coursedto.getsubjects()) { writer.append(string.format("<p>%s, %s<p>", subjectdto.getsubjectid(), subjectdto.getname())); } writer.append("</body></html>"); writer.close(); 39

41 2. Servlet 2.1 Servlet 기본 2.2 Servlet 컨테이너 2.3 Request, Response 2.4 Redirect vs. Request Dispatch Redirect 와 Request Dispatch Redirect Request Dispatch

42 Redirect vs. RequestDispatch 사용자의요청을다른 URL 에서처리하도록방향을바꿀수있음 사용자의요청을다른컴포넌트 ( 대부분 JSP) 에게처리하도록방향을바꿀수있음 Redirect 요청을받은서블릿은해당요청이다른 URL 에서처리해야할대상이라면 Response 객체의 sendredirect() 호출 HTTP Response 에는상태코드 302, Location 헤더에새로운 URL 정보를포함 브라우저는응답을받은후상태코드 (302) 를확인하고 Location 헤더에설정된 URL 로새로운요청 사용자도브라우저에변경된 URL 을확인할수있음 Request Dispatch 요청을다른방향으로위임하는작업이서버에서일어남 요청을받은서블릿은해당요청이다른컴포넌트 (JSP) 가처리해야할대상이라면 dispatch forward 호출 브라우저의 URL 은바뀌지않기때문에사용자는 Dispatch 된응답인지를알수없음 41

43 Redirect 사용자는 /user 로요청을했지만브라우저의응답은 /member 로변경됨 브라우저의 URL 이변경되어있음을확인 UserServlet MemberServlet 42

44 RequestDispatch 사용자는 /user 로요청을했지만응답은 MemberServlet 의응답 브라우저의 URL 은변경되지않음 UserServlet MemberServlet 43

45 3. 세션관리 3.1 세션개요 3.2 세션관리 3.3 쿠키 Session 개요

46 Session 개요 세션은다중요청간대화정보를유지하기위한방법이다. 클라이언트가제일처음요청을보낼때, 컨테이너는클라이언트의유일한세션 ID 를생성한다. 클라이언트접속시세션 ID 로서로다른클라이언트를구분한다. 서블릿컨테이너 사용자 A 요청 응답 Servlet A 새로운스레드생성 HttpSession A 똑같은클라이언트똑같은서블릿서로다른요청서로다른스레드똑같은세션 사용자 B 요청 새로운스레드생성 스레드 A 스레드 B HttpSession B 서로다른클라이언트똑같은서블릿서로다른요청서로다른스레드서로다른세션 45

47 3. 세션관리 3.1 세션개요 3.2 세션관리 3.3 쿠키 HttpSession 사용방법 Session 제거 Session 타임아웃설정

48 HttpSession 사용방법 (1/3) Response 객체에세션쿠키보내기 HttpSession session = request.getsession(); //Request 로부터세션을리턴받는다. Request 객체로부터세션 ID 가져오기 HttpSession session = request.getsession(); // 보내메서드와동일함 isnew() : 세션이새로만들어졌는지알수있는메소드 HttpSession session = request.getsession(); // 보내메서드와동일함 if(session.isnew()) { out.println( This is a new session. ); } else { out.println( Welcome back ); } 47

49 HttpSession 사용방법 (2/3) request.getsession(false); 이미만들어져있는세션을원할때 HttpSession session = request.getsession(false); //false 를넘기는이유는존재하는세션을리턴하라는의미 response.encodeurl 클라이언트가브라우저설정을통해쿠키를사용하지않을때쿠키사용방법 URL 재작성방법 : 세션 ID 정보를모든 URL 뒤에추가하는방법이다. response.setcontenttype( text/html ); PrintWriter out = response.getwriter(); HttpSession session = request.getwriter(); HttpSession session = request.getsession(); // 세션을리턴받음 out.println( <html><body> ); out.println( <a href= + response.encodeurl( /BeerTest.do ) + >click me</a> ); //URL 뒤에세션 ID 를추가함 out.println( </body></html> ); // 최초컨테이너가개발자가코딩한 getsession() 부분을만나면, 클라이언트의 Request 에서세션 ID 를읽지않는다. // 컨테이너는클라이언트쿠키가이용가능한지아닌지모르기때문에첫번째응답은쿠키와 URL 재작성을동시에사용한다. 48

50 HttpSession 사용방법 (3/3) response.encoderedirecturl 들어온요청을다른서블릿이나 JSP 로세션을유지하며요청하고싶을때사용한다. response.encoderedirecturl( /BeerTest.do ); 49

51 Session 제거 HttpSession 주요메서드 Method 설명비고 getcreationtime() 세션이생성된시간을리턴 세션이얼마나오래되었는지알고싶을때, 특정시간만 세션을사용하도록제한하는데사용 ( 예로그인한후 10분 간만사용하도록하겠다. ) getlastaccessedtime() 이세션으로들어온마지막요청시간 클라이언트가언제마지막으로세션에접근했는지알고싶 을때. setmaxinactiveinterval() getmaxinactiveinterval() invalidate() 해당세션에대한요청과요청간의최대허용시간 ( 초단위 ) 을지정 해당세션에대한요청과요청간의최대허용시간 ( 초단위 ) 을리턴 세션을종료. 이작업에는현재세션에저장된모든세션속성을제거하는 (unbind) 작업이포함 클라이언트의요청이정해진시간이지나도들어오지않을경우, 해당세션을제거하기위하여사용함. 세션이얼마나오랫동안비활성화상태였는지, 여전히살아있기는한지알고싶을대. 세션이 invalidate() 되기까지시간이얼마나남았는지알기위하여사용 클라이언트가비활성화이거나, 세션작업이완료되어강제로세션을종료할. invalidate() 는세션 ID 가더이상존재하지않으니, 관련속성을세션객체에서제거하라는의미 세션이종료되는세가지이유 설정된시간이다되어서 ( 타임아웃 ) 개발자가세션객체에 invalidate() 메소드를실행하는경우. 애플리케이션이다운되는경우 ( 문제가생겨다운되거나, 언디플로이되는경우 ) 50

52 Session 타임아웃설정 web.xml 에설정 : 생성되는모든세션에 setmaxinactiveinterval() 메소드를호출하는것과도같다. <web app > <servlet> </servlet> <session config> <session timeout>15</session timeout> //15 는분을의미한다. </session config> </web app> 특정세션만타임아웃설정하기 특정세션인스턴스만세션타임아웃값을변경할수있다.( 다른세션의타임아웃값은바뀌지않는다.) session.setmaxinactiveinterval(20*60); // 메소드의인자는초단위시간임. 51

53 3. 세션관리 3.1 세션개요 3.2 세션관리 3.3 쿠키 Cookie 란? 쿠키관련서블릿 API

54 Cookie 란? 원래쿠키는세션을지원하기위하여고안된것이지만다른목적으로사용해도무방함 서버와클라이언트간에교환하는조그마한데이터 ( 이름 / 값의 String쌍 ) 서버는클라이언트로쿠키를보내고, 이후클라이언트는매번요청에이값을전송함 쿠키는기본적으로세션과생존범위가같다. 그러나계속유지할수도있다. 53

55 Cookie 관련서블릿 API Cookie 객체생성 Cookie cookie = new Cookie( username, name); 쿠키가클라이언트에얼마나오랫동안살아있을지설정 cookie.setmaxage(30*60); // 1 을설정하면쿠키는브라우저가빠져나가는대로쿠키를지운다. 쿠키를클라이언트로보낼때 response.addcookie(cookie); 클라이언트 Request 에서쿠키를읽어올때 Cookie[] cookies = request.getcookies(); for(cookie cookie : cookies) [ cookie.getname(); cookie.getvalue(); } 54

56 4. JSP 4.1 JSP 기본 4.2 JSP 태그 4.3 JSP 동작원리 JSP 개요 JSP 지시자

57 JSP(JavaServer Pages) 개요 (1/2) JSP 는 HTML 내에자바코드를삽입하여웹서버에서동적으로웹페이지를생성하여클라이언트에전달하는언어이다. 확장자는.jsp 이며 HTML 코드와자바코드가함께존재한다. Servlet 과 JSP 비교 Servlet 은 Java 소스에 HTML 코드가삽입된다. JSP 는반대로 HTML 코드에 Java 코드가삽입된다. Servlet class 는컴파일과 web.xml 에서블릿을등록하는과정이필요하지하지만 JSP 는필요없다. 서블릿은 JSP 로대체될수있고, JSP 는서블릿으로대체될수있다. JSP 장점 Java 코드에 HTML 이삽입되는 Servlet 단점을해결한다. HTML 과 CSS 작업시웹디자이너들이작업하기가수월하여유지보수에용이하다. 간단한로직을구현할때는 JSP 가더간편하다. JSP 단점 하지만복잡한로직을구현할때에 HTML 중심의코드가이해하기어렵게만들수있고, 프로그래밍언어를모르는사람이실수로중요한코드를건들우려도있다. 그리고힘들게개발한로직의유출을막기위해서도 Servlet 기술이필요하게된다. 대안 그래서요즘은 JSP 기술과 Servlet 기술을혼용한새로운프로그래밍방법이권장되고있다. 프로그램의기능을구현하는복잡한로직은서블릿클래스안에기술하고, 그결과를가져다가출력하는일만 JSP 페이지가담당하도록만드는방법이다. ( 모델 2 방식 ) 56

58 JSP(JavaServer Pages) 개요 (2/2) 기본 JSP 소스코드와브라우저화면 57

59 JSP 지시자 JSP가서블릿이되기위해필요한중요정보를지시자 %>) 를통해제공 page 지시자 페이지관련환경정의 character encoding, content type 등의속성을정의 page import= kr.kosta.* contenttype= text/html %> taglib 지시자 taglib tagdir= /WEB INF/tags/cool prefix= cool %> JSP 페이지에서사용할태그라이브러리정의 taglib tagdir= /WEB INF/tags/cool prefix= cool %> include 지시자 현재 JSP 페이지에포함될코드나문서를정의 페이지의 Header, Tail, Navigation 등을별로도정의하여 include 할수있다. include file= header.html %> 58

60 page 지시자 import 생성될서블릿클래스에추가될자바 import 문을정의 java.lang, javax.servlet, javax.servlet.http 는기본적으로 import 됨 contenttype MIME 타입과캐릭터셋설정 JSP 파일출력시문자코드및 Content Type 헤더에출력할문자코드명을지정 language 스크립틀릿, 표현식, 선언문에사용할스크립팅언어정의 pageencoding JSP 문자인코딩정의 JSP 파일작성시의문자코드를지정 autoflush 응답을저장한버퍼를자동적으로비울것인지여부를설정 true 인경우버퍼가다채워졌거나응답을처리하는서블릿메소드가종료되면 flush 됨 59

61 include 지시자 include 지시자는지정한파일을 JSP 파일에삽입한다. include file= header.jsp %> include 된파일들은내용이그대로복사되어포함되고이에대한서블릿코드는하나만생성된다. 중첩하여사용할수있다. (header.jsp 내부에서또다른파일 include 가능 ) 주의사항 : contenttype 속성이두번선언되지않도록주의한다. 예 ) 메인페이지와 include 된페이지모두 contenttype 속성을정의하면오류발생 60

62 taglib 지시자 태그라이브러리란기본적인 JSP 내장기능을확장하기위한커스텀태그들의집합이다. taglib 지시자를이용하여 core Tag 를추가한예 uri taglib prefix="c" uri=" %> 태그라이브러리의태그와속성을담고있는 TLD(Tag Library Descriptor) 파일 (.tld) 이존재하는 URI 지정 prefix 사용할커스텀태그들의네임스페이스지정 TLD 파일은 JSP 페이지에서사용중인커스텀태그가유효한것인지를검증하는데사용하는 XML 61

63 4. JSP 4.1 JSP 기본 4.2 JSP 태그 4.3 JSP 동작원리 스크립틀릿 (scriptlets) 표현식 (expressions) 선언문 (declarations) 주석 (comment)

64 스크립틀릿 (scriptlets) (1/3) JSP 페이지에자바코드를삽입하기위해사용한다. 63

65 스크립틀릿 (scriptlets) (2/3) Counter 클래스를인식하지못하는경우오류가발생한다. 해결방안 방법 #1. Counter 클래스의패키지명시 방법 #2. page 지시자사용하여 import 64

66 스크립틀릿 (scriptlets) (3/3) kr.kosta.util.counter 와같이사용하는클래스의패키지명까지명시 JSP 내에서사용하는클래스가많아질경우복잡해질수있음 65

67 지시자 (1/2) page 지시자 의 import 속성을사용하여특정패키지또는클래스를 import 할수있다. 컨테이너는 JSP 페이지를자바코드로변환할때지시자를참고한다. 패키지하나만 import 할경우 page import= kr.kosta.util.* %> 여러개의패키지를 import 할경우 ( 쉼표로구분 ) <%@ page import= kr.kosta.util.*, java.util.* %> 66

68 지시자 (2/2) page 지시자 페이지관련환경을정의함. 문자인코딩, 응답페이지컨텐츠타입, 페이지가내장세션객체를가질것인지여부등 page import= kr.kosta.util.* session= false %> taglib 지시자 JSP 에서이용가능한태그라이브러리를정의한다. taglib tagdir= /WEB INF/tags/cool prefix= cool %> include 지시자 변환시점에현재페이지에포함할코드나문서를정의함. 여러 JSP 페이지에공통으로포함되어야하는코드가있다면, 별도로뽑아내어재사용가능한단위로만든후각각의페이지에서이를포함한다. include file= wickedheader.html %> 67

69 page 지시자속성 page지시자의 13가지속성 속성 설명 import 생성될서블릿클래스에추가될자바 import문을정의함. isthreadsafe 생성될서블릿클래스가 SingleThreadModel 을구현할지결정함. 디폴트값은 true 주요속성 contenttype MIME 타입과문자인코딩을설정. iselignored 페이지를서블릿으로전환할때 EL 표현식을무시할것인지를결정. iserrorpage 현재페이지가 JSP 오류처리용페이지인지를정의함. 디폴트값은 false. true 면내장예외사항객체를사용할수있음 errorpage 이페이지에서잡지못한예외사항을보낼오류페이지 URL 을정의함. true 라는속성이설정되어야한다. language extends session autoflush info buffer 스크립팅언어를정의. 현재는 java가유일. 확장성을위해만들어놓은것으로추정 JSP가상속할부모클래스를정의함. 이값을설정하면, 컨테이너가제공하는클래스계층구조를재정의함내장 session 객체를가질지여부를결정함. 디폴트값은 true 자동적으로버퍼링된출력을비울것인지를결정함. 디폴트값은 true 변환될페이지에포함할 String 값을기술함. 이값은나중에 getservletinfo() 메소드로접근가능내장 out 객체버퍼링을어떻게관리할지결정 pageencoding JSP 문자인코딩을정의함. 68

70 표현식 (expressions) JSP 페이지내에서직접클라이언트에출력할내용을포함할수있다. <%= Counter.getCount() %> 표현식의내용은 out.print() 의매개변수가된다. 문장의마지막에세미콜론 (;) 은붙이지않음 리턴타입이 void 일경우표현식을사용할수없음 표현식코드 <%= Counter.getCount() %> 스크립틀릿코드 컨테이너에의해아래와같이변경된다. <% out.print(counter.getcount()); %> 69

71 JSP 선언문 (declarations) 변수선언문 <% int count=0; %> <Servlet code> public class basiccounter_jsp extends SomeSpecialHttpServlet { int count=0; } public void _jspservice(httpservletrequest request, HttpServletResponse response) throws java.io.ioexception { PrintWriter out = response.getwriter(); } 메소드선언문 <% int doublecount() { count = count*2; return count; } %> <Servlet code> public class basiccounter_jsp extends SomeSpecialHttpServlet { int doublecount() { count = count*2; return count; } public void _jspservice(httpservletrequest request, HttpServletResponse response) throws java.io.ioexception { PrintWriter out = response.getwriter(); } } 70

72 주석처리 HTML 주석 < Comment > 이주석의내용을브라우저로표시함 브라우저는 HTML 주석으로인지 사용자가 [ 소스보기 ] 를통해확인할수있음 JSP 주석 <% Comment > 서블릿으로변환될때자바소스코드주석으로변환 사용자가 [ 소스보기 ] 를통해확인할수없음 71

73 4. JSP 4.1 JSP 기본 4.2 JSP 태그 4.3 JSP 동작원리 Servlet 으로변환되는 JSP JSP 라이프사이클 영역객체와속성

74 Servlet 으로변환되는 JSP (1/6) JSP 는컨테이너에의하여웹애플리케이션에서동작하는서블릿으로변환된다. 이러한변환과컴파일은최초요청시딱한번만처리된다. 대부분의컨테이너는컨테이너가구동될때미리처리할수있는옵션을제공한다. hello.jsp hello_jsp.java hello_jsp.class hello_jsp Servlet JSP 파일을컨테이너가서블릿소스코드 (.java) 로변환 컴파일 로딩및초기화됨 73

75 서블릿으로변환되는 JSP (2/6) JSP 가컨테이너에의해서서블릿으로변환된모습 모든스크립틀릿코드와표현식코드는 service() 메소드안으로들어감 스크립틀릿안에선언된변수는모두지역변수 public class visitcount_jsp extends HttpServlet { public void _jspservice(httpservletrequest request, HttpServletResponse response) throws java.io.ioexception, ServletException{ <HTML><BODY> 방문횟수 : <%= Counter.getCount() %> </BODY></HTML> PrinterWriter out = response.getwriter(); response.setcontenttype( text/html ); out.write( <HTML><BODY> ); out.write( 방문횟수 : ); out.print(counter.getcount()); out.write( </BODY></HTML> ); } } 74

76 서블릿으로변환되는 JSP (3/6) 선언문으로정의된변수와메소드 <HTML><BODY> <%! int doublecount() { count = count * 2; return count; } %> <%! int count = 1; %> 방문횟수 : <%= Counter.getCount() %> </BODY></HTML> public class visitcount_jsp extends HttpServlet { int doublecount() { count = count * 2; return count; } int count = 1; public void _jspservice(httpservletrequest request, HttpServletResponse response) throws java.io.ioexception, ServletException{ PrinterWriter out = response.getwriter(); response.setcontenttype( text/html ); out.write( <HTML><BODY> ); out.write( 방문횟수 : ); out.print(counter.getcount()); out.write( </BODY></HTML> ); } } 75

77 서블릿으로변환되는 JSP (4/6) 컨테이너가 JSP 를 Servlet 으로변환하는과정 지시자가있는지확인하고변환작업시필요한정보를로딩 HttpServlet 의하위클래스생성 ( 예 : org.apache.jasper.runtime.httpjspbase) import 속성을가진 page 지시자가있으면클래스파일에 import 문삽입 선언문 (declarations) 이있으면멤버변수선언위치에삽입 service() 메소드생성 실제이름은 _jspservice() ( 서블릿의부모클래스에정의된 service() 메소드에서 _jspservice() 를호출 ) 템플릿텍스트 (HTML, 스크립틀릿, 표현식 ) 를 Response 객체의출력스트림인 PrinterWriter 의출력형식에맞게삽입 76

78 서블릿으로변환되는 JSP (5/6) _jspservice() 에선언된내장객체 컨테이너가 _jspservice() 를생성하면서 JSP 에작성된코드외에내장객체를자동으로선언하고초기화 내장객체변수명 request response pagecontext 내장객체의타입 javax.servlet.servletrequest (javax.servlet.http.httpservletrequest) javax.servlet.servletresponse (javax.servlet.http.httpservletresponse) javax.servlet.jsp.pagecontext 설명 클라이언트의 HTTP 요청을담는객체요청에대한응답객체페이지실행에필요한컨텍스트정보를담는객체 session application out javax.servlet.http.httpsession javax.servlet.servletcontext javax.servlet.jsp.jspwriter 클라이언트세션정보를담는객체 동일한어플리케이션컨텍스트의모든페이지가공유할데이터를담는객체 응답전송을위한출력스트림 config javax.servlet.servletconfig 해당페이지서블릿설정데이터 ( 초기화정보 ) 를담는객체 page javax.servlet.jsp.httpjsppage 해당페이지서블릿인스턴스 exception java.lang.throwable 서블릿실행시발생한예외중처리하지못한객체 77

79 서블릿으로변환되는 JSP (6/6) JSP 가변환된서블릿에는몇가지주요 API 가구현되어있다. jspinit() 서블릿의 init() 메소드에서호출 JSP 에서선언문을통해재정의할수있다. jspdestory() 서블릿의 destory() 메소드에서호출 JSP 에서선언문을통해재정의할수있다. _jspservice() 서블릿의 service() 메소드에서호출 각요청마다새로운스레드로실행됨 재정의할수없다. 78

80 JSP 라이프사이클 (1/2) 웹애플리케이션배포 웹컨테이너는배포된애플리케이션의 DD(web.xml) 파일을로딩 이단계에서 JSP 는아무일도하지않고서버에그대로존재함 사용자가 JSP 요청 컨테이너는요청에해당하는 JSP 를.java 파일로변환 JSP 문법에오류가있다면이시점에오류발생 변환된 Java 파일컴파일 앞단계에서변환된.java 파일을.class 로컴파일 Java 문법에오류가있다면이시점에오류발생 서블릿로딩 컨테이너가앞단계에서컴파일된서블릿클래스 (.class) 를메모리로로딩 서블릿인스턴스화 컨테이너가로딩한서블릿을인스턴스화 jspinit() 메소드호출 인스턴스화된객체는클라이언트요청을처리할수있는서블릿이됨 79

81 JSP 라이프사이클 (2/2) 스레드생성하여요청처리 요청이들어올때마다컨테이너는새로운스레드를만들어 _jspservice() 메소드실행 다음요청부터는앞의컴파일과정은생략하고일반서블릿과같이동작 클라이언트로처리결과응답 클라이언트또는다른웹어플리케이션컴포넌트로요청을넘길수도있음 80

82 JSP 실행과정 JSP 페이지실행과정 JSP 페이지라이프사이클 클라이언트요청 jspinit() 클래스파일? No Yes 서블릿으로변환 _jspservice() 클라이언트요청에의해쓰레드가생성되어실행 컴파일 메모리로드? No Yes 메모리로드 jspdestroy() 클라이언트요청처리 81

83 JSP 실행과정 JSP 페이지는서블릿으로변환되어실행된다. 서블릿으로변환하는것은컨테이너의역할이다. JSP 변환 JAVA 컴파일 바이트 코드 로드 / 초기화 서블릿 객체 hello.jsp hello_jsp.java hello_jsp.class hello_jsp Servlet public class hello_jsp extends HttpServlet { public void _jspservice(httpservletrequest request, HttpServletResponse response) throws java.io.ioexception, ServletException { PrintWriter out = response.getwriter(); response.setcontenttype("text/html;charset=ksc5601"); out.write("<html><head><title>hello JSP</title></head><body>"); out.println(" 이줄은자바프로그램에서 "); out.println(" 만들어내는내용입니다."); out.write("<hr>"); out.write(" 이곳은 HTML 부분입니다."); out.write("</body></html>"); } } 82 82

84 JSP 내장속성 (1/2) 내장객체 session, request, application 객체는각속성들의유효한범위를갖는다. Scope 서블릿 JSP( 내장객체를사용 ) Application getservletcontext().setattribute( foo, barobj); application.setattribute( foo, barobj); Request request.setattribute( foo, barobj); request.setattribute( foo, barobj); Session request.getsession().setattribute( foo, barobj); session.setattribute( foo, barobj); Page 제공하지않는다. pagecontext.setattribute( foo, barobj); 83

85 JSP 내장속성 (2/2) 내장객체중영역객체의속성을설정및조회하는메소드 pagecontext, request, session, application 들이동일하게정의하고있음 메소드명 public Object getattribute(string key) 속성유효범위 key 값으로등록된속성을 Object 로리턴 해당 key 값이존재하지않을경우 null 리턴 public void setattribute(string key, Object value) public Enumeration getattributenames() 속성값을 key 값으로등록 해당영역에지정된속성들의이름을 Enumeration 으로리턴 헤당 key 값이존재하지않을경우 null 리턴 public void removeattributte(string key) key 값에해당하는해당영역의속성을삭제 84

86 PageContext 로속성접근하기 (1/2) pagecontext 는자신에설정되어있는 page 범위속성뿐만아니라, 어떤다른생존범위속성도접근할수있을정도로막강하다. page 생존범위의속성세팅하기 <% Float one = new Float(42.5); %> <% pagecontext.setattribute( foo, one); %> page 생존범위의속성읽기 <%= pagecontext.getattribute( foo ); %> pagecontext 를이용하여 session 생존범위속성세팅하기 <% Float one = new Float(42.5); %> <% pagecontext.setattribute( foo, two, pagecontext.session_scope); %> pagecontext 를이용하여 session 생존범위속성읽기 <%= pagecontext.getattribute( foo, pagecontext.session_scope) %> ( 이것과동일한것 : <%= session.getattribute( foo ) %> 85

87 PageContext 로속성접근하기 (2/2) pagecontext 를이용하여 application 생존범위속성읽기 <%= pagecontext.getattribute( mail, PageContext.APPLICATION_SCOPE) %> ( 이것과동일한것 : <%= application.getattribute( foo ) %> pagecontext 를이용하여어떤생존범위인지모르는속성찾기 foo 라는이름의속성이 page 생존범위에없다면, 가장작은범위에서부터시작해서가장넓은범위의순으로속성을찾는다. <%= pagecontext.findattribute( foo ); %> 86

88 4. JSP 4.1 JSP 기본 4.2 JSP 태그 4.3 JSP 동작원리 4.4 표준액션 4.5 EL(Expression Language) 4.6 레이아웃템플릿 자바빈관련표준액션

89 표준액션 - 자바빈 (1/4) JSP 는스크립팅을사용하지않고자바빈의프로퍼티를출력할수있는방법을제공한다. Scriptlet 을이용하는방법 <html><body> <% foo.person p = (foo.person) request.getattribute( person ); %> Person is : <%= p.getname() %> </body></html> 표준액션을사용하는방법 (Scriptlet 사용안함 ) <html><body> <jsp:usebean id= person class= foo.person scope= request /> Person created by servlet: <jsp:getproperty name= person property= name /> </body></html> 88

90 표준액션 - 자바빈 (2/4) <jsp:usebean> 은빈을선언하고초기화하는태그 <jsp:usebean id= person class= foo.person scope= request /> jsp:usebean : 표준액션임을나타냄 id= person : 빈객체식별자를선언한다. class= foo.person : 빈객체의클래스타입을선언 scope= request : 빈객체속성의생존범위지정 <jsp:getproperty> 은속성빈프로퍼티를읽어오는태그 <jsp:getproperty name= person property= name /> jsp:getproperty : 표준액션임을나타냄 name : 빈객체이름 property= name : 빈의프로퍼티명 ( getter/setter) <jsp:setproperty> 은속성빈프로퍼티를설정하는태그 <jsp:setproperty name= person property= name value= Fred /> 89

91 표준액션 - 자바빈 (3/4) <jsp:usebean> 은 person 이라는속성객체를찾다가못찾으면, 하나만든다. <jsp:usebean id= person class= foo.person scope= request /> <Servlet code> // id 에있는값을가지고변수를선언한다. foo.person person = null; synchronized (request) { // 태그에정의된생존범위 (scope) 에서속성을찾아본다. person = (foo.person)_jspx_page_context.getattribute( person, PageContext.REQUEST_SCOPE); // 해당생존범위에이런이름을가진속성이없다면 if(person == null) { // 객체를생성해 person 에할당한다. person = new foo.person(); } } // 마지막으로방금만든객체를태그에서정의한생존범위에설정한다. _jspx_page_context.setattribute( person, person, PageContext.REQUEST_SCOPE); 90

92 표준액션 - 자바빈 (4/4) <jsp:usebean> 은자신의몸체를가질수있다. 새로운빈이만들어지는경우에만프로퍼티를설정하고, 이미빈이존재한다면, 태그의몸체부분은건너뛴다. <jsp:usebean id= person class= foo.person scope= page > <jsp:setproperty name= person property= name value= Fred /> </jsp:usebean> 빈표준액션의단점 표현식을사용하면중첩된객체의프로퍼티를출력할수있다. <html><body> <%= ((foo.person) request.getattribute( person )).getdog().getname() %> </body></html> 그러나, 빈표준태그는중첩된프로퍼티를출력할수없다. Dog 객체의 name 속성값을출력할방법이없다. <html><body> <jsp:usebean id= person class= foo.person scope= request /> Dog s name is : <jsp:getproperty name= person property= dog /> </body></html> 91

93 4. JSP 4.1 JSP 기본 4.2 JSP 태그 4.3 JSP 동작원리 4.4 표준액션 4.5 EL(Expression Language) 4.6 레이아웃템플릿 EL (Expression Language) EL의 [] 연산자 EL 내장객체 EL 함수 연산자

94 EL (Expression Language) EL 은표현식언어 (Expression Language) 의줄임말이다. JSP 2.0 스펙부터공식적으로포함 스크립틀릿이나표현식으로지금까지했던작업을 EL 로간단하게할수있음 EL 표현식 <syntax> ${person.dog.name} < 스크립팅 > <%= ((foo.person) request.getattribute( person )).getdog().getname() %> 표현식에서도트연사자왼쪽은반드시맵또는빈이여야한다. ${person.name}// java.util.map 또는 java bean 표현식에서도트연산자오른쪽은반드시맵의키이거나빈프로퍼티여야한다. ${person.name} // 빈프로퍼티 (getname(), setname() 오른쪽오는값은식별자로서일반적인자바명명규칙을따라야한다. ${person.name} // 문자, _, $ 로시작해야함, 두번째글자부터숫자를써도무방, 자바예약어사용금지 93

95 EL 의 [] 연산자 (1/3) EL 의 [] 연산자 ${person[ name ]} = ${person.name} [] 연산자의왼편에는맵, 빈, 배열, 리스트변수가올수있다. ${musiclist[ something ]}// [] 연산자안의값이문자열 ( 따옴표로묶여있다면 ) 이라면, 이것은맵키가될수있고, 빈프로퍼티또는리스트나배열인덱스가될수있다. ${musiclist[ something ]}// 배열과리스트인경우문자로된인덱스값은숫자로바뀐다. <servlet code> String[] favoritemusic = { Zero 7, Tahiti 80, BT, Frou Frou }; request.setattribute( musiclist, favoritemusic); ${musiclist[0]} // Zero 7 출력 ${musiclist[ 1 ]} //Tahiti 80 94

96 EL 의 [] 연산자 (2/3) EL 의 [] 연산자안에따옴표가없다면컨테이너는안에들어있는것이뭔지찾기시작한다. 이런이름으로바인딩된속성이있으면속성값을 [] 안에넣는다. ( 똑같은이름의내장객체가있다면, 내장객체가항상우선한다. ) <servlet code> java.util.map musicmap = new java.util.hashmap(); musicmap.put( Ambient, Zero 7 ); musicmap.put( Surf, Tahiti 80 ); musicmap.put( DJ, BT ); musicmap.put( Indie, Frou Frou ); request.setattribute( musicmap, musicmap); request.setattribute( Genre, Ambient ); ${musicmap[genre]} ===============> ${musicmap[ Ambient ]} //return Zero 7 ${musicmap[ Genre ]} ==============> ${musicmap[ Genre ]} //return null 95

97 EL 의 [] 연산자 (3/3) EL 의 [] 연산자안에내장표현식을쓸수있다. 표현식을실행할때안쪽에서바깥쪽의순서로진행한다. <servlet code> java.util.map musicmap = new java.util.hashmap(); musicmap.put( Ambient, Zero 7 ); musicmap.put( Surf, Tahiti 80 ); musicmap.put( DJ, BT ); musicmap.put( Indie, Frou Frou ); String[] musictypers = { Ambient, surf, DJ, Indie }; request.setattribute( Musictype, musictypes); Music id ${musicmap[musictype[0]]} Music is ${musicmap[ Ambient ]} Music is Zero 7 96

98 EL 내장객체 pagecontext 만빼고모두맵이다. 내장객체명 pagescope requestscope sessionscope applicationscope param paramvalues header headervalues cookie initparam pagecontext 설명생존범위속성맵요청파라미터맵요청헤더맵쿠키맵컨텍스트초기화파라미터맵 pagecontext 객체에대한참조. 맵이아닌유일한빈 97

99 EL 내장객체 EL 에서요청파라미터사용 해당파라미터이름으로값이하나밖에없을때 EL 내장객체인 param 을사용하면쉽게그값을읽을수있다. 파라미터이름으로그값이하나이상일때는 param 으로는안되고 paramvalues 를사용해야한다. <html code> <form action= TestBean.jsp > Name : <input type= text name= name > ID# : <input type= text name= empid > First food : <input type= text name= food > Second food : <input type= text name= food > <input type= submit > </form> <jsp code> Request param name is : ${param.name} <br> Request param empid is : ${param.empid} <br> Request param food is : ${param.food} <br> First food request param : ${paramvalues.food[0]} <br> Second food request param : ${paramvalues.food[1]} <br> Request param name : ${paramvalues.name[0]} 98

100 EL 내장객체 host 헤더정보읽기 스트립팅코드 Host is : <%= request.getheader( host ) %> EL 내장객체 header를사용 Host is : ${header[ host ]}, Host is : ${header.host} HTTP 요청메소드확인 스크립팅코드 Method is : <%= request.getmethod() %> EL 사용 Method is : ${requeset.method} // 오류, Method is : ${requestscope.method} // 오류 99

101 EL 내장객체 requestscope 와 request 객체 requestscope : request 생존범위에묶여있는속성에대한단순한맵 request 정보는 pagecontext 를통해서접근할수있다. Method is : ${pagecontext.request.method} //pagecontext 안에 request 가있고 request 안에 method 가있다. naming conflict( 이름충돌 ) 가생존범위안에서의심되면명시적으로표현한다. ${requestscope.person.name} 속성이름이문자열이라면 request.setattribute( foo.person, p); // 속성을문자열로입력한경우 ${foo.person.name} //foo 라는속성은존재하지않는다. ${requestscope[ foo.person ].name} //[] 이용해서접근할수있다. 100

102 EL 내장객체 쿠키값출력 스크립팅 <% Cookie[] cookies = request.getcookies(); for(cookie cookie : cookies) { if(cookie.getname().equals( username )) { out.println(cookie.getvalue()); } } %> EL Cookie 내장객체사용 ${cookie.username.value} 컨텍스트초기화파라미터값출력 <web.xml> <context param> <param name>main </param name> <param value>likewecare@wickedlysmart.com</param value> </context param> is : <%= application.getinitparameter( main ) %> // 스크립팅 is : ${initparam.main } //EL 표현식 101

103 EL 실습 (1/5) 회원가입화면구현 화면에입력한회원정보를 dispatch 된화면 ( 가입완료화면 ) 에서다시보여줌 102

104 EL 실습 (2/5) join.jsp 103

105 EL 실습 (3/5) Member.java 104

106 EL 실습 (4/5) JoinServlet.java 105

107 EL 실습 (5/5) joinresult.jsp 106

108 EL 함수 (1/2) 태그라이브러리를구현하여 EL 표현식으로자바메소드를사용할수있다. 사용방법 정적인공용메소드를제공하는클래스작성. 반드시 public static 메소드여야한다. void 메소드는가능하나리턴이없으므로무의미함 태그라이브러리서술자파일을만든다. JSP 에 taglib 지시자를코딩한다. 함수를호출하는 EL 을작성한다. 메소드를정의한클래스작성 <java> package foo; public class DiceRoller { public static int rolldice() { return (int) ((Math.random() * 6) + 1); } } 107

109 EL 함수 (2/2) 태그라이브러리서술자 (TLD) 파일작성 <TLD> <?xml version="1.0" encoding="utf 8"?> <taglib xmlns=" xmlns:xsi=" instance" xsi:schemalocation=" jsptaglibrary_2_0.xsd" version="2.0"> <tlib version>1.2</tlib version> <uri>dicefunctions</uri> <function> <name>rollit</name> <function class>foo.diceroller</function class> <function signature>int rolldice()</function signature> </function> </taglib> JSP 에 taglib 지시자를코딩및함수호출 EL 작성 taglib prefix= mine uri= DiceFunctions %> <html><body> ${mine:rollit()} </body></html> 108

110 연산자 산술연산자 +,, *, (/, div), (%, mod) 논리연산자 &&, and,, or,, not 관계연산자 (==, eq), ( =, ne), (<, lt), (>, gt), (<=, le), (>=, ge) String num= 2 ; ${num > 3} = false, ${integer le 12} = true, ${42 div 0} = infinity 그밖에연산자들 empty true false null 109

111 4. JSP 4.1 JSP 기본 4.2 JSP 태그 4.3 JSP 동작원리 4.4 표준액션 4.5 EL(Expression Language) 4.6 레이아웃템플릿 include 지시자 <jsp:include> 표준액션

112 include 지시자 include 지시자는포함할파일내용을모두복사하여선언한지점에삽입한다. ( 포함후실행 ) <header.jsp> <img src= images/web Services.jpg > <br> <em><strong>we know how to make SOAP suck less.</strong></em> <br> <Contact.jsp> <html><body> <%@ include file= Header.jsp %> <br> <em>we can help.</em><br><br> Contact us at: ${initparam.main } </body></html> 111

113 <jsp:include> 표준액션 (1/2) <jsp:include> 표준액션도 include 지시자와똑같은곳에둔다. ( 실행후포함 ) <header.jsp> <img src= images/web Services.jpg > <br> <em><strong>we know how to make SOAP suck less.</strong></em> <br> <Contact.jsp> <html><body> <jsp:include page= Header.jsp /> <br> <em>we can help.</em><br><br> Contact us at: ${initparam.main } </body></html> 112

114 <jsp:include> 표준액션 (2/2) <jsp:param/> 테그로컨텐츠추가하기 <main.jsp> <html><body> <jsp:include page= Header.jsp > <jsp:param name= subtitle value= We take the sting out of SOAP. /> </jsp:include> <br> <Header.jsp> <img src= images/web Services.jpg > <br> <em><strong>${param.subtitle}</strong></em> <br> 113

115 5. JSTL 5.1 JSTL 개요 5.2 JSTL 주요태그 JSTL 개요

116 JSTL 개요 JSTL 개요 JSP 표준태그라이브러리 스크립틀릿대신에반복문, 조건문, 포맷, xml 조작등을 HTML 태그처럼사용할수있도록지원한다. EL을이용해서효과적으로프리젠테이션역할을수행 JSTL 사용법 JSTL을사용하기위해서는 WEB INF/lib 에 jstl.jar, standard.jar 설치한다. - 톰캣에서제공하는샘플프로젝트에있는 jstl.jar, standard.jar을찾아서 WEB INF/lib에서복사하면된다. jsp 문서상단에 jsp 태그라이브러리지시자를이용하여 jstl을선언한다. <JSTL 선언 > <% taglib prfix= c url= %> JSTL 사용 <JSTL 사용 > <c:if test= ${empty param.username} > <jsp:forward page= HandleIt.jsp /> </c:if> 115

117 5. JSTL 5.1 JSTL 개요 5.2 JSTL 주요태그 JSTL 코어라이브러리 그밖의라이브러리

118 JSTL - <c:out> 태그 값을출력하기위한태그 기본문법 <syntax> <c:out value= ${pagecontent.rawhtml} /> escapexml 속성 : 출력할값에브라우저가해석하는 html 등과같은값이포함되어있을경우해석되지않고그대로표현해야할경우사용한다. <syntax> <c:out value= ${pagecontent.rawhtml} escapexml= false /> //true: html 코드를변환한다. default 속성 : 값이없을경우기본출력값을설정할수있다. <syntax 1.> <c:out value= ${user} default= guest /> //user 가널이거나빈값일경우 guest 를출력한다. <syntax 2.> <c:out value= ${user} > guest</c:out> 117

119 JSTL - <c:foreach> 태그 (1/3) <c:foreach> 태그는컬렉션에있는각각의항목에대하여몸체 ( 바디 ) 부분을반복한다. 여기서말하는컬렉션 : 배열 (Array), 컬렉션 (Collection), 맵 (Map), 콤마분리문자열 (Comma delimited String) 기본문법 <syntax> <c:foreach var= movie items= ${movielist} /> // var : 컬렉션에있는각각항목을나타내는변수 ${movie} //items : 루핑을돌실제데이터 ( 배열, 컬렉션, 맵, 콤마분리문자열 ) </c:foreach> varstatus 속성 : 루핑횟수를알기위한속성 <syntax> <c:foreach var= movie items= ${movielist} varstatus= movieloopcount /> //movieloopcount 라는인스턴스변수선언 ${movieloopcount.count} // 루핑이돌때마다값이 1 씩증가한다. </c:foreach> 118

120 JSTL - <c:foreach> 태그 (2/3) <c:foreach> 안에 <c:foreach> servlet code <servlet code> String[] movies1 = { Matrix, Kill Bill, Boondock Saints }; String[] movies2 = { Amelie, Return of the King, Mean Girls }; List movielist = new Arraylist(); movielist.add(movies1); movielist.add(movies2); request.setattribute( movies, movielist); Jsp 코드 <syntax> <c:foreach var= listelement items= ${movies} /> <c:foreach var= movie items= $listelement} > ${movie} </c:foreach> </c:foreach> 119

121 JSTL - <c:foreach> 태그 (3/3) begin, end, step 속성 begin, end : 컬렉션의부분집합만루프를돌릴때사용한다. step : 값을얼마씩증가할것인지를설정 <syntax> <c:foreach var="comma" items="${commastr }" varstatus="commacount" begin="1" end="5" step="2"> ${commacount.count}. ${comma}<br> </c:foreach> 120

122 JSTL 조건문태그 (1/2) <c:if> 태그는조건문을만들때사용한다. 기본문법 <syntax> <c:if test= ${usertype eq member } > <jsp:include page= inputcomments.jsp /> </c:if> 121

123 JSTL 조건문태그 (2/2) <c:choose> 태그는 <c:if> 태그가표현못하는 else 를등을표현할수있다. 기본문법 <syntax> <c:choose> <c:when test= ${userpref == performance } > 실행할내용. </c:when> <c:when test= ${userpref == safety } > 실행할내용 </c:when> <c:otherwise> 해당조건이맞지않을때의디폴트실행문 </c:otherwise> </c:choose> <c:otherwise> 태그가반드시있어야하는것은아니다. 122

124 JSTL <c:set> 태그 (1/3) <c:set> 태그는속성, 빈, 맵의값을설정할수있다. 속성 var 설정하기 <syntax> //session 생존범위에 userlevel 이란이름의속성이없으면하나를새로만든다. (value 속성값이 null 이아니라는가정하에 ) <c:set var= userlevel scope= session value= Cowboy /> //$(person,dog} 의 Dog 객체를 Fido 변수에설정한다. Fido 는 Dog 타입변수가된다. <c:set var= Fido value= ${persion.dog} /> 몸체가있는경우 <syntax> <c:set var= userlevels scope= sesssion > Sheriff, Bartender, Cowgirl </c:set> value 가 null 인경우, 변수는제거된다. 123

125 JSTL <c:set> 태그 (2/3) 빈과맵에 <c:set> 태그사용하기 <syntax> <c:set target= ${Petmap} property= dogname value= Clover /> 1. target은 null 이어서는안되다. target 속성에는객체가들어가야한다. 2. target이빈일경우 property는프로퍼팅명이된고, 맵일경우키값이된다. 몸체가있는경우 <syntax> <c:set target= ${person} property= name > ${foo.name} </c:set> 124

126 JSTL <c:set> 태그 (3/3) <c:set> 핵심정리 <c:set> 태그에 var 와 target 을동시에사용할수없다. scope 는옵션이다. 없을경우디폴트는 page 생존범위이다. value 가널이면, var 에있는속성은제거된다. var 이름으로속성이없으면, 자동적으로만든다. (value 가널이아닐경우 ) target 표현식이널이면, 컨테이너는예외사항을던진다. target 에는실제객체를표현하는표현식이들어가야한다. 빈이나맵의 id 이름을나타내는문자열을기입하면, 작동하지않는다. target 표현식이빈이나맵이아니면컨테이너는예외사항을던진다. target 표현식이빈이고, 해당빈에 property 에명기된이름으로된프로퍼티가없다면컨테이너는예외사항을던진다. EL 표현식 ${bean.notaproperty} 또한예외사항을던진다. 125

127 JSTL <c:remove> 태그 속성을제거하기위해사용한다. <syntax> <c:set var= userstatus scope= request value= Brilliant /> userstatus: ${userstatus} <br> <c:remove var= userstatus scope= request /> 1. var 속성에는문자열이들어간다. ( 표현식을넣으면안된다.)) 126

128 JSTL <c:import> 태그 요청이들어오는시점에, url 속성에명기한파일을현재컨텐츠에포함한다. <jsp:include> 표준액션과 include 지시자로는현재웹애플리케이션에있는페이지만포함할수있지만, <c:import> 태그를사용하면컨테이너외부에있는자원도포함시킬수있다. <syntax> <c:import url= /> <c:param> 를활요한내용삽입 <syntax> <c:import url= Header.jsp > <c:param name= subtitle value= We take the sting out of SOAP. /> </c:import> 포함될파일 (header.jsp) <em> <strong>${param.subtitle}</strong></em> 127

129 JSTL <c:url> 태그 하이퍼링크와관련된작업을할수있다. URL 재작성 <syntax> <a href= <c:url value= /inputcomments.jsp /> >click here</a> URL 인코딩 - <c:url> 태그는 URL 재작성은하지만, URL 인코딩을하지않는다. - <c:url> 몸체에 <c:param> 을사용하면 URl 재작성도하고 URL 인코딩도한다. <syntax> <c:url value= /inputcomments.jsp var= inputurl > <c:param name= firstname value= ${first} /> <c:param name= flastname value= ${flast} /> </c:url> 128

130 JSTL <c:catch> 태그 페이지에오류를낼만한태그를오류페이지로넘기기않고직접처리하고싶을때사용한다. <syntax> page crorpage= errorpage.jsp %> <c:catch> <% int x = 10/0; %> // 이스크립트릿은 100% 에외사항을던진다. 하지만오류페이지가아닌이페이지에서처리한다. </c:catch> <c:catch> 태그에서 var 속성사용하기 <syntax> <%@ page crorpage= errorpage.jsp %> <c:catch var= myexception > <% int x = 10/0; %> // 이스크립트릿은 100% 에외사항을던진다. 하지만오류페이지가아닌이페이지에서처리한다. </c:catch> <c:if test= ${myexception = null} > There was an exception: ${myexception.message} <br> </c:if> 129

131 그밖의라이브러리 포맷팅라이브러리 국제화 : <fmt:message> <fmt:setlocale> <fmt:bundle> <fmt:setbundle> <fmt:param> <fmt:requestencoding> 포맷팅 : <fmt:timezone> <fmt:settimezone> <fmt:formatnumber> <fmt:parsenumber> <fmt:parsedate> SQL 라이브러리 데이터베이스접근 : <sql:query> <sql:update> <sql:setdatasource> <sql:param> <sql:dateparam> XML 라이브러리 코어 XML 액션 : <x:parse> <x:out> <x:set> XML 프름제어 : <x:if> <x:choose> <x:when> <x:otherwise> <x:foreach> 변환액션 : <x:transform> <x:param> 130

132 6. Servlet 활용기술 6.1 Servlet Filter Servlet Filter 개요 Filter 를이용한한글처리

133 Servlet Filter 개요 서블릿필터는서블릿으로요청이넘어가기전에요청을가로채어어떤처리를할수있다. 필터의동작여부를서블릿은알수없다. 클라이언트요청 컨테이너 필터 #1 필터 #2 서블릿 요청객체 응답객체 필터가여러개인경우실행순서 컨테이너는 DD(web.xml) 에선언한정보를바탕으로필터를언제실행할지결정한다. 필터의구현 javax.servlet.filter 인터페이스를구현한다. Request 필터활용 보안관련내용체크 요청헤더와바디포맷팅수정 요청을감시하거나기록을남김 Response 필터활용 응답스트림압축 응답스트림에내용을추가하거나수정 132

134 Filter 를이용한한글처리 (1/2) 한글관련처리에 Filter를적용한예 web.xml 설정 모든 URL 요청 (/*) 에대해서필터적용 Filter Class의초기파라미터설정 133

135 Filter 를이용한한글처리 (2/2) Filter Class 구현 init() Filter 가등록될때호출 (Server Start) web.xml 에서정의한파라미터사용 destory() Filter 가해제될때호출 (Server Stop) dofilter() Filter 동작구현 Filter Chain 에등록된다른 Filter 호출 134

136 7. 웹프로그래밍전략 7.1 Servlet & JSP 7.2 MVC 패턴 7.3 웹프레임워크구조 7.4 프레임워크소개 Servlet & JSP

137 Servlet & JSP (1/4) 하나의 Servlet 또는하나의 JSP 에서복합기능을수행 업무복잡도가증가할수록유지보수가어려워짐 요청 흐름통제 서블릿 3 서블릿 2 서블릿 1 업무처리 1 화면처리 1 DB 업무처리 2 화면처리 2 136

138 Servlet & JSP (2/4) 업무변화에따라기능및화면이추가또는변경됨 요청 흐름통제 서블릿 3 서블릿 2 서블릿 1 업무처리 1 화면처리 1 DB 업무처리 2 화면처리 2 업무처리 3 화면처리 3 137

139 Servlet & JSP (3/4) 변경부와고정부를분리하여확장에열려있고변경에닫힌구조를고려 변화에따른변경을최소화하기 묶을것 ( 비슷한일을하는모듈 ) 을하나로묶기 나눌것 ( 다른일을하는모듈 ) 은나누기 서블릿1 흐름통제업무처리1 화면처리2 업무처리2 화면처리2 업무처리3 화면처리3 흐름통제화면처리2 화면처리2 화면추가 업무처리1 업무처리2 업무처리3 업무추가 138

140 Servlet & JSP (4/4) 흐름통제, 화면처리, 업무처리를분리 변화요구에신속하게대응 특정모듈의변경이다른모듈에영향을주지않음 흐름통제 서블릿 1 자바객체 1 업무처리 1 요청 화면처리 1 업무처리 2 DB 흐름통제 서블릿 2 자바객체 1 업무처리 2 화면처리 2 139

141 7. 웹프로그래밍전략 7.1 Servlet & JSP 7.2 MVC 패턴 7.3 웹프레임워크구조 7.4 프레임워크소개 설계방식 모델 1 설계방식 모델 2 MVC 패턴

142 설계방식 - 모델 1 장점 규모가작은애플리케이션개발에유리 개발시간이단축 (?) 모델 2 개발방식에대한추가적인교육이필요없음 단점 프리젠테이션로직과비즈니스로직이 JSP안에혼재되어있어애플리케이션이복잡해질수록유지보수가어려움 디자이너와개발자간의원할한의사소통이어려움 사용자의증가되는요구사항대응이어려움 Servlet Container 웹브라우저 1 4 JSP 2 3 DB 자바빈 141

143 설계방식 - 모델 2 장점 로직과프리젠테이션의분리로인해애플리케이션이명료해지며유지보수와확장이용이함 디자이너와개발자의작업을분리해줌 단점 개발초기에아키텍처디자인을위한시간의소요로개발기간이늘어남 MVC 구조에대한개발자들의이해가필요함 Servlet Container 1 <<Controller>> Servlet 웹브라우저 3 5 <<View>> JSP 4 <<Model>> 자바빈 DB 142

144 MVC 패턴 Servlet & JSP 구조에서흐름통제, 화면처리, 업무처리를체계적으로분리 서블릿 1 자바객체 1 흐름통제 업무처리 1 요청 뷰매핑자바객체 업무처리 2 DB 자바객체 1 화면처리 1 업무처리 2 화면처리 2 143

145 7. 웹프로그래밍전략 7.1 Servlet & JSP 7.2 MVC 패턴 7.3 웹프레임워크구조 7.4 프레임워크소개 웹프레임워크구조 ActionServlet

146 웹프레임워크구조 웹프레임워크의핵심업무 URL 매핑 : URL분석하여적절한 Action 클래스를실행 뷰매핑 : Action 클래스의결과를출력할 JSP로 Forward 1 요청 ActionServlet Action1 Service Action2 Service2 5 DAO1 DAO2 ActionMapping Action3 Service3 DAO3 7 JSP1 JSP1 서버. 스트럿츠 (Struts) 아키텍처참조 145

147 ActionServlet 모든요청을받아적절한 Action 클래스를실행하는역할을담당한다. Action 클래스의반환값을기반으로적절한 JSP 로 forward 매핑설정은 properties 또는 xml 로관리 146

148 7. 웹프로그래밍전략 7.1 Servlet & JSP 7.2 MVC 패턴 7.3 웹프레임워크구조 7.4 프레임워크소개 웹개발자바프레임워크 웹프레임워크 DB접근프레임워크 컨테이너 프레임워크구성도

149 웹개발자바프레임워크 Servlet & JSP 영역 jquery Spring MVC Spring ibatis, MyBatis Dojo Struts2 Hibernate Sencha Jersey, Restlet EJB JPA Hibernate 클라이언트 서버 참고 : 148

150 웹프레임워크 스트럿츠 (Struts) 2000 년대중반부터사용되고있는기본에충실한웹프레임워크로 URL 매핑과뷰매핑을 xml 로처리 최신버전 ( 지원중단 ) 스트럿츠2(Struts2) 스트럿츠 (struts) 의후속으로시작된프레임워크이나스트럿츠보다웹워크 (WebWork) 의영향을받음 요청인자를객체로자동매핑가능한것이특징 다양한플러그인사용가능 (RESTFul 서비스의일부지원가능 ) 최신버전 2.3.x 스프링 MVC(SpringMVC) 스프링프레임워크의일부로기타스프링계열의프레임워크와호환성이좋음 2.5.x 하위버전에서는모든 bean 생성을 xml 로관리하여설정관리가어려웠으나 2.5.x 상위버전에서는애노테이션을도입하여 xml 설정을대폭단순화함 일부 RESTFul 서비스구현을지원함 최신버전 framework/ Jersey, Restlet RESTFul 서비스구현을지원 Jersey 최신버전 Restlet 최신버전

151 DB 접근프레임워크 아이바티스 (ibatis) JDBC의불편한점을개선하기위한용도로사용됨, SQL 재활용및동적 SQL 작성이가능하여 JDBC 방식대비 SQL문을대폭줄이는효과를보임 2010년 6월 16일로아파치재단에서구글코드로이전됨 최신버전 x 마이바티스 (MyBatis) ibatis 의후속프로젝트 SQL 결과와객체매핑부분에대폭개선이있었으며, 동적 SQL 작성문법을 jstl 과유사하게개선하여친숙도를높임 하이버네이트 (Hibernate) ORM (Object Relation Mapper) 프레임워크로객체간관계설정이되어있으면별도의 SQL 문없이객체조회를통해자동으로 SQL 구문을생성해주는점이강점 단관계가없는객체조회는불가능하며이를지원하기위해별도의 JPQL 이라는쿼리문법을제공 150

152 컨테이너 EJB J2EE 표준을준수하는프레임워크로웹애플리케이션서버 (WAS) 에서지원, 기업형웹애플리케이션개발지원을위해분산처리, 트랜잭션등기능을제공하고있지만 EJB 를지원하는 WAS 를사용해야만하고복잡한 EJB 스펙을준수해야하는등어려움이있음 EJB2 에서문제로제시된복잡한스펙및 XML 설정을벗어나기위해 EJB3 가제시됨 스프링 EJB 의복잡함에서벗어나자바본연의모습으로돌아가기위한의견이제시될시기에시작됨 EJB 에서제공하는기능을 WAS 에서분리하여경량컨테이너기능을제공함 최근수행되는대다수의프로젝트가스프링을이용하는등인기를누리고있으며, 수많은하위프로젝트로인해다양한서비스구축이가능함 ( 스프링 MVC 도스프링의하위프로젝트 ) 151

153 프레임워크구성도 웹 데스크탑 jquery Dojo HTML JS HTML, JSON, XML, 바이너리통신 Spring MVC ibatis, MyBatis Hibernate 모바일 Sencha jquerym CSS Struts2 Jersey, Restlet JPA Spring Hibernate EJB 데스크탑 AWT, SWING RCP JSON, XML, 앱 모바일 Android ios 바이너리통신 DB 152

154 기타웹애플리케이션개발언어및프레임워크 웹 데스크탑 jquery Dojo HTML JS HTML, JSON, XML, 바이너리통신 Java Spring MVC Jersey 모바일 Sencha jquerym CSS Node Express Locomotive PHP Zend CakePHP Python django Ruby Rails groovy grails 153

155 토의 질의응답 토론 넥스트리소프트 ( 주 ) 김현오선임 (hyunohkim@nextree.co.kr) 154

04장

04장 20..29 1: PM ` 199 ntech4 C9600 2400DPI 175LPI T CHAPTER 4 20..29 1: PM ` 200 ntech4 C9600 2400DPI 175LPI T CHAPTER 4.1 JSP (Comment) HTML JSP 3 home index jsp HTML JSP 15 16 17 18 19 20

More information

14-Servlet

14-Servlet JAVA Programming Language Servlet (GenericServlet) HTTP (HttpServlet) 2 (1)? CGI 3 (2) http://jakarta.apache.org JSDK(Java Servlet Development Kit) 4 (3) CGI CGI(Common Gateway Interface) /,,, Client Server

More information

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가 혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에

More information

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드 속성 & 리스너 JSP & Servlet 2/39 Contents 학습목표 클라이언트요청에의해서블릿이실행될때에컨테이너에의해제공되는내장객체의종류와역할, 그리고접근범위특성등을알아본다. 웹컴포넌트사이의데이터전달을위한내장객체에서의속성설정과이에따른이벤트처리방법에대해알아본다. 내용 서블릿의초기화환경을표현하는 ServletConfig 객체 웹애플리케이션의실행환경을표현하는

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 웹서버프로그래밍 2 JSP 개요 01. JSP 개요 (1) 서블릿 (Servlet) 과 JSP(Java Server Page) 서블릿은자바를이용한서버프로그래밍기술 초기웹프로그래밍기술인 CGI(Common Gateway Interface) 를대체하기위해개발되었으나, 느린처리속도, 많은메모리요구, 불편한화면제어등의한계로 PHP, ASP 등서버스크립트언어등장 JSP

More information

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC 내장객체의정리 헷갈리는내장객체들정리하기 - 컨테이너안에서는수많은객체들이스스로의존재목적에따라서일을한다. - ServletContext, ServletConfig 객체는컨텍스트초기화와서블릿초기화정보를가지고있다. - 이외에도다음의객체들이서블릿과 JSP와 EL에서각각의역할을수행한다. 서블릿의객체 JspWriter HttpServletRequest HttpServletResponse

More information

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드 서블릿의라이프사이클 JSP & Servlet 2/39 Contents 학습목표 서블릿클래스로부터서블릿객체가만들어지고, 서블릿객체가초기화되어서서블릿이되고, 서블릿이사용되고, 최종적으로소멸되기까지의전과정을서블릿의라이프사이클이라고한다. 이장에서는서브릿의라이프사이클에관련된프로그래밍기술을배워보자. 내용 서블릿의라이프사이클 서블릿클래스의 init 메서드의 destroy

More information

2장 변수와 프로시저 작성하기

2장  변수와 프로시저 작성하기 Chapter. RequestDispatcher 활용 요청재지정이란? RequestDispatcher 활용 요청재지정구현예제 Chapter.9 : RequestDispatcher 활용 1. 요청재지정이란? 클라이언트로부터요청받은 Servlet 프로그램이응답을하지않고다른자원에수행흐름을넘겨다른자원의처리결과를대신응답하는것또는다른자원의수행결과를포함하여응답하는것을요청재지정이라고한다.

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

중간고사

중간고사 중간고사 담당교수 : 단국대학교응용컴퓨터공학박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호 (4자리숫자 ) 를기입하면성적공고시학번대신암호를사용할것임. 1. JSP 란무엇인가? 간단히설명하라.

More information

KYO_SCCD.PDF

KYO_SCCD.PDF 1. Servlets. 5 1 Servlet Model. 5 1.1 Http Method : HttpServlet abstract class. 5 1.2 Http Method. 5 1.3 Parameter, Header. 5 1.4 Response 6 1.5 Redirect 6 1.6 Three Web Scopes : Request, Session, Context

More information

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드 쿠키와세션 JSP & Servlet 2/51 Contents 학습목표 셋이상의화면으로구성된웹애플리케이션을작성할때에는 JSP 페이지나서블릿클래스들이서로데이터를주고받도록만들어야할필요가있다. 이장에서는이럴때필요한쿠키와세션기술에대해알아보자. 내용 쿠키와세션 쿠키기술 세션기술 / HttpSession 3/50 1. 쿠키와세션 (1) 세션 (Session) - 정의 클라이언트의연속적인요청또는그요청에대한서비스기간

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

Data Provisioning Services for mobile clients

Data Provisioning Services for mobile clients 4 장. JSP 의구성요소와스크립팅요소 제 4 장 스크립팅요소 (Scripting Element) 1) 지시문 (Directive) 1. JSP 구성요소소개 JSP 엔진및컨테이너, 즉 Tomcat 에게현재의 JSP 페이지처리와관련된정보를전달하는목적으로활용 (6 장 )

More information

서블릿의라이프사이클 뇌를자극하는 JSP & Servlet

서블릿의라이프사이클 뇌를자극하는 JSP & Servlet 서블릿의라이프사이클 뇌를자극하는 JSP & Servlet Contents v 학습목표 서블릿클래스로부터서블릿객체가만들어지고, 서블릿객체가초기화되어서서블릿이되고, 서블릿이사용되고, 최종적으로소멸되기까지의전과정을서블릿의라이프사이클이라고한다. 이장에서는서브릿의라이프사이클에관련된프로그래밍기술을배워보자. v 내용 서블릿의라이프사이클 서블릿클래스의 init 메서드의 destroy

More information

Microsoft PowerPoint - aj-lecture1.ppt [호환 모드]

Microsoft PowerPoint - aj-lecture1.ppt [호환 모드] 인터넷과웹서비스 개발환경구성, JSP 기본구조 인터넷과 WWW(World Wide Web) 인터넷은 TCP/IP 기반의네트워크가전세계적으로확대되어하나로연결된 네트워크의네트워크 WWW(World Wide Web) 는인터넷기반의서비스중하나 이름프로토콜포트기능 WWW http 80 웹서비스 524730-1 2019 년봄학기 3/11/2019 박경신 Email SMTP/POP3/IMAP

More information

chapter3.doc

chapter3.doc Chapter 3 : / Hello JSP Hello (?) Hello jsp List 31 hello jsp hellojsp jsp? html tag jsp jsp jsp 31 http://wwwjava2xmlcom hello jsp List 32

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

Microsoft PowerPoint - 4강.pptx

Microsoft PowerPoint - 4강.pptx 컴퓨터과학과 김희천교수 학습개요 동적인컨텐츠를생성하는일에는 어떻게컨텐츠를생성할것인지 를지시해주기위한프로그래밍이어떤형태로든필요하다. JSP 기술은동적으로컨텐츠를생성하기위해, 프로그래밍코드가담긴스크립트를포함할수있게하고또한 HTML 태그를통해어려운자바코딩없이도자바객체를사용할수있게하고있다. JSP는 Java Server Pages의약자로최신버전은 2.1이며자바기반스크립트언어이며또한

More information

Microsoft PowerPoint - aj-lecture8.ppt [호환 모드]

Microsoft PowerPoint - aj-lecture8.ppt [호환 모드] JSTL JSTL 524730-1 2019 년봄학기 5/13/2019 박경신 JSTL (JSP Standard Tag Library) JCP(Java Community Process, 자바표준화단체 ) 에서정한표준 JSP 페이지에서스크립트요소로인한코드의복잡함을해결하기위한일종의사용자정의태그 널리사용되는사용자정의태그를표준으로만든라이브러리 JSP 페이지의로직을담당하는부분인

More information

JAVA Bean & Session - Cookie

JAVA Bean & Session - Cookie JAVA Bean & Session - Cookie [ 우주최강미남 ] 발표내용소개 자바빈 (Java Bean) 자바빈의개요 자바빈의설계규약 JSP 에서자바빈사용하기 자바빈의영역 세션과쿠키 (Session & Cookie) 쿠키의개요 쿠키설정 (HTTP 서블릿 API) 세션의개요 JSP 에서의세션관리 Java Bean Q. 웹사이트를개발한다는것과자바빈?? 웹사이트라는것은크게디자이너와프로그래머가함께개발합니다.

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

Microsoft PowerPoint - aj-lecture7.ppt [호환 모드]

Microsoft PowerPoint - aj-lecture7.ppt [호환 모드] Servlet 이해하기 웹 MVC 524730-1 2019 년봄학기 4/29/2019 박경신 Servlet 자바플랫폼에서컴포넌트기반의웹애플리케이션개발기술 JSP는서블릿기술에기반함 Servlet의프리젠테이션문제를해결하기위해 JSP가등장 이로인해웹애플리케이션의유지보수어려움심각. JSP 모델2가주목받으며다시서블릿에대한중요성부각 Servlet 변천 1 서블릿문제점대두

More information

Microsoft PowerPoint - 7강.pptx

Microsoft PowerPoint - 7강.pptx 컴퓨터과학과 김희천교수 학습개요 내장객체 pagecontext, application, out과내장객체의사용범위를의미하는 Scope에대해학습한다. pagecontext 객체는 JSP 페이지에대한정보관리기능을제공한다. application 객체를이용하여웹어플리케이션에대한정보를관리할수있으며 out 객체는 JSP 페이지가생성하는결과를출력할때사용되는스트림기능을수행한다.

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - 웹프로그래밍_ ppt [호환 모드]

Microsoft PowerPoint - 웹프로그래밍_ ppt [호환 모드] 목차 웹프로그래밍 내장객체의개요 내장객체의종류 11 주차 7 장 JSP 페이지의내장객체와영역 2 내장객체 (Implicit Object) JSP 페이지에서제공하는특수한레퍼런스타입의변수사용하고자하는변수와메소드에접근선언과객체생성없이사용할수있음 내장객체 내장객체 request response out session application pagecontext page

More information

Data Provisioning Services for mobile clients

Data Provisioning Services for mobile clients 3 장. 웹어플리케이션과 JSP 및 Servlet 의이해 제 3 장 1. 웹어플리케이션개념및폴더구조 웹어플리케이션의개념 독립어플리케이션 (Stand-alone Application) 웹어플리케이션 (Web Application) 웹브라우저상에서수행되는어플리케이션 웹어플리케이션이 Tomcat 에서구현될때의규칙 임의의웹어플리케이션은 webapps 폴더하위에하나의폴더로구성

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Microsoft PowerPoint - Chap6_cmpl

Microsoft PowerPoint - Chap6_cmpl Chap. 6 보충 bioagent2004@daum.net JSP 내장객체 JSP 에서선언하지않고사용할수있는객체 컨테이너에의해미리선언된자바클래스의참조변수 스크립트릿이나표현식에서사용할수있음 주요활용 HTML 폼에서입력한값을가지고올때. 세션관련작업을처리할때. 스크립트릿에서브라우저출력이필요할때. 사용자요청을다른페이지로전달할때. 현재 JSP 에대한각종정보를알고자할때.

More information

JavaGeneralProgramming.PDF

JavaGeneralProgramming.PDF , Java General Programming from Yongwoo s Park 1 , Java General Programming from Yongwoo s Park 2 , Java General Programming from Yongwoo s Park 3 < 1> (Java) ( 95/98/NT,, ) API , Java General Programming

More information

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W Research & Technique Apache Tomcat RCE 취약점 (CVE-2019-0232) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE-2019-0232 취약점은 Windows 시스템의 Apache Tomcat 서버에서 enablecmdlinearguments

More information

J2EE Concepts

J2EE Concepts ! Introduction to J2EE (1) - J2EE Servlet/JSP/JDBC iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

Data Provisioning Services for mobile clients

Data Provisioning Services for mobile clients 11 장. 세션과쿠키 세션의원리 세션의기본개념 1. 세션의활용 접속중인웹브라우저각각에대응하여서로다른세션이생성되고활용 2/35 1. 세션의활용 세션의원리 세션의생성시점과종료시점 session 생성시기임의의웹브라우저부터의첫번째요청을처리할때 session이생성되고관련타이머가동작한다. session 소멸시기 1) 세션타이머가만료 2) 코드상에서명시적으로세션소멸 한명의브라우저사용자에대해지속적으로관리해야하는데이터저장장소로서세션을활용

More information

Microsoft PowerPoint - aj-lecture9.ppt [호환 모드]

Microsoft PowerPoint - aj-lecture9.ppt [호환 모드] 표현언어 표현언어와커스텀태그 524730-1 2019 년봄학기 5/20/2019 박경신 표현언어 (Expression Language) JSP에서사용가능한새로운스크립트언어 JSP의 PAGE, REQUEST, SESSION, APPLICATION 영역에저장된속성에사용 수치연산, 관계연산, 논리연산자제공 자바클래스메서드호출기능제공 쿠키, 내장객체의속성등 JSP를위한표현언어의내장객체제공

More information

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D> 10 장. 에러처리 1. page 지시문을활용한에러처리 page 지시문의 errorpage 와 iserrorpage 속성 errorpage 속성 이속성이지정된 JSP 페이지내에서 Exception이발생하는경우새롭게실행할페이지를지정하기위하여사용 iserrorpage 속성 iserrorpage 는위와같은방법으로새롭게실행되는페이지에지정할속성으로현재페이지가 Exception

More information

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx 과목명 : 웹프로그래밍응용교재 : 모던웹을위한 JavaScript Jquery 입문, 한빛미디어 Part3. Ajax Ch20. XMLHttpRequest 2014년 1학기 Professor Seung-Hoon Choi 20 XMLHttpRequest XMLHttpRequest 객체 자바스크립트로 Ajax를이용할때사용하는객체 간단하게 xhr 이라고도부름 서버

More information

슬라이드 1

슬라이드 1 Servlet/JSP Servlet 2 3 HTTP 프로토콜 TCP/IP 기반 Stateless 특징 요청과응답이끝나면연결을종료 HTTP Client 웹브라우저 HTTP Server 웹서버 Apache 서버, IIS 등등 HTML HTTP 프로토콜상에서교환하는문서를작성하기위한언어 Markup 언어 4 HTTP 요청및요청방식 GET 방식 요청의기본방식 데이터요청이목적

More information

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드 JSP 의기초 JSP & Servlet 2/92 Contents 학습목표 JSP 기술에서는웹애플리케이션을 JSP 페이지형태로구현한다. JSP 페이지를작성하는데필요한여러가지기초지식을학습. 내용 JSP 페이지란? JSP의기초문법 JSP 페이지의내장변수 파일입출력 다른 JSP 페이지호출하기 3/92 1. JSP 페이지란? JSP 기술에서웹애플리케이션을구현할때작성하는코드

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 26 장애플릿 이번장에서학습할내용 애플릿소개 애플릿작성및소개 애플릿의생명주기 애플릿에서의그래픽컴포넌트의소개 Applet API의이용 웹브라우저상에서실행되는작은프로그램인애플릿에대하여학습합니다. 애플릿이란? 애플릿은웹페이지같은 HTML 문서안에내장되어실행되는자바프로그램이다. 애플릿을실행시키는두가지방법 1. 웹브라우저를이용하는방법 2. Appletviewer를이용하는방법

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

<C4FBC1EEB7CE20C1A4B8AEC7D5BDC3B4D95FC1A4B4E42E687770>

<C4FBC1EEB7CE20C1A4B8AEC7D5BDC3B4D95FC1A4B4E42E687770> [ 퀴즈로정리합시다 ]_ 정답 _1 장 1. 1 JSP 해설 : JSP는웹애플리케이션을지원하는 Java 지원기술입니다. JSP = HTML + JSP 태그 ( 스크립트릿 ) 웹서버는클라이언트의요청을받으면해당처리를하여클라이언트에결과페이지를응답해줄수있도록구성된서버또는그서버가설치된컴퓨터를의미합니다. 웹애플리케이션서버는웹서버만으로는데이터베이스와연동되어처리되어야하는동적인데이터들을처리해낼수없기때문에

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\) Session 을이용한현재로그인한사용자의 숫자구하기 작성자 : 김성박 ( 삼성 SDS 멀티캠퍼스전임강사 ) email : urstory@nownuri.net homepage : http://sunny.sarang.net - 본문서는http://sunny.sarang.net JAVA강좌란 혹은 http://www.javastudy.co.kr 의 칼럼 란에서만배포합니다.

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

0. 들어가기 전

0. 들어가기 전 컴퓨터네트워크 14 장. 웹 (WWW) (3) - HTTP 1 이번시간의학습목표 HTTP 의요청 / 응답메시지의구조와동작원리이해 2 요청과응답 (1) HTTP (HyperText Transfer Protocol) 웹브라우저는 URL 을이용원하는자원표현 HTTP 메소드 (method) 를이용하여데이터를요청 (GET) 하거나, 회신 (POST) 요청과응답 요청

More information

Microsoft PowerPoint - aj-lecture3.ppt [호환 모드]

Microsoft PowerPoint - aj-lecture3.ppt [호환 모드] JSP 내장객체 JSP 내장객체 524730-1 2019 년봄학기 3/25/2019 박경신 내장객체 (Implicit Objects) JSP 페이지에서사용할수있도록 JSP 컨테이너에미리정의된객체 JSP 페이지가서블릿프로그램으로번역될때 JSP 컨테이너가자동으로내장객체를멤버변수, 매개변수등의각종참조변수 ( 객체 ) 로포함 JSP 페이지에별도의 import 문없이자유롭게사용가능

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

TP_jsp7.PDF

TP_jsp7.PDF (1) /WEB_INF.tld /WEB_INF/lib (2) /WEB_INF/web.xml (3) http://{tag library }/taglibs/{library} /web_inf/{

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른 JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른 URL로바꿀수있다. 예 ) response.sendredirect("http://www.paran.com");

More information

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

<4D F736F F F696E74202D20C1A632C8B8C7D1B1B9BDBAC7C1B8B5BBE7BFEBC0DAB8F0C0D32D496E E D56432E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A632C8B8C7D1B1B9BDBAC7C1B8B5BBE7BFEBC0DAB8F0C0D32D496E E D56432E BC8A3C8AF20B8F0B5E55D> Inside Spring Web MVC 안영회 ahnyounghoe@gmail.com 차례 MVC 개요와오해 Spring Web MVC 개요 Demo 로이해하는 Spring Web MVC 대표적인컨트롤러활용 정리 한국 스프링 사용자 모임 MVC 개요와 오해 한국 스프링 사용자 모임 MVC 개요 MVC 에대한오해 컨트롤러는서블릿이다! 컨트롤러는액션이다! 비즈니스로직은컨트롤러다!

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

TCP/IP Model

TCP/IP Model Servlet HTTP Connection & Tomcat Server 숙명여자대학교 _ 멀티미디어과학과 2012 년여름학기 윤용익 yiyoon@sm.ac.kr 2012 Web Program Language Web page 작성용언어 CGI 와서블릿 CGI(Common Gateway Interface) 웹사이트에서방명록, 게시판을작성하기위해서는 HTML 문서와함께방명록이나게시판을위한프로그램도작성해야하는데이프로그램은

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드 표준액션 JSP & Servlet 2/55 Contents 학습목표 JSP에는액션 (action) 이라는문법이있는데, 이것은 XML 태그형태로코드를기술하는문법이다. 액션은크게표준액션과커스텀액션으로나눌수있는데, 이번장에서는그중하나인표준액션 (standard action) 에대해서배워보자. 내용 표준액션이란? JSP 페이지의모듈화에사용되는표준액션 자바빈의호출에사용되는표준액션

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx 과목명: 웹프로그래밍응용 교재: 모던웹을 위한 JavaScript Jquery 입문, 한빛미디어 Part3. Ajax Ch19. node.js 기본 2014년 1학기 Professor Seung-Hoon Choi 19 node.js 기본 이 책에서는 서버 구현 시 node.js 를 사용함 자바스크립트로 서버를 개발 다른서버구현기술 ASP.NET, ASP.NET

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?

More information

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드 JSTL 사용하기 JSP & Servlet 2/65 Contents 학습목표 JSTL이란 JSP 페이지를작성할때유용하게사용할수있는여러가지커스텀액션과함수가포함되어있는라이브러리이다. 이라이브러리는인터넷에서무상으로다운로드받을수있는데이장에서는라이브러리를다운로드받아서설치하고사용하는방법을알아보자. 내용 JSTL이란? JSTL 설치하기 코어라이브러리사용하기 포매팅라이브러리사용하기

More information

Intro to Servlet, EJB, JSP, WS

Intro to Servlet, EJB, JSP, WS ! Introduction to J2EE (2) - EJB, Web Services J2EE iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

WAS 의동작과 WEB, Servlet, JSP 엑셈컨설팅본부 /APM 박종현 웹어플리케이션서버란? 웹어플리케이션서버방식은웹서버가직접어플리케이션프로그램을처리하는것이아니라웹어플리케이션서버에게처리를넘겨주고어플리케이션서버가어플리케이션프로그램을처리한다. 여러명의사용자가동일한페

WAS 의동작과 WEB, Servlet, JSP 엑셈컨설팅본부 /APM 박종현 웹어플리케이션서버란? 웹어플리케이션서버방식은웹서버가직접어플리케이션프로그램을처리하는것이아니라웹어플리케이션서버에게처리를넘겨주고어플리케이션서버가어플리케이션프로그램을처리한다. 여러명의사용자가동일한페 WAS 의동작과 WEB, Servlet, JSP 엑셈컨설팅본부 /APM 박종현 웹어플리케이션서버란? 웹어플리케이션서버방식은웹서버가직접어플리케이션프로그램을처리하는것이아니라웹어플리케이션서버에게처리를넘겨주고어플리케이션서버가어플리케이션프로그램을처리한다. 여러명의사용자가동일한페이지를요청하여여러어플리케이션프로그램을처리할때오직한개의프로세스만을할당하고사용자의요청을 thread

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

게시판 스팸 실시간 차단 시스템

게시판 스팸 실시간 차단 시스템 오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP

More information

슬라이드 1

슬라이드 1 전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드] - Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture4-1 Vulnerability Analysis #4-1 Agenda 웹취약점점검 웹사이트취약점점검 HTTP and Web Vulnerability HTTP Protocol 웹브라우저와웹서버사이에하이퍼텍스트 (Hyper Text) 문서송수신하는데사용하는프로토콜 Default Port

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 웹 (WWW) 쉽게배우는데이터통신과컴퓨터네트워크 학습목표 웹서비스를위한클라이언트 - 서버구조를살펴본다. 웹서비스를지원하는 APM(Apache, PHP, MySQL) 의연동방식을이해한다. HTML 이지원하는기본태그명령어와프레임구조를이해한다. HTTP 의요청 / 응답메시지의구조와동작원리를이해한다. CGI 의원리를이해하고 FORM 태그로사용자입력을처리하는방식을알아본다.

More information

Web Service Computing

Web Service Computing Spring MVC 2015 Web Service Computing Request & Response HTTP(Hyper-Text Transfer Protocol) 웹서버가하는일은요청 (Request) 과응답 (Response) 의연속이다. 1) 브라우저에 www.google.co.kr 을입력한다면 2) 구글서버에페이지를요청하는것이고 3) 화면이잘나타난다면구글서버가응답을한것이다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chap12-OOP.ppt 객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버

More information

chapter1,2.doc

chapter1,2.doc JavaServer Pages Version 08-alpha copyright2001 B l u e N o t e all rights reserved http://jspboolpaecom vesion08-alpha, UML (?) part1part2 Part1 part2 part1 JSP Chapter2 ( ) Part 1 chapter 1 JavaServer

More information

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint 세션.ppt 웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 세션변수 (Session Variable) (1/2) 쇼핑몰장바구니 장바구니에서는사용자가페이지를이동하더라도장바구니의구매물품리스트의내용을유지하고있어야함 PHP 에서사용하는일반적인변수는스크립트의수행이끝나면모두없어지기때문에페이지이동시변수의값을유지할수없음 이러한문제점을해결하기위해서 PHP 에서는세션 (session)

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E >

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E > Chapter 8 데이터베이스응용개발 목차 사용자인터페이스와도구들 웹인터페이스와데이터베이스 웹기초 Servlet 과 JSP 대규모웹응용개발 ASP.Net 8 장. 데이터베이스응용개발 (Page 1) 1. 사용자인터페이스와도구들 대부분의데이터베이스사용자들은 SQL을사용하지않음 응용프로그램 : 사용자와데이터베이스를연결 데이터베이스응용의구조 Front-end Middle

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):

More information

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드 서블릿의기초 Servlet & JSP 2/70 Contents 학습목표 서블릿클래스는자바클래스형태로구현되는웹애플리케이션프로그램이며, 일반적인자바클래스를작성할때보다지켜야할규칙이많다. 이장에서는그규칙들을배워보자. 내용 서블릿이란? 웹컨테이너란? 서블릿클래스의작성, 컴파일, 설치, 등록 톰캣관리자프로그램사용하기 웹브라우저로부터데이터입력받기 3/70 1. 서블릿이란?

More information