struts-config.xml로 검색한 결과 :: 시소커뮤니티[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

회원가입 I 비밀번호 찾기


SSISO Community검색
SSISO Community메뉴
[카페목록보기]
[블로그등록하기]  
[블로그리스트]  
SSISO Community카페
블로그 카테고리
정치 경제
문화 칼럼
비디오게임 스포츠
핫이슈 TV
포토 온라인게임
PC게임 에뮬게임
라이프 사람들
유머 만화애니
방송 1
1 1
1 1
1 1
1 1
1

struts-config.xml로 검색한 결과
등록일:2008-03-16 11:31:55
작성자:
제목:2. 스트럿츠2(Struts2) 어떻게 변했나? - Struts와 Struts2를 비교해보자.(1)


Struts 와 Struts2를 비교해보자.(1)

1. web.xml


web.xml이 변경되었다.  서블릿 방식이었던 Struts 에서 필터 방식으로 변경되었다.

url-pattern 을 변경할 수 없게 되었다?
기존 Struts 에선 아래의 <url-pattern>/*</url-pattern>을 *.do, *.ia 등 변경할 수 있었으나 현재론 불가능하다. 혹 변경가능하다면 답글 남겨주시기 바랍니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Struts Blank</display-name>

    <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>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>

 

2. struts.xml


Include가 가능하다.
개인적으로 가장 만족스런 부분이다.
프로젝트를 하다보면 기존 struts-config.xml(기존 Struts 설정파일)파일 하나에 모든 Action들을 기술해야 하기 때문에 서로 충돌나는 부분이 많았었다.
특히나 많은 인원으로 프로젝트를 진행하다 보면 Include의 필요성이 절실했다.
물론 혼자서 개발한다면야 문제될 부분이 전혀없지만.

패키징이 가능하다.
<package name="example" namespace="/example" extends="struts-default">
  <action name="HelloWorld" class="example.HelloWorld"></action>
</package>
namespace에 /example를 작성하면 아래와 같이 /example 밑에 액션을 호출한다.
http://localhost/struts2-blank-2.0.6/example/HelloWorld.action
기존 Struts 에선 아래와 같이 path에 모든걸 기술하였었다.
<action parameter="cmd" path="/example/HelloWorld" scope="request" type="org.apache.struts.actions.DispatchAction" validate="false">

Wildcard Mapping 지원이 편리하다.
기존의 Struts 에선 Action의 excute() 메소드 외의 다른 메소드를 콜하기 위해선 DispachAction을 쓰며 파라미터로 메소드명을 받았었다. Struts2 에선 아래와 같이 사용하면 해당 메소드를 호출한다.

기존 Struts url
http://localhost/struts2-blank-2.0.6/example/Login.action?cmd=input
Struts2에서의 url
http://localhost/struts2-blank-2.0.6/example/Login_input.action
        <action name="Login_*" method="{1}" class="example.Login">
            <result name="input">/example/Login.jsp</result>
            <result type="redirect-action">Menu</result>
        </action>

또한 아래와 같이 action명과 동일한 JSP를 호출할 수 있는 기능도 제공한다.
        <action name="*" class="example.ExampleSupport">
            <result>/example/{1}.jsp</result>
        </action>

 
- 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.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <include file="example.xml"/>

    <!-- Add packages here -->

</struts>

- example.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>

    <package name="example" namespace="/example" extends="struts-default">

        <action name="HelloWorld" class="example.HelloWorld">
            <result>/example/HelloWorld.jsp</result>
        </action>

        <action name="Login_*" method="{1}" class="example.Login">
            <result name="input">/example/Login.jsp</result>
            <result type="redirect-action">Menu</result>
        </action>

        <action name="*" class="example.ExampleSupport">
            <result>/example/{1}.jsp</result>
        </action>

        <!-- Add actions here -->
    </package>
</struts>

 

 

3. Action

Action에서 HttpServletRequest, HttpServletResponse 객체를 못쓴다?
Struts2는 injection 방식에 의존적이다.
아래와 같이 setMessage(String message) 메소드를 만들고 JSP에서
<input name='message'> 의 value 값을 입력후 이 액션을 호출하면 파라미터 값이 들어온다.
반대로 getMessage() 메소드를 만들고 JSP에서
<s:property value="message"/>을 쓰면 값이 들어온다.

참고로, ActionSupport를 상속받았는데 ActionSupport 엔 ActionContext 객체가 있다.
ActionContext.getContext()로 ActionContext 객체를 가져올 수 있으며 그 객체로부터 Session 안의 객체들을 가져올 수 있다.
ActionContext.getContext().getSession()


- example.HelloWorld.java
package example;
public class HelloWorld extends ActionSupport {

    public String execute() throws Exception {
        setMessage(getText(MESSAGE));
        return SUCCESS;
    }

    public static final String MESSAGE = "HelloWorld.message";

    private String message;
   
    public String getMessage() {
        return message;
    }
   
    public void setMessage(String message) {
        this.message = message;
    }
}

 

출처 : 범이(kkbum2000)