2012-04-03 7 views
-1

strutsを使って基本的なアプリケーションを書くのを学ぶときに、うまく動作する次のコードが出てきました。全体の仕組みはどうですか?

のweb.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
<servlet> 
    <servlet-name>action</servlet-name> 
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
    <init-param> 
     <param-name>config</param-name> 
     <param-value>/WEB-INF/struts-config.xml</param-value> 
    </init-param> 
    <init-param> 
     <param-name>debug</param-name> 
     <param-value>2</param-value> 
    </init-param> 
    <init-param> 
     <param-name>detail</param-name> 
     <param-value>2</param-value> 
    </init-param> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>action</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

index.jspを

jsp:forward page="HelloWorld.do"/> 

支柱-config.xmlの

<struts-config> 

<form-beans> 
<form-bean name="HelloWorldActionForm" 

タイプ= "com.vaannila.HelloWorldActionForm" />

<action-mappings> 
<action input="/index.jsp" name="HelloWorldActionForm" path="/HelloWorld" scope="session" type="com.vaannila.HelloWorldAction"> 
<forward name="success" path="/helloWorld.jsp" /> 
</action> 
</action-mappings> 

HelloWorldActionForm

public class HelloWorldActionForm extends 
org.apache.struts.action.ActionForm { 

private String message; 

public String getMessage() { 
    return message; 
} 

public void setMessage(String Message) { 
    message = Message; 
} 

} 

HelloWorldAction.java

public class HelloWorldAction extends org.apache.struts.action.Action { 

private final static String SUCCESS = "success"; 

public ActionForward execute(ActionMapping mapping,ActionForm form, 
HttpServletRequest request,HttpServletResponse response) throws Exception { 

HelloWorldActionForm helloWorldForm = (HelloWorldActionForm) form; 
helloWorldForm.setMessage("Hello World!"); 
return mapping.findForward(SUCCESS); 
} 
} 

helloWorld.jsp

Hey ! It's me from struts. 

アプリケーションが正常に動作します。しかし、私がindex.jspを開いた後に、HelloWorld.doが最終的にhelloWorld.jspに達するリクエストはどうやって理解できないのですか?私はHelloWorldActionが実際にページを返すことを理解しています。

+1

フローは次のとおりです。index.jspにアクセスすると、その要求はHに転送されますelloWorld.do(jsp:forwardを参照)。アプリケーションサーバーは.doパターンを見て、リクエストをActionServlet(web.xml参照)に渡します。これで、ActionServletはstruts-config.xmlファイルで設定されました。設定ファイルには、/ HelloWorld用に定義されたアクションがあります。したがって、リクエストはHelloWorldActionによって処理され、 'success'コードが返されます。これはActionServlet 'controller'によって返される 'view'であるhelloWorld.jsp(やはりstruts-config.xmlを参照)にマップされます。希望が役立ちます。 – ben

+1

あなたは答えとしてこれを置いたはずです:) –

+0

http://struts.apache.org/2.0.6/docs/the-struts-2-request-flow.html – ben

答えて

0

あなたHelloWorldAction.executeリターン(有効文字列)"成功" THEN

<forward name="success" path="/helloWorld.jsp" /> 

マッチ"成功"とは"/helloWorld.jsp"を提供します

+0

タグ 'アクション入力="/index.jsp "name =" HelloWorldActionForm "パス="/HelloWorld "スコープ="セッション "type =" com.vaannila.HelloWorldAction ">' _name_属性は何を伝えますか? –