520 likes | 751 Views
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.
E N D
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 웹 서버 컨테이너 Class DB . . .
Web Application Server 웹서버 기능 Servlet/JSP 컨테이너 기능 EJB 컨테이너 기능 트랜잭션 서버 보안 서버 네이밍 서버 JDBC 지원 톰캣, RESIN, 웹로직, 웹투비
Why JSP? 실무 .php .jsp .asp .do .action
개발환경구축 • 톰캣을 설치할 디렉토리 만들기 • 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
개발환경구축 • 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
개발환경구축 netstat –antp kill xxxx http://bit.sparcs.org:8042
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
JSP Java Server Page 스크립트언어
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
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
Web Application Server HTML 웹 어플리케이션 서버(WAS) JS 웹 서버 컨테이너 Class DB . . .
Web Application Server WAS JVM 서블릿 객체 서블릿 컨테이너 스레드 웹 서버
JSP to Servlet vi ~/struts_tutorial/apache-tomcat-7.0.22/work/Catalina/localhost/_/org/apache/jsp/index_jsp.java
111115 구성모 Struts Tutorial 2
What we are done WAS Container Tomcat JSP Servlet Context
Tomcat • bin • lib • conf • logs • catalina… • host-manager… • localhost… • temp • work • webapps • ROOT • examples
Create new context cd struts_tutorial mkdir proj1 cd proj1 mkdir WEB-INF mkdir WEB-INF/classes mkdir WEB-INF/lib
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
Struts2 • Web Framework • MVC architecture • POJO • action • form • Zero configuration • Interceptor • Tag • Ajax • Plug-in
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
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
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
필터 디스패처 스트러츠2의 컨트롤러 액션을 실행하기 위한 환경을 구축 사용자에게 보낼 응답을 처리
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
Struts2 Annotation 패키지 경로에 action이 들어갈것. struts나 struts2도 된다. Action annotation을 액션 메소드에 붙여주자. Action annotation을 사용하지 않고 class에 Result annotation을 붙여서 액션을 매핑할 수도 있다. 클래스명은 Action으로 끝나야한다.
111122 구성모 Struts Tutorial 3
Struts2 config browser http://bit.sparcs.org:8042/proj1/config-browser/index 현재 매핑되어진 모든 액션과 URL을 확인
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
Print variable Hello, World! <p> ${message} vi ../../HelloWorld.jsp http://bit.sparcs.org:8042/proj1/board/hello
Directive <%@ page import=“java.util.Date” %> <%@ page contentType=“text/html; charset=utf-8” %> <%@ include file=“board01.jsp” %>
<%@ 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
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
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
111129 구성모 Struts Tutorial 4
RESULT … @Action(value="hello", results={ @Result(name="success", location="/HelloWorld.jsp"), @Result(name=“error", type=“dispatcher”,location="/error.jsp")}) public String execute(){ …
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
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; } }
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>
More - JSP Script Action Tag Cookie Session request, response Exception handler Bean OGNL FILE
More - Struts Interceptor Action mapper Annotation Ajax Logging
More • Model • DAO, VO • Template • FreeMaker • SiteMesh • Tiles • ORM • mybatis • hibernate