Download presentation
1
구성모 Struts Tutorial
2
Presenter ㅎㅇㅎㅇ
3
Web Application Server
HTML JS 웹 서버 (Apache, IIS, …) JPG .
4
Web Application Server
HTML JS 웹 서버 (Apache, IIS, …) CGI DB .
5
Web Application Server
HTML 웹 어플리케이션 서버(WAS) JS 웹 서버 컨테이너 Class DB .
6
Web Application Server
웹서버 기능 Servlet/JSP 컨테이너 기능 EJB 컨테이너 기능 트랜잭션 서버 보안 서버 네이밍 서버 JDBC 지원 톰캣, RESIN, 웹로직, 웹투비
7
Why JSP? 실무 .php .jsp .asp .do .action
8
개발환경구축 mkdir struts_tutorial
톰캣을 설치할 디렉토리 만들기 mkdir struts_tutorial 톰캣7 다운로드 tar -xvf
9
개발환경구축 <Server port=“8005” <Connector port=“8080”
cd apache-tomcat /bin ./catalina.sh start ./catalina.sh stop vi ../conf/server.xml <Server port=“8005” 8005 -> 8041 <Connector port=“8080” 8080 -> 8042 <Connector port=“8009” 8009 -> 8043
10
개발환경구축 netstat –antp kill xxxx
11
JSP cd ../webapps/ROOT mv index.jsp _index.jsp vi index.jsp index.jsp
<html> <head> </head> <body> Hello, World! </body> <html> <head> </head> <body> <% out.println(new java.util.Date()); %> </body>
12
JSP Java Server Page 스크립트언어
13
Context
14
Servlet cd WEB-INF mkdir classes cd classes vi hello.java
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.annotation.WebServlet; @WebServlet(urlPatterns={"/hello"}) public class hello extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<head>"); out.println("</head>"); out.println("<body>"); out.println("Hello, World!"); out.println("</body>"); out.println("</html>"); out.close(); } cd WEB-INF mkdir classes cd classes vi hello.java
15
Servlet javac –d . hello.java vi ~/.bash_profile CLASSPATH=$CLASSPATH:.:/home/breadfish/struts_tutorial/apache-tomcat /lib/* export CLASSPATH source ~/.bash_profile vi ../web.xml metadata-complete=“true” true -> false restart
16
Web Application Server
HTML 웹 어플리케이션 서버(WAS) JS 웹 서버 컨테이너 Class DB .
17
Web Application Server
WAS JVM 서블릿 객체 서블릿 컨테이너 스레드 웹 서버
18
JSP to Servlet vi ~/struts_tutorial/apache-tomcat /work/Catalina/localhost/_/org/apache/jsp/index_jsp.java
19
구성모 Struts Tutorial 2
20
What we are done WAS Container Tomcat JSP Servlet Context
21
Context
22
Tomcat catalina… host-manager… localhost… ROOT examples bin lib conf
logs catalina… host-manager… localhost… temp work webapps ROOT examples
23
Create new context cd struts_tutorial mkdir proj1 cd proj1
mkdir WEB-INF mkdir WEB-INF/classes mkdir WEB-INF/lib
24
Create new context Hello vi tomcat_dir/conf/server.xml vi hello.jsp
Just before </Host> <Context path=“proj1” reloadable=“true” docBase=“/home/breadfish/struts_tutorial/proj1” workDir=“/home/breadfish/struts_tutorial/proj1/work”> </Context> vi hello.jsp Hello tomcat restart
25
Struts2 action form Web Framework MVC architecture POJO
Zero configuration Interceptor Tag Ajax Plug-in
26
Struts2 install cd ~/struts_tutorial
unzip cd struts-2.2.3/lib copy all jars to [docBase]/WEB-INF/lib
27
Struts2 Install commons-fileupload-1.2.2.jar
commons-logging-api-1.1.jar struts2-convention-plugin jar commons-lang-2.4.jar ognl jar struts2-dojo-plugin jar commons-logging jar struts2-config-browser-plugin jar asm freemaker xwork struts2-core
28
Struts2 intall cd [docBase]/WEB-INF/classes vi StrutsFilter.java
javac –d . StrutsFilter.java import javax.servlet.Filter; import javax.servlet.annotation.*; import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter; urlPatterns="/*", filterName="struts2", value="")}) public class StrutsFilter extends StrutsPrepareAndExecuteFilter implements Filter{ private static final long serialVersionUID = 1L; } /[ContextPath]/ 하위로 들어오는 모든 url은 필터디스패처로 들어간다
29
필터 디스패처 스트러츠2의 컨트롤러 액션을 실행하기 위한 환경을 구축 사용자에게 보낼 응답을 처리
30
Struts2 Hello, World Hello, World! vi HelloWorldAction.java
javac –d . HelloWorldAction.java tomcat restart package com.proj1.action import org.apache.struts2.convention.annotation.*; public class HelloWorldAction{ results={ location="/HelloWorld.jsp")}) public String execute(){ return "success"; } } vi ../../HelloWorld.jsp Hello, World!
31
Struts2 Annotation 패키지 경로에 action이 들어갈것. struts나 struts2도 된다.
Action annotation을 액션 메소드에 붙여주자. Action annotation을 사용하지 않고 class에 Result annotation을 붙여서 액션을 매핑할 수도 있다. 클래스명은 Action으로 끝나야한다.
32
구성모 Struts Tutorial 3
33
Struts2 config browser 현재 매핑되어진 모든 액션과 URL을 확인
34
Print variable cd [docBase]/WEB-INF/classes vi HelloWorldAction.java
package com.proj1.action; import org.apache.struts2.convention.annotation.*; @Namespace("/board") public class HelloWorldAction{ private String message; @Action(value="hello", results={ @Result(name="success", location="/HelloWorld.jsp")}) public String execute(){ message = "I'm breadfish"; return "success"; } public String getMessage(){ return message; public void setMessage(String message){ this.message = message;
35
Print variable vi ../../HelloWorld.jsp
Hello, World! <p> ${message}
36
JSP TAG 종류 사용용도 형식 지시자(Directive) JSP 페이지의 속성 지정 주석(Comment)
<% %> 선언(declaration) 변수와 메소드 선언 <%! %> 표현식(expression) 계산식이나 함수를 호출한 결과를 문자열 형태로 출력 <%= %> 스크립트릿(scriptlet) 자바 코드 기술 <% %> 액션 태그 자바 빈이나 애플릿 서버 모듈과 연결 <jsp:action> </jsp:action>
37
Directive 종류 사용용도 page 해당 JSP 페이지의 속성을 지정 include
현재 페이지에 다른 파일의 내용을 삽입할 때 사용 taglib 태그 라이브러리에서 태그를 꺼내와 사용할 수 있는 기능 제공 page import=“java.util.Date” %> page contentType=“text/html; charset=utf-8” %> include file=“board01.jsp” %>
38
vi ../../HelloWorld.jsp page contentType=“text/html; charset=utf-8” %> taglib prefix=“s” uri=“/struts-tags” %> Hello, World! <p> ${message} <s:property value=“message”></s:property>
39
print array HelloWorldAction.java package com.proj1.action;
import org.apache.struts2.convention.annotation.*; import java.util.List; import java.util.ArrayList; @Namespace("/board") public class HelloWorldAction{ private String message; private List<String> messages; @Action(value="hello", results={ @Result(name="success", location="/HelloWorld.jsp")}) public String execute(){ message = "I'm breadfish"; messages = new ArrayList<String>(); for(int i=0 ; i<10 ; i++){ messages.add("breadfish" + i); } return "success"; public String getMessage(){ return message; } public void setMessage(String message){ this.message = message; public List<String> getMessages(){ return messages; public void setMessages(List<String> messages){ this.messages = messages;
40
print array HelloWorld.jsp
page contentType="text/html; charset=utf-8" %> taglib prefix="s" uri="/struts-tags" %> Hello, World! <p> ${message} <s:property value="message"></s:property> <s:iterator value="messages"> <s:property></s:property> </s:iterator>
41
구성모 Struts Tutorial 4
42
RESULT … @Action(value="hello", results={
@Result(name="success", location="/HelloWorld.jsp"), @Result(name=“error", type=“dispatcher”, location="/error.jsp")}) public String execute(){ 리절트 타입 설명 Chain 액션 체인을 위하여 사용된다. Dispatcher JSP를 포함안 웹 리소스 연동을 위하여 사용된다. FreeMarker 프리마커 연동을 위하여 사용된다. HttpHeader 특수한 HTTP 작동을 조절하기 위해서 사용 Redirect 다른 URL로 리다이렉트하기 위해 사용 Stream 브라우저에게 inputStream을 스트리밍 하기 위해 사용 PlainText 특수한 페이지(jsp, html 등)의 컨텐츠 원본을 디스플레이 …
43
form input HelloWorldAction.java compile
package com.proj1.action; import org.apache.struts2.convention.annotation.*; import java.util.List; import java.util.ArrayList; @Namespace("/board") public class HelloWorldAction{ private String message; private List<String> messages; @Action(value="hello", results={ @Result(name="success", location="/HelloWorld.jsp")}) public String execute(){ message = "I'm breadfish"; messages = new ArrayList<String>(); for(int i=0 ; i<10 ; i++){ messages.add("breadfish" + i); } return "success"; … compile
44
struts-tags : form tag example
HelloWorld.jsp HelloWorldAction.java page contentType="text/html; charset=utf-8" %> taglib prefix="s" uri="/struts-tags" %> taglib prefix="sx" uri="/struts-dojo-tags" %> <html> <head> <sx:head/> </head> <body> <form action="" method="GET"> <sx:datetimepicker name="sdate"/> <input type="submit"/> </form> ${sdate} </body> </html> package com.proj1.action; import org.apache.struts2.convention.annotation.*; import java.util.List; import java.util.ArrayList; import java.util.Date; @Namespace("/board") public class HelloWorldAction{ private Date sdate; @Action(value="hello", results={ @Result(name="success", location="/HelloWorld.jsp")}) public String execute(){ return "success"; } public Date getSdate(){ return sdate; public void setSdate(Date sdate){ this.sdate = sdate;
45
struts-tags : control tag example
HelloWorld.jsp page contentType="text/html; charset=utf-8" %> taglib prefix="s" uri="/struts-tags" %> taglib prefix="sx" uri="/struts-dojo-tags" %> <html> <head> <sx:head/> </head> <body> <s:if test="%{message=='show'}"> <sx:textarea></sx:textarea> </s:if> <s:else> Message : ${message} </s:else> </body> </html>
46
Tags Control Tags if elseif else append generator iterator merge sort
subset Data Tags a action bean date debug i18n include param property push set text url
47
Tags Form Tags checkbox checkboxlist combobox doubleselect head file
hidden inputtransferselect label optiontransferselect optgroup password radio reset select submit textarea textfield token updownselect Ajax Tags a autocompleter bind datetimepicker div tabbedPanel tree treenode
48
More - JSP Script Action Tag Cookie Session request, response
Exception handler Bean OGNL FILE
49
More - Struts Interceptor Action mapper Annotation Ajax Logging
50
More DAO, VO FreeMaker SiteMesh Tiles mybatis hibernate Model Template
ORM mybatis hibernate
51
References 스트럿츠2 프로그래밍, 현철주 외 3명, 에이콘
초보 개발자를 위한 서블릿 JSP 프로그래밍, 성윤광 외 3명, 대림
52
Thanks Q&A 톰캣로그, /hello보는법, 서블릿의뜻
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.