struts1과 설정이 같은 부분과 log4j설정등은 올리지 않았습니다.
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
작성자 : 김길재
1. struts.xml
우선 struts-config.xml은 struts.xml로 이름이 변경되었습니다.
위치는 전과 다르게 WEB-INF/classes입니다.
-------------------------------------------------------
--------------- struts.xml------------------------------
-------------------------------------------------------
<?xml version="1.0" encoding="EUC-KR" ?>
<!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.enable.DynamicMethodInvocation"
value="true" />
<!-- 개발모드 사용여부입니다.-->
<constant name="struts.devMode" value="true" />
<!-- 인클루드가 가능합니다. 경로는 strus.xml과 같은 경로입니다. -->
<include file="test.xml"/>
</struts>
2. test.xml
struts.xml에서 인클루드한 test.xml을 보도록 하겠습니다.
<?xml version="1.0" encoding="EUC-KR" ?>
<!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.enable.DynamicMethodInvocation"
value="true" />
<constant name="struts.devMode" value="true" />
<!-- /test아래의 url에 해당하는 action입니다.-->
<package name="test"
namespace="/test"
extends="struts-default">
<!-- 한 액션파일에서 다수의 메서드호출-->
<!-- struts1의 DefaultAction과 같은 기능 -->
<action name="*"
method="{1}"
class="test.TestAction">
<!-- 액션에서 request객체를 받는데 사용 -->
<interceptor-ref name="servlet-config" />
<!-- 메서드에서 리턴하는 값과-->
<!-- 파라미터 name의 값이 일치하면-->
<!-- result태그의 값으로 포워딩-->
<result name="successTest">
/test/test2.jsp
</result>
</action>
<!-- 잘못된 주소일 경우에 거치게 되는 Action -->
<action name="defaultAction">
<result>/common/wrongAction.jsp</result>
</action>
</package>
</struts>
3. TestAction.java
앞의 test.xml의 액션태그에서 본바와 같이 한 액션에서 /test/메서드명.action
을 호출하면 해당 메서드로 이동합니다.
-------------------------------------------------------
--------------- TestAction ------------------------------
-------------------------------------------------------
package test;
import javax.servlet.http.*;
import org.apache.struts2.interceptor.*;
import com.opensymphony.xwork2.*;
/**
* Base Action class for the Tutorial package.
*/
public class TestAction extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
/**
*
*/
private static final long serialVersionUID = 1L;
public String test1() throws Exception {
System.out.println("/test/test1.action start");
// request를 가져온다.
String names = request.getParameter("name");
System.out.println("name = " + names);
System.out.println("/test/test.action end");
return "successTest";
}
public String test2() throws Exception {
System.out.println("/test/test2.action start");
// request를 가져온다.
String names = request.getParameter("name");
System.out.println("name = " + names);
System.out.println("/test/test.action end");
return "successTest";
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
4. test1.jsp
시작페이지입니다.
-------------------------------------------------------
--------------- test1.jsp ------------------------------
-------------------------------------------------------
<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<html>
<head>
<title>Test</title>
</head>
<body>
<form name="test1Form" method="post" action="/test/test1.action">
test1()메서드를 거치는 경우
name :
<input type="text" name="name">
<input type="submit" value="입력">
</form>
<form name="test2Form" method="post" action="/test/test2.action">
test2()메서드를 거치는 경우
name :
<input type="text" name="name">
<input type="submit" value="입력">
</form>
</body>
</html>
5. test2.jsp
액션 클래스를 걸쳐 포워딩되는 페이지입니다.
-------------------------------------------------------
--------------- test2.jsp ------------------------------
-------------------------------------------------------
<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%
String name = request.getParameter("name");
%>
<html>
<head>
<title>Test</title>
</head>
<body>
Hello! <%=name%>!!!
</body>
</html>
===========================================================
마무리.
struts1에 비해 사용법이 한결 가벼워졌다는 느낌이 들었습니다.
제공하는 jsp태그는 소스를 간단히 하기 위해 제거하였습니다.
관심이 있으신 분은 jsp태그도 사용해 보신다면 더 강해진 기능을
보실 수가 있을 겁니다.
앞의 test.xml의 액션태그에서 본바와 같이 한 액션에서 /test/메서드명.action
을 호출하면 해당 메서드로 이동합니다.
-------------------------------------------------------
--------------- TestAction ------------------------------
-------------------------------------------------------
package test;
import javax.servlet.http.*;
import org.apache.struts2.interceptor.*;
import com.opensymphony.xwork2.*;
/**
* Base Action class for the Tutorial package.
*/
public class TestAction extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
/**
*
*/
private static final long serialVersionUID = 1L;
public String test1() throws Exception {
System.out.println("/test/test1.action start");
// request를 가져온다.
String names = request.getParameter("name");
System.out.println("name = " + names);
System.out.println("/test/test.action end");
return "successTest";
}
public String test2() throws Exception {
System.out.println("/test/test2.action start");
// request를 가져온다.
String names = request.getParameter("name");
System.out.println("name = " + names);
System.out.println("/test/test.action end");
return "successTest";
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
4. test1.jsp
시작페이지입니다.
-------------------------------------------------------
--------------- test1.jsp ------------------------------
-------------------------------------------------------
<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<html>
<head>
<title>Test</title>
</head>
<body>
<form name="test1Form" method="post" action="/test/test1.action">
test1()메서드를 거치는 경우
name :
<input type="text" name="name">
<input type="submit" value="입력">
</form>
<form name="test2Form" method="post" action="/test/test2.action">
test2()메서드를 거치는 경우
name :
<input type="text" name="name">
<input type="submit" value="입력">
</form>
</body>
</html>
5. test2.jsp
액션 클래스를 걸쳐 포워딩되는 페이지입니다.
-------------------------------------------------------
--------------- test2.jsp ------------------------------
-------------------------------------------------------
<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%
String name = request.getParameter("name");
%>
<html>
<head>
<title>Test</title>
</head>
<body>
Hello! <%=name%>!!!
</body>
</html>
===========================================================
마무리.
struts1에 비해 사용법이 한결 가벼워졌다는 느낌이 들었습니다.
제공하는 jsp태그는 소스를 간단히 하기 위해 제거하였습니다.
관심이 있으신 분은 jsp태그도 사용해 보신다면 더 강해진 기능을
보실 수가 있을 겁니다.
댓글 없음:
댓글 쓰기