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
が実際にページを返すことを理解しています。
フローは次のとおりです。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
あなたは答えとしてこれを置いたはずです:) –
http://struts.apache.org/2.0.6/docs/the-struts-2-request-flow.html – ben