一、MVC簡介
概括起來MVC的優點主要有一下方面:
1)多個視圖可以對應一個模型。按MVC設計模式,一個模型對應多個視圖,可以減少代碼的復制及代碼的維護量,一旦模型發生改變, 也易於維護
2)模型返回的數據與顯示邏輯分離。模型數據可以應用任何的顯示技術,例如,使用JSP頁面、Velocity模板或者直接產生excel文檔等
3)應用被分隔為三層,降低了各層之間的耦合,提供了應用的可擴展性
4)控制層的概念也很有效,由於它把不同的模型和不同的視圖組合在一起,完成不同的請求。因此,控制層可以說是包含了用戶請求權 限的概念
5)MVC更符合軟件工程化管理的精神。不同的層各司其職,每一層的組件具有相同的特征,有利於通過工程化和工具化產生管理程序代 碼
對於MVC的概念性的東西也就廢話到此,其關鍵的地方就是各個模塊的實現技術分別是什麼。
二、Struts2簡介
Struts2是一個兼容Struts1和WebWork的MVC框架。
Struts2的簡單處理流程如下:
1)浏覽器發送請求
2)中心處理器根據struts.xml文件查找對應的處理請求的Action類
3)WebWork的攔截器鏈自動對請求應用通用功能,例如:WorkFlow、Validation等功能
4)如果Struts.xml文件中配置Method參數,則調用Method參數對應的Action類中的Method方法,否則調用通用的Execute方法來處理用 戶請求
5)將Action類中的對應方法返回的結果響應給浏覽器
三、Struts2與Struts1對比
................................
四、Struts2與WebWork對比
Struts2實際上就是WebWork2.3,不過,Struts2還是與WebWork有少許的差別:
1)Struts2不再支持內置IOC容器,改用Spring的IOC容器
2)Struts2對於Webwork的一些ajax的特性的標簽改用Dojo進行替換
//----------------------------------------------------
以上內容轉載。
我就只說一句,Struts2是MVC的一種實現,Struts2運行機理相比Struts1有很大的不同,Struts2是基於WebWork的。
下面開始說怎麼去運行一個Struts2程序。所需jar包等,請到http://struts.apache.org下載
1、myeclipse新建web project
2、下載Struts2之後加壓,找到struts2-blank-xxx.war 再解壓
3、找到Struts2-blank中lib,把所有的*.jar復制到 myeclipse所建的web project的lib中
4、配置Struts2的過濾器:在web project的web.xml中配置
Xml代碼
<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>/*</url-pattern>
</filter-mapping>
5、新建以下JSP頁面
login.jsp
Html代碼
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<form action="test.action" method="post">
用戶名:<input type="text" name="username"><br>
密碼:<input type="text" name="pwd"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
ok.jsp
Html代碼
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>My JSP 'ok.jsp' starting page</title>
</head>
<body>
OK!!
</body>
</html>
no.jsp
Html代碼
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>My JSP 'no.jsp' starting page</title>
</head>
<body>
NO!!
</body>
</html>
6、新建一個類
TestAction.java
Java代碼
/**
*
*/
package com.struts2.action;
/**
* @author Administrator
* --www.bianceng.cn
*/
public class TestAction {
/**
* 注意:屬性名字要和jsp頁面的表單元素名字一樣,並且提供getter setter方法
*/
private String username;
private String pwd;
public String execute() {
if (username.equals(pwd)) {
return "OK";
} else {
return "NO";
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
7、在src下建立struts.xml 並配置剛才建立的Action
Xml代碼
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="test" class="com.struts2.action.TestAction">
<result name="ok">/ok.jsp</result>
<result name="no">/no.jsp</result>
</action>
</package>
</struts>
8、部署運行
//--------------------------------------------------------
總結:TestAction 中要有一個execute方法,並且返回的值在struts.xml中配置過。只要表單提交到TestAction下,Struts2會幫我們按 名接收表單數據。返回的值,代表要跳轉的頁面。