首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

Struts 1.x + Spring 整合實戰:從零建構登入範例專案

     編輯:關於JSP

    執行環境

    • Eclipse 3.2 + MyEclipse GA 5.0
    • Apache Tomcat 5.5.20
    • Struts 1.2 / Spring 1.2

    專案結構

    Welcome_SS/
    ├── WebRoot/
    │   ├── index.jsp
    │   ├── login.jsp
    │   ├── reinput_blank.jsp
    │   ├── reinput_error.jsp
    │   ├── success.jsp
    │   └── WEB-INF/
    │       ├── struts-config.xml
    │       ├── web.xml
    │       └── classes/applicationContext.xml
    └── src/
        └── com/yourcompany/struts/
            ├── action/LoginAction.java
            └── form/LoginForm.java
    

    關鍵配置檔

    struts-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC
      "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
      "https://struts.apache.org/dtds/struts-config_1_2.dtd">
    <struts-config>
        <form-beans>
            <form-bean name="loginForm" type="com.yourcompany.struts.form.LoginForm"/>
        </form-beans>
    
        <action-mappings>
            <action path="/login"
                  type="org.springframework.web.struts.DelegatingActionProxy"
                  name="loginForm"
                  scope="request"
                  input="/login.jsp">
                <forward name="success" path="/success.jsp"/>
                <forward name="reinput_blank" path="/reinput_blank.jsp"/>
                <forward name="reinput_error" path="/reinput_error.jsp"/>
            </action>
        </action-mappings>
    
        <!-- Spring 整合外掛 -->
        <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
            <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/>
        </plug-in>
    </struts-config>
    

    applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
      "https://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        <bean name="/login" class="com.yourcompany.struts.action.LoginAction">
            <property name="message"><value>Welcome_</value></property>
        </bean>
    </beans>
    

    核心類別

    LoginForm.java

    package com.yourcompany.struts.form;
    import org.apache.struts.action.ActionForm;
    
    public class LoginForm extends ActionForm {
        private String username;
        private String password;
        // getter/setter 略
    }
    

    LoginAction.java

    package com.yourcompany.struts.action;
    import javax.servlet.http.*;
    import org.apache.struts.action.*;
    import com.yourcompany.struts.form.LoginForm;
    
    public class LoginAction extends Action {
        private String message; // Spring 注入
        public void setMessage(String message) { this.message = message; }
        public String getMessage() { return message; }
    
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                                     HttpServletRequest request, HttpServletResponse response) {
            LoginForm f = (LoginForm) form;
            if ("".equals(f.getUsername()) || "".equals(f.getPassword())) {
                return mapping.findForward("reinput_blank");
            }
            if ("success".equals(f.getUsername()) && "success".equals(f.getPassword())) {
                request.setAttribute("message", getMessage() + f.getUsername());
                return mapping.findForward("success");
            }
            return mapping.findForward("reinput_error");
        }
    }
    

    頁面檔案重點

    • login.jsp:表單 action="login.do" 對應 /login 路徑。
    • reinput_blank.jsp / reinput_error.jsp:顯示錯誤訊息並保留輸入框。
    • success.jsp:用 <%=request.getAttribute("message")%> 顯示歡迎訊息。

    部署與啟動

    1. Tomcat server.xml 新增 <Context path="/wess" docBase=".../Welcome_SS/WebRoot" reloadable="true"/>
    2. MyEclipse 啟動 Tomcat。
    3. 瀏覽器訪問 https://localhost:8080/wess → 點擊登入 → 帳密皆輸入 success 即可成功。

    整合關鍵點總結

    1. Action 型別改為 DelegatingActionProxy,將實體 Action 交給 Spring 管理。
    2. ContextLoaderPlugIn 載入 Spring 容器,掃描 applicationContext.xml。
    3. Action 變成 Spring Bean,可享有 DI、AOP、事務管理等優勢。
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved