一、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 
 * 
 */ 
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会帮我们按名接收表单数据。返回的值,代表要跳转的页面。

posted on 2011-04-21 20:07  芝麻开门  阅读(3389)  评论(0编辑  收藏  举报