Как все это работает? - PullRequest
0 голосов
/ 03 апреля 2012

при обучении написанию базовых приложений с использованием 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.

Приложение отлично работает. Но я не понимаю, как запрос HelloWorld.do наконец достигает helloWorld.jsp после того, как я открыл index.jsp? Я понимаю, что на самом деле HelloWorldAction возвращает страницу.

1 Ответ

0 голосов
/ 03 апреля 2012

Когда ваш HelloWorldAction.execute возвращает (действует строка) "success"

ТО

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

соответствует "success" и доставляет "/ helloWorld.jsp"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...