jakarta-struts-1.1.zip 解壓webapps/struts-blank.war 複製至 Tomcat/webappsstruts-blank 空白專案模板struts-example.war 學習完整功能示範<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=gb2312" %>
<html:html>
<head><title>Logon</title></head>
<body>
<html:errors/>
<html:form action="/Logon" focus="username">
username: <html:text property="username" size="25"/>
password: <html:password property="password" size="25"/>
<html:submit property="submit"/>
</html:form>
</body>
</html:html>
package com.logon.app;
import org.apache.struts.action.ActionForm;
public class LogonForm extends ActionForm {
private String username;
private String password;
public LogonForm() { username = null; password = null; }
// getter/setter 省略
public void reset(ActionMapping mapping, HttpServletRequest request) {
username = null; password = null;
}
}
package com.logon.app;
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class LogonAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
LogonForm f = (LogonForm) form;
ActionErrors errors = new ActionErrors();
if ("bluesunny".equals(f.getUsername()) && "bluesunny".equals(f.getPassword())) {
return mapping.findForward("success");
} else {
errors.add("login", new ActionError("Logon.failed"));
saveErrors(request, errors);
return mapping.findForward("failure");
}
}
}
<web-app>
<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>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list><welcome-file>Logon.jsp</welcome-file></welcome-file-list>
<taglib><taglib-uri>/tags/struts-bean</taglib-uri><taglib-location>/WEB-INF/struts-bean.tld</taglib-location></taglib>
<taglib><taglib-uri>/tags/struts-html</taglib-uri><taglib-location>/WEB-INF/struts-html.tld</taglib-location></taglib>
<taglib><taglib-uri>/tags/struts-logic</taglib-uri><taglib-location>/WEB-INF/struts-logic.tld</taglib-location></taglib>
<taglib><taglib-uri>/tags/struts-tiles</taglib-uri><taglib-location>/WEB-INF/struts-tiles.tld</taglib-location></taglib>
</web-app>
<struts-config>
<form-beans>
<form-bean name="LogonForm" type="com.logon.app.LogonForm"/>
</form-beans>
<action-mappings>
<action path="/Logon"
type="com.logon.app.LogonAction"
name="LogonForm"
scope="request"
input="Logon.jsp">
<forward name="success" path="/success.jsp"/>
<forward name="failure" path="/Logon.jsp"/>
</action>
</action-mappings>
<message-resources parameter="resources.application"/>
</struts-config>
Logon.failed = Logon failed! Please Logon in again!
successfully!
/app (Context Root)
Logon.jsp, success.jsp
/WEB-INF
web.xml, struts-config.xml
/lib
struts.jar, commons-*.jar
/classes
/com/logon/app
LogonForm.class, LogonAction.class
/resources
application.properties
WEB-INF/classesapp 放入 Tomcat/webapps 或打包成 app.warhttps://localhost:8080/app/此範例涵蓋 Struts 1.1 核心 MVC 流程:JSP 標籤庫綁定 ActionForm → Action 處理邏輯與驗證 → ActionErrors 回報錯誤 → struts-config.xml 統一導航。掌握此架構即可擴展至實務專案。