Struts 2-Hello World 예제
Struts 2 아키텍처에서 이미 배웠 듯이 하이퍼 링크를 클릭하거나 Struts 2 웹 애플리케이션에서 HTML 양식을 제출할 때 입력은 Actions라는 Java 클래스로 전송되는 Controller에 의해 수집됩니다. Action이 실행 된 후 결과는 응답을 렌더링 할 리소스를 선택합니다. 자원은 일반적으로 JSP이지만 PDF 파일, Excel 스프레드 시트 또는 Java 애플릿 창일 수도 있습니다.
이미 개발 환경을 구축했다고 가정합니다. 이제 첫 번째 빌드를 진행하겠습니다.Hello World Struts2계획. 이 프로젝트의 목적은 사용자 이름을 수집하고 "Hello World"다음에 사용자 이름을 표시하는 웹 애플리케이션을 빌드하는 것입니다.
Struts 2 프로젝트에 대해 다음 네 가지 구성 요소를 만들어야합니다.
Sr. 아니요 | 구성 요소 및 설명 |
---|---|
1 | Action 완전한 비즈니스 로직을 포함하고 사용자, 모델 및보기 간의 상호 작용을 제어하는 조치 클래스를 작성하십시오. |
2 | Interceptors 필요한 경우 인터셉터를 생성하거나 기존 인터셉터를 사용합니다. 이것은 컨트롤러의 일부입니다. |
삼 | View 사용자와 상호 작용하여 입력을 받고 최종 메시지를 표시 할 JSP를 만듭니다. |
4 | Configuration Files 작업,보기 및 컨트롤러를 연결하는 구성 파일을 만듭니다. 이러한 파일은 struts.xml, web.xml, struts.properties입니다. |
Eclipse IDE를 사용하여 필요한 모든 구성 요소가 Dynamic Web Project 아래에 생성됩니다. 이제 Dynamic Web Project 생성부터 시작하겠습니다.
동적 웹 프로젝트 만들기
Eclipse를 시작한 다음 File > New > Dynamic Web Project 프로젝트 이름을 다음과 같이 입력하십시오. HelloWorldStruts2 다음 화면과 같이 나머지 옵션을 설정하십시오.
다음 화면에서 모든 기본 옵션을 선택하고 마지막으로 확인하십시오. Generate Web.xml deployment descriptor선택권. 그러면 Eclipse에서 동적 웹 프로젝트가 생성됩니다. 이제Windows > Show View > Project Explorer, 다음과 같이 프로젝트 창을 볼 수 있습니다.
이제 struts 2 lib 폴더에서 다음 파일을 복사하십시오. C:\struts-2.2.3\lib 우리 프로젝트의 WEB-INF\lib폴더. 이렇게하려면 다음 파일을 모두 WEB-INF \ lib 폴더로 끌어서 놓기 만하면됩니다.
- commons-fileupload-x.y.z.jar
- commons-io-x.y.z.jar
- commons-lang-x.y.jar
- commons-logging-x.y.z.jar
- commons-logging-api-x.y.jar
- freemarker-x.y.z.jar
- javassist-.xy.z.GA
- ognl-x.y.z.jar
- struts2-core-x.y.z.jar
- xwork-core.x.y.z.jar
액션 클래스 생성
액션 클래스는 Struts 2 애플리케이션의 핵심이며 우리는 대부분의 비즈니스 로직을 액션 클래스에 구현합니다. 이제 Java 파일 HelloWorldAction.java를Java Resources > src 패키지 이름으로 com.tutorialspoint.struts2 아래에 주어진 내용으로.
Action 클래스는 사용자가 URL을 클릭 할 때 사용자 작업에 응답합니다. 하나 이상의 Action 클래스 메서드가 실행되고 String 결과가 반환됩니다. 결과 값에 따라 특정 JSP 페이지가 렌더링됩니다.
package com.tutorialspoint.struts2;
public class HelloWorldAction {
private String name;
public String execute() throws Exception {
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
이것은 "name"이라는 하나의 속성이있는 매우 간단한 클래스입니다. "name"속성에 대한 표준 getter 및 setter 메서드와 "success"문자열을 반환하는 실행 메서드가 있습니다.
Struts 2 프레임 워크는 HelloWorldAction클래스를 작성하고 사용자의 작업에 대한 응답으로 실행 된 메서드를 호출합니다. 마지막으로 String 상수를 반환하는이 메서드에 비즈니스 논리를 넣습니다. 즉, 각 URL에 대해 하나의 액션 클래스를 구현해야하며 해당 클래스 이름을 액션 이름으로 직접 사용하거나 아래와 같이 struts.xml 파일을 사용하여 다른 이름에 매핑 할 수 있습니다.
보기 만들기
최종 메시지를 표시하려면 JSP가 필요합니다.이 페이지는 미리 정의 된 작업이 발생하고이 매핑이 struts.xml 파일에 정의 될 때 Struts 2 프레임 워크에 의해 호출됩니다. 따라서 아래 jsp 파일을 생성하겠습니다.HelloWorld.jspEclipse 프로젝트의 WebContent 폴더에 있습니다. 이를 수행하려면 프로젝트 탐색기에서 WebContent 폴더를 마우스 오른쪽 단추로 클릭하고New >JSP File.
<%@ page contentType = "text/html; charset = UTF-8" %>
<%@ taglib prefix = "s" uri = "/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World, <s:property value = "name"/>
</body>
</html>
taglib 지시문은 Servlet 컨테이너에이 페이지가 Struts 2 태그와이 태그 앞에 s.
s : property 태그는 메소드에 의해 리턴되는 조치 클래스 특성 "name>의 값을 표시합니다. getName() HelloWorldAction 클래스의.
메인 페이지 생성
우리는 또한 만들어야합니다 index.jspWebContent 폴더에 있습니다. 이 파일은 사용자가 클릭하여 Struts 2 프레임 워크에 HelloWorldAction 클래스의 정의 된 메소드를 호출하고 HelloWorld.jsp보기를 렌더링하도록 지시 할 수있는 초기 조치 URL 역할을합니다.
<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action = "hello">
<label for = "name">Please enter your name</label><br/>
<input type = "text" name = "name"/>
<input type = "submit" value = "Say Hello"/>
</form>
</body>
</html>
그만큼 hello위 뷰 파일에 정의 된 액션은 struts.xml 파일을 사용하여 HelloWorldAction 클래스와 그 execute 메소드에 매핑됩니다. 사용자가 제출 버튼을 클릭하면 Struts 2 프레임 워크가 HelloWorldAction 클래스에 정의 된 실행 메서드를 실행하고 메서드의 반환 된 값에 따라 적절한보기가 선택되고 응답으로 렌더링됩니다.
구성 파일
URL, HelloWorldAction 클래스 (모델) 및 HelloWorld.jsp (뷰)를 함께 연결하려면 매핑이 필요합니다. 매핑은 Struts 2 프레임 워크에 사용자의 작업 (URL)에 응답 할 클래스, 해당 클래스의 어떤 메서드가 실행될 것인지, 메서드가 반환하는 String 결과에 따라 렌더링 할 뷰를 알려줍니다.
이제 다음과 같은 파일을 생성하겠습니다. struts.xml. Struts 2에서는 클래스 폴더에 struts.xml이 있어야합니다. 따라서 WebContent / WEB-INF / classes 폴더 아래에 struts.xml 파일을 작성하십시오. Eclipse는 기본적으로 "classes"폴더를 생성하지 않으므로 직접 수행해야합니다. 이렇게하려면 프로젝트 탐색기에서 WEB-INF 폴더를 마우스 오른쪽 버튼으로 클릭하고New > Folder. struts.xml은 다음과 같아야합니다.
<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name = "struts.devMode" value = "true" />
<package name = "helloworld" extends = "struts-default">
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success">/HelloWorld.jsp</result>
</action>
</package>
</struts>
위의 구성 파일과 관련하여 이해해야 할 단어가 거의 없습니다. 여기에서 상수를 설정합니다.struts.devMode ...에 true, 개발 환경에서 작업하고 있으며 유용한 로그 메시지를 확인해야하기 때문입니다. 그런 다음helloworld.
패키지를 만드는 것은 작업을 함께 그룹화하려는 경우 유용합니다. 이 예에서는 URL에 해당하는 "hello"로 작업 이름을 지정했습니다./hello.action 그리고에 의해 백업됩니다HelloWorldAction.class. 그만큼execute 의 방법 HelloWorldAction.class URL이 실행될 때 실행되는 방법입니다. /hello.action호출됩니다. execute 메소드의 결과가 "success"를 반환하면 사용자를HelloWorld.jsp.
다음 단계는 web.xmlStruts 2에 대한 모든 요청의 진입 점 인 파일입니다. Struts2 애플리케이션의 진입 점은 배포 설명자 (web.xml)에 정의 된 필터입니다. 따라서 web.xml에 org.apache.struts2.dispatcher.FilterDispatcher 클래스의 항목을 정의합니다. web.xml 파일은 WebContent 아래의 WEB-INF 폴더 아래에 작성되어야합니다. Eclipse는 프로젝트를 만들 때 이미 스켈레톤 web.xml 파일을 만들었습니다. 따라서 다음과 같이 수정 해 보겠습니다.
<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id = "WebApp_ID" version = "3.0">
<display-name>Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
index.jsp를 환영 파일로 지정했습니다. 그런 다음 모든 URL에서 실행되도록 Struts2 필터를 구성했습니다 (예 : / * 패턴과 일치하는 모든 URL).
상세 로그를 활성화하려면
Struts 2로 작업하는 동안 완전한 로깅 기능을 활성화하려면 logging.properties 아래 파일 WEB-INF/classes폴더. 속성 파일에 다음 두 줄을 유지하십시오-
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = \
java.util.logging.ConsoleHandler
기본 logging.properties는 로깅을 stdout 및 FileHandler로 라우팅하기위한 ConsoleHandler를 지정합니다. 핸들러의 로그 수준 임계 값은 SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST 또는 ALL을 사용하여 설정할 수 있습니다.
그게 다야. Struts 2 프레임 워크를 사용하여 Hello World 애플리케이션을 실행할 준비가되었습니다.
응용 프로그램 실행 절차
프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 Export > WAR File War 파일을 만듭니다.
그런 다음 Tomcat의 webapps 디렉토리에이 WAR을 배포합니다.
마지막으로 Tomcat 서버를 시작하고 URL에 액세스하십시오. http://localhost:8080/HelloWorldStruts2/index.jsp. 이것은 다음 화면을 제공합니다-
"Struts2"값을 입력하고 페이지를 제출하십시오. 다음 페이지가 보여야합니다
정의 할 수 있습니다. index struts.xml 파일의 액션으로,이 경우 인덱스 페이지를 다음과 같이 호출 할 수 있습니다. http://localhost:8080/HelloWorldStruts2/index.action. 아래에서 인덱스를 작업으로 정의하는 방법을 확인하십시오.
<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name = "struts.devMode" value = "true" />
<package name = "helloworld" extends = "struts-default">
<action name = "index">
<result >/index.jsp</result>
</action>
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success">/HelloWorld.jsp</result>
</action>
</package>
</struts>