2012-04-03 25 views
-1

Wenn ich lernte, grundlegende Anwendung mit Struts zu schreiben, stieß ich auf den folgenden Code, der gut funktioniert.Wie funktioniert das Ganze?

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

Verstrebungen-config.xml

<struts-config> 

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

type = "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

helloWorld.jsp

Hey ! It's me from struts. 

Die Anwendung funktioniert gut. Aber ich verstehe nicht, wie die Anfrage HelloWorld.do endlich helloWorld.jsp erreichen kann, nachdem ich index.jsp geöffnet hatte? Ich verstehe die Sache, dass HelloWorldAction tatsächlich die Seite zurückgibt.

+1

So geht der Ablauf: Wenn Sie auf index.jsp zugreifen, wird die Anfrage an H weitergeleitet elloWorld.do (Verweis jsp: vorwärts). Der App-Server, der das .do-Muster sieht, übergibt die Anfrage an ActionServlet (siehe: web.xml). Jetzt wurde das ActionServlet mit der Datei struts-config.xml konfiguriert. In der Konfigurationsdatei ist eine Aktion für/HelloWorld definiert. Daher wird die Anfrage von HelloWorldAction verarbeitet und gibt den 'Erfolg'-Code zurück, der HelloWorld.jsp zugeordnet ist (siehe auch struts-config.xml). Dies ist die' Ansicht ', die vom ActionServlet-Controller zurückgegeben wird. Ich hoffe, das hilft. – ben

+1

Sie sollten dies als eine Antwort niedergelegt haben :) –

+0

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

Antwort

0

Wenn Ihr HelloWorldAction.execute kehrt (effektiv ein String) "Erfolg"

DANN

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

Streichhölzer "Erfolg" und "/helloWorld.jsp" liefert

+0

im Tag' 'Was sagt _name_ Attribut? –