1 / 52

Struts Tutorial

111111 구성모. Struts Tutorial. Presenter. ㅎㅇㅎㅇ. http://sparcs.org/~breadfish/Struts_tutorial.ppt. Web Application Server. HTML. JS. 웹 서버 (Apache, IIS, …). JPG. Web Application Server. HTML. JS. 웹 서버 (Apache, IIS, …). CGI. DB. Web Application Server. HTML. 웹 어플리케이션 서버 (WAS). JS.

phuong
Télécharger la présentation

Struts Tutorial

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 111111 구성모 Struts Tutorial

  2. Presenter ㅎㅇㅎㅇ http://sparcs.org/~breadfish/Struts_tutorial.ppt

  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 • 톰캣7 다운로드 • http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat-7.0.22.tar.gz • tar -xvf

  9. 개발환경구축 • cd apache-tomcat-7.0.22/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 http://bit.sparcs.org:8042

  11. JSP index.jsp index.jsp <html> <head> </head> <body> Hello, World! </body> <html> <html> <head> </head> <body> <% out.println(new java.util.Date()); %> </body> <html> cd ../webapps/ROOT mv index.jsp _index.jsp vi index.jsp

  12. JSP Java Server Page 스크립트언어

  13. Context

  14. Servlet 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-7.0.22/lib/* • export CLASSPATH • source ~/.bash_profile • vi ../web.xml • metadata-complete=“true” • true -> false • restart • http://bit.sparcs.org:8042/hello

  16. Web Application Server HTML 웹 어플리케이션 서버(WAS) JS 웹 서버 컨테이너 Class DB . . .

  17. Web Application Server WAS JVM 서블릿 객체 서블릿 컨테이너 스레드 웹 서버

  18. JSP to Servlet vi ~/struts_tutorial/apache-tomcat-7.0.22/work/Catalina/localhost/_/org/apache/jsp/index_jsp.java

  19. 111115 구성모 Struts Tutorial 2

  20. What we are done WAS Container Tomcat JSP Servlet Context

  21. Context

  22. Tomcat • 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 • vi tomcat_dir/conf/server.xml • 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 • http://bit.sparcs.org:8042/proj1/hello.jsp

  25. Struts2 • Web Framework • MVC architecture • POJO • action • form • Zero configuration • Interceptor • Tag • Ajax • Plug-in

  26. Struts2 install cd ~/struts_tutorial http://apache.mirror.cdnetworks.com//struts/binaries/struts-2.2.3.1-all.zip 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-2.2.3.jar commons-lang-2.4.jar ognl-3.0.1.jar struts2-dojo-plugin-2.2.3.jar commons-logging-1.1.1.jar struts2-config-browser-plugin-2.2.3.jar asm freemaker xwork struts2-core

  28. Struts2 intall import javax.servlet.Filter;import javax.servlet.annotation.*;import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;@WebFilter(displayName="Struts2", urlPatterns="/*", filterName="struts2",        initParams={@WebInitParam(name="actionPackages", value="")})public class StrutsFilter extends StrutsPrepareAndExecuteFilter implements Filter{    private static final long serialVersionUID = 1L;} • /[ContextPath]/ 하위로 들어오는 모든 url은 필터디스패처로 들어간다 cd [docBase]/WEB-INF/classes vi StrutsFilter.java javac –d . StrutsFilter.java

  29. 필터 디스패처 스트러츠2의 컨트롤러 액션을 실행하기 위한 환경을 구축 사용자에게 보낼 응답을 처리

  30. Struts2 Hello, World package com.proj1.actionimport org.apache.struts2.convention.annotation.*;public class HelloWorldAction{     @Action(value="/hello", results={         @Result(name="success", location="/HelloWorld.jsp")})     public String execute(){         return "success";     } } • vi ../../HelloWorld.jsp • Hello, World! vi HelloWorldAction.java javac –d . HelloWorldAction.java tomcat restart http://bit.sparcs.org:8042/proj1/hello.action

  31. Struts2 Annotation 패키지 경로에 action이 들어갈것. struts나 struts2도 된다. Action annotation을 액션 메소드에 붙여주자. Action annotation을 사용하지 않고 class에 Result annotation을 붙여서 액션을 매핑할 수도 있다. 클래스명은 Action으로 끝나야한다.

  32. 111122 구성모 Struts Tutorial 3

  33. Struts2 config browser http://bit.sparcs.org:8042/proj1/config-browser/index 현재 매핑되어진 모든 액션과 URL을 확인

  34. Print variable 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; } } cd [docBase]/WEB-INF/classes vi HelloWorldAction.java

  35. Print variable Hello, World! <p> ${message} vi ../../HelloWorld.jsp http://bit.sparcs.org:8042/proj1/board/hello

  36. JSP TAG

  37. Directive <%@ page import=“java.util.Date” %> <%@ page contentType=“text/html; charset=utf-8” %> <%@ include file=“board01.jsp” %>

  38. <%@ page contentType=“text/html; charset=utf-8” %> <%@ taglib prefix=“s” uri=“/struts-tags” %> Hello, World! <p> ${message} <p> <s:property value=“message”></s:property> vi ../../HelloWorld.jsp

  39. print array 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; } } HelloWorldAction.java

  40. print array <%@ page contentType="text/html; charset=utf-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> Hello, World! <p> ${message} <p> <s:property value="message"></s:property> <s:iterator value="messages"> <p> <s:property></s:property> </s:iterator> HelloWorld.jsp

  41. 111129 구성모 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(){ …

  43. form input 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 • http://bit.sparcs.org:8042/proj1/board/hello?message=suckstruts HelloWorldAction.java

  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

  47. Tags

  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 • Model • DAO, VO • Template • FreeMaker • SiteMesh • Tiles • ORM • mybatis • hibernate

More Related