struts2详解

最近开发项目时,发现以前学习的一些框架技术都遗忘的厉害,还得上网去百度一下!但这样无疑浪费了很多时间,为了以后的开发能够更轻松一些,所以在这里总结一下这些框架技术,就从struts2开始吧!

  • struts2的简介
  • struts2与struts1
  • struts2的工作原理
  • struts2的工作流程
  • struts2的开发步骤

(一)struts2的简介:

Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架

(二)struts2与struts1:

  • struts2和struts1之间的关系
    严格的来说,struts2和struts1之间是没有关系的
    struts2不是struts1的升级,而是继承的webwork的血统
    它们都是Apache组织下的开源框架
    它们都是基于MVC设计模式的Web应用程序框架

  • struts2和struts1之间的区别
    1)Action类的实现方式:
    Struts1的Action在实现的时候必须扩展Action类或者Action的子类,Struts2的Action类实现的时候可以不用实现任何类和接口,虽然Struts2中提供一个ActionSupport类,但是,不是必须的。
    2)Struts1的Action类是单例模式,必须设计成线程安全的,Struts2则为每一个请求产生一个实例
    3)Struts1的Action类依赖与Servlet API,从其execute的方法签名可看出,execute方法有两个Servlet的参数HttpServletRequest和HttpServletResponse,Struts2则不依赖于Servlet API
    4)以为Struts1依赖于Servlet API这些Web元素,因此对Struts1的Action进行测试的时候是很困难的,需要借助与其他的测试工具,Struts2的Action可以象测试其他的一些Model层的Service类一样进行测试
    5)Struts1的Action与View通过ActionForm或者其子类进行数据传递,虽然也有LazyValidationForm这样的ActionForm的出现,但是,还是不能象其他层面那样通过一个简单的POJO进行数据传递,而Struts2将这样的奢望变成了现实
    6)Struts1绑定了JSTL,为页面的编写带来方便,Struts2整合了ONGL,也可以使用JSTL,因此,Struts2下的表达式语言更加强大

( 三) struts2的工作原理:

在Struts2框架中的处理大概分为以下几个步骤 :
1. 客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2. 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3. 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4. 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5. ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6. ActionProxy创建一个ActionInvocation的实例。
7. ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8. 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

(四)struts2的工作流程:

1、客户端浏览器发出HTTP请求.
2、根据web.xml配置,该请求被FilterDispatcher接收
3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面
6、返回HTTP响应到客户端浏览器

(五)struts2的开发步骤:

以struts2输出最经典的“HelloWorld”为例:

1.新建web项目

新建名称为“Struts”的web工程,新建方法:File->New->Web Service Project->Profect Name中输入:Struts->点击Finish按钮完成新建。

2.为项目添加Struts2的类库

在Apache官方网站下载最新版本的Sruts2,网址:http://struts.apache.org/,下载好后解压。

(1)在Struts工程的右键菜单上选择”Properties”命令,打开”Properties for Struts2”对话框,在struts2解压后的lib目录中选择如下13个文件:asm-3.3.jar,asm-commons-3.3.jar,asm-tree-3.3.jar,commons-fileupload-1.3.jar,commons-io-2.2.jar,commons-lang3-3.1.jar,commons-logging-1.1.3.jar,freemarker-2.3.19.jar,javassist-3.11.0.GA.jar,log4j-1.2.17.jar,ognl-3.0.6.jar,struts2-core-2.3.16.jar,xwork-core-2.3.16.jar

(2)再把上面13个jar包考到“WebRoot\WEB-INF\lib”目录下

3.配置web.xml文件

Struts2的web.xml文件配置方法非常简单,即在web.xml中添加过滤器和默认配置文件,并设置为所有的请求(/*)都要通过这个过滤器,具体如下:

<!--?xml version="1.0" encoding="UTF-8"?-->
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name> 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <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>
</web-app>

4.编写jsp界面

具体如下:

<%@ page language="java" import="java.util.*"contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>


<title>Hello World!</title>


    <h2>
        <s:property value="message">
        </s:property>
    </h2>

5.编写Action

Action实际就是一个普通的java类,是最基本的逻辑处理单元,在MVC模式中分发器分发给不同的Action类来处理请求。Action类一般要继承ActionSupport类,因为其提供的大量的基本功能,如错误信息处理等。具体如下:

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld extends ActionSupport {
    public static final String MESSAGE="Hello world,I'm from struts2";
    public String execute() throws Exception{
        setMessage(MESSAGE);
        return SUCCESS;
    }
    private String message;
    public void setMessage(String message){
        this.message=message;
    }
    public String getMessage(){
        return message;
    }

}

6.配置struts.xml文件

struts.xml要建在荐的src目录下,名为struts.xml,当项目发布以后,这个文件将会被复制到WEB-INF/classes下。新建方法:选择菜单New->File,接着在弹出对话框中的File name右侧输入框中主文件名struts.xml,点击Finish按钮关闭对话框。具体如下:

<!--?xml version="1.0" encoding="UTF-8" ?-->

<struts>
<constant name="struts.devMode" value="false">
<package name="default" extends="struts-default" namespace="/">

        <result>/HelloWorld.jsp</result>
    </action>
</package>
</constant></struts>

结束语

技术的价值不在于领先而在于应用!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值