首先理解Struts與MVC的關系
在傳統的MVC模式中所有的請求都要先交給Servlet處理,之后由Servlet調用JavaBean,並將結果交給JSP中進行顯示。結構圖如下

Struts是Apache基金組織中Jakarta項目組的一個開源(Open Source)項目,主要就是實現了MVC設計模式,在Struts中有自己的控制器(ActionServlet),同時也提供了各種常用的頁面標簽庫以減少JSP頁面中的Scriptlet代碼,Struts實際上就屬於在傳統技術上發展起來的一種新的應用模式,其操作的本質依然還是JSP、Servlet、JavaBean等技術的應用,Struts的體系結構圖如下。

MVC與Struts各個組件的對應關系

理解以上以后
我們開始學習配置Struts開發環境
Struts屬於一套單獨的開發包,所以首先要從Apache的Jakart項目(http://jakarta.apache.org/)上下載最新的Struts開發包(http://struts.apache.org/),本人使用的是Struts 2.1的開發包,(struts-2.1.8.1-all.jar)
將Struts開發包中的lib目錄下的全部*.jar包拷貝到%TOMCAT_HOME%\lib目錄之中,也可使用myeclipse工具直接導入Struts包,下圖是包目錄

然后配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Struts1</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> </web-app>
配置struts-config.xml文件內容下面具體講解
開發第一個Struts程序
web.xml如上
struts-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.devMode" value="true" /> <!-- 指定每次請求到達,重新加載資源文件 --> <constant name="struts.i18n.reload" value="true"/> <!-- 指定每次配置文件更改后,自動重新加載 --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 把主題配置為simple --> <constant name="struts.ui.theme" value="simple"/> <package name="Struts" extends="struts-default" namespace="/"> <action name="login" class="com.oumyye.action.LoginAction"> <result name="success">/success.jsp</result> </action> </package> </struts>
LoginAction.java
package com.oumyye.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; /** * * @author 偶my耶 * action */ public class LoginAction extends ActionSupport { /** * */ HttpServletRequest request = ServletActionContext.getRequest(); private static final long serialVersionUID = 1L; @Override public String execute() throws Exception { String name=request.getParameter("user_name");//獲得user_name request.setAttribute("name",name);//設值 return SUCCESS; } }
jsp界面
index.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> <form action="login.action"> 姓名:<input type="text" name="user_name"> <input type="submit" value="跳轉"> </form> </body> </html>
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> </head> <% String name=(String)request.getAttribute("name"); %> <body> 歡迎<%=name %> 跳轉成功!! </body> </html>
Struts工作原理
Struts是MVC設計模式的一種具體的實現;
Struts中的核心類就是ActionForm、Action,都需要在struts-config.xml文件中進行配置。