Struts2技术

合集下载

struts2自学完全文档

struts2自学完全文档

一.Struts2基础知识1. struts2的特点及配置1.1struts2与struts1的比较1)在软件设计上struts2没有struts1那样跟ServletApi和StrutsApi有着紧密的耦合,Struts2的应用可以不因爱ServletApi和StrutsApi.struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计public class OrderListAction ectends Action//struts依赖于java2)Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能3)Struts2提供了类型转换器,我们可以把特殊的请求参数转换成我们需要的类型,在struts1中,如果我们实现同样的功能,就必须向struts1的底层实现BeanUtil注册类型转换器4)Struts2提供了支持多种表现层技术,如JSp,freeMarker等5)Struts2的输入校验可以对指定方法进行校验,解决了Struts的长久之疼6)提供了全局范围,包范围和Action范围的国际化资源文件管理实现1.2搭建struts2的开发环境1)新建web项目2)导入必要的包3)写配置文件Struts2默认的配置文件为Struts.xml,该文件需要存放在WEB-INF/classes下,该文件的配置模板如下(在m yeclipse中放在src目录下就可以了)模板在D:\Program Files\struts-2.3.4.1-all\struts-2.3.4.1\apps 解压struts2-blank.var再打开web-info/classes中的struts.x m l文件即可<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration2.3//EN""/dtds/struts-2.3.dtd"><struts></struts>4)在web.xm l中加入Struts2MVC框架启动配置在struts1.x中struts框架是通过Servlet启动的,在struts2中,struts框架式通过Filter 启动的,他在web.xm l中的配置如下:(D:\Program Files\struts-2.3.4.1-all\struts-2.3.4.1\apps 解压struts2-blank.var再打开Web-Info\web.xm l即可)<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.Str utsPrepareAndExecuteFilter</filter-class><!—自从struts2.1.3以后,下面的FilterDispatcher已经标注为过时<filter-class>org.apache.struts2.dispatcher.ng.filter.FilterDispather</filter-class> --></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>在StrutsPrepareAndEXecuteFilter()方法中将会读取类路径下的默认文件struts.xml完成初始化操作。

STRUTS2.0框架技术详解

STRUTS2.0框架技术详解
15.3 Struts 2.0 的常用标记................................................................................................................ 21
15.3.1 Struts2.0 标记列表(Tag List).................................................................... 21 15.3.2 常用 Struts2.0 标记的应用................................................................................ 24
15.2 Struts 2 框架技术概述............................................ห้องสมุดไป่ตู้..................................................................... 6
15.2.1 Struts 1 和 Struts 2 的对比............................................................................... 7 15.2.2 Struts1 的 MVC 实现............................................................................................... 8 15.2.3 Struts 2 的简单实现........................................................................................... 17

struts2的工作原理

struts2的工作原理

struts2的工作原理
Struts2是一个基于Java的Web应用程序框架,其工作原理是
基于MVC(Model-View-Controller)设计模式。

它主要由以
下几个组件构成:
1. 客户端发起请求:用户在浏览器中输入URL地址或者点击
超链接等操作发起请求。

2. 前端控制器(Front Controller)处理请求:当用户发起请求时,前端控制器(通常是一个Servlet)接收到请求,并负责
处理该请求。

3. 配置文件解析:前端控制器会根据配置文件(通常是struts.xml)对请求进行解析,确定要执行的控制器动作和视图。

4. 控制器动作执行:前端控制器会根据配置文件中指定的控制器动作,调用相应的Action处理业务逻辑。

Action是一个
Java类,负责接收请求参数、调用服务层逻辑处理数据,并将处理结果封装进Action的属性中。

5. 视图生成:当控制器动作执行完成后,前端控制器会根据配置文件中指定的视图,调用相应的视图模板生成最终的
HTML响应。

6. 响应返回客户端:生成的HTML响应会被前端控制器发送
回客户端,显示在用户的浏览器中。

总结来说,Struts2的工作原理就是通过前端控制器来处理用
户请求,根据配置文件解析请求,并调用相应的Action处理
业务逻辑,最后生成HTML响应返回给客户端。

这种设计模
式的好处是将业务逻辑与界面分离,提高了代码的可维护性和可测试性。

Struts2技术详解

Struts2技术详解

Struts2技术详解1, 当Action设置了某个属性后,Struts将这些属性封装一个叫做Struts.valueStack的属性里。

获取valueStack对象:ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");调用ValueStack 的vs.findValue("books")方法(books为Action中的属性);2, struts2的Action类是一个普通的POJO 类(通常包含一个无参的execute方法)从而很好的重用代码。

4,struts2通常直接使用Action来封装HTTP请求参数,所以Action中要定义与请求参数对应的属性,并且为该属性提供相应的getter和setter方法。

5,即使Action需要处理的请求name和pass两个HTTP请求参数,Action类也可以不包含name和pass属性,因为系统是通过对应的getter和setter方法来处理请求参数。

而不是通过属性来处理请求参数的。

所以Action类是否包含name和pass属性不重要,重要的是需要setter和getter方法。

6,Action类的属性,不仅可以封装请求参数,还可以用于封装处理结果,通过Struts2标签来输出对应的属性值。

如&lt;s:Property value="tip"&gt;。

7,ActionContext类。

Struts2的Action并未直接与任何Servlet api耦合,从而更加方便测试该Action(可以通过脱离web容器测试Action)。

但是对于Web应用的控制器来说,不访问Servlet api 几乎是不能的。

例如跟踪HTTP session状态等。

访问的Servlet Api 就是HttpServeltRequest、HttpSession、ServletContext,这三个类分别jsp内置对象中的request、session、application。

struts2的发展极其优势

struts2的发展极其优势

Struts 2目录Struts 2 概述Struts技术的发展概况Struts2体系结构Struts2和Struts1的对比WebWork和Struts2的对比Struts2 五种默认返回类型名编辑本段Struts 2 概述Struts 2是Struts的下一代产品。

是在struts 和WebWork的技术基础上进行了合并,全新的Struts 2框架。

其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

因为Struts 2和Struts 1有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。

编辑本段Struts技术的发展概况经过六年多的发展,Struts1已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明。

市场占有率超过20%,拥有丰富的开发人群,几乎已经成为了事实上的工业标准。

但是随着时间的流逝,技术的进步,Struts1的局限性也越来越多地暴露出来,并且制约了Struts1的继续发展。

对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题。

首先,Struts1支持的表现层技术单一。

由于Struts1出现的年代比较早,那个时候没有FreeMarker、Velocity等技术,因此它不可能与这些视图层的模版技术进行整合。

其次,Struts1与Servlet API 的严重耦合,使应用难于测试。

最后,Struts1代码严重依赖于Struts1 API,属于侵入性框架。

从目前的技术层面上看,出现了许多与Struts1竞争的视图层框架,比如JSF、Tapestry和Spring MVC等。

这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts1中吸取了经验,克服了很多不足。

struts2基本流程及原理

struts2基本流程及原理

Struts2基本流程及原理1.Struts 2的基本流程Struts 2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。

在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。

2.核心控制器:FilterDispatcherFilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。

如果用户请求以action结尾,该请求将被转入Struts 2框架处理。

Struts 2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts 2调用名为login的Action来处理该请求。

Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。

Struts 2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。

而Struts 2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action 的execute方法来处理用户请求。

显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。

用户实现的Action类仅仅是Struts 2的Action代理的代理目标。

用户实现的业务控制器(Action)则包含了对用户请求的处理。

Structs2框架技术简单介绍

Structs2框架技术简单介绍

优点
• 3. 强大的拦截器Struts2的拦截器是一个Action级别 的AOP,Struts2中的许多特性都是通过拦截器来实 现的,例如异常处理,文件上传,验证等。拦截器 是可配置与重用的,可以将一些通用的功能如:登 录验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能。在我实现的的一Web 项目中,就是使用Struts2的拦截器来完成了系统中 的权限验证功能。
第一步 创建index.jsp
<html><head> <title>第一个Struts简单示例</title> </head> <body> <form action="user/HelloAction" method="post"> 请输入你的大名:<input type="text" name="username" /> <br> <input type="submit" value="提交" /> </form></body></html>
Structs2工作流程
• 此外,如果struts.xml文件中还定义了被请 Action的一些拦截器,那么该Action实例被 调用前后,这些拦截器也会被先后执行。
Structs2工作流程
Structs2工作流程
• 第五步 Action对请求处理完毕以后将返回 一个逻辑视图,该逻辑视图将在struts.xml 文件相应的<result>元素中寻找相应的物理 视图,并返回给客户端 • <result name="success">/WEBINF/page/hello.jsp</result>

struts2入门教程一(环境搭建,基本案例实现)CSDN

struts2入门教程一(环境搭建,基本案例实现)CSDN

Struts2入门初步需掌握1.struts2概述2.struts2环境搭建(第一个struts2的应用程序)3.struts.xml文件配置详解4.struts2请求的URL的搜索路径的顺序概述5.struts2工作原理概述6.struts2指定多个配置文件7.struts2动态方法调用8.使用通配符定义action一:简介Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

二:环境搭建搭建Struts2环境时,我们一般需要做以下几个步骤的工作:1.找到开发Struts2应用需要使用到的jar文件.下载官网:/download.cgi#struts221解压后:开始学习使用依赖的最基本的jar 包2:编写Struts2的配置文件解压其中一个案例在此目录下找到struts.xml 文件先拷贝到项目的src 下。

再对起进行修改。

删除剩余如下代码:[html]01.<?xml version ="1.0"encoding ="UTF-8" ?> 02.<!DOCTYPE struts PUBLIC 03."-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN" 04."/dtds/struts-2.3.dtd"> 05.06.<struts> 07.08. </struts>无法加载插件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Struts2技术在本教程中使用的工具和程序库的版本如下:●开发工具:MyEclipse6●Web服务器:Tomcat6●Struts版本:Struts2.0.11.1●JDK版本:JDK1.5.0_12●J2EE版本:Java EE5.0在本系列教程中Web工程的上下文路径都是struts2,如果在Web根目录有一个index.jsp文件,则访问路径如下:http://localhost:8080/struts2/index.jsp由于MyEclipse6目前并不支持Struts2,所以我们需要到去下载Struts2安装包。

要想正常使用Struts2,至少需要如下五个包(可能会因为Struts2的版本不同,包名略有差异,但包名的前半部是一样的)。

●struts2-core-2.0.11.1.jar●xwork-2.0.4.jar●commons-logging-1.0.4.jar●freemarker-2.3.8.jar●ognl-2.6.11.jar(将%TOMCAT_HONE%\common\endorsed\xml-apis.jar删除)Struts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。

Struts2实际上是在Webwork基础上构建起来的MVC框架。

我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包。

既然从技术上来说Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。

如果大家使用过Struts1.x,应该对建立基于Struts1.x的Web程序的基本步骤非常清楚。

让我们先来回顾一下建立基于Struts1.x的Web程序的基本步骤。

1. 安装Struts。

由于Struts的入口点是ActionServlet,所以得在web.xml 中配置一下这个Servlet。

2. 编写Action类(一般从org.apache.struts.action.Action类继承)。

3. 编写ActionForm类(一般从org.apache.struts.action.ActionForm类继承),这一步不是必须的,如果要接收客户端提交的数据,需要执行这一步。

4. 在struts-config.xml文件中配置Action和ActionForm。

5. 如果要采集用户录入的数据,一般需要编写若干JSP页面,并通过这些JSP 页面中的form将数据提交给Action。

下面我们就按着编写struts1.x程序的这五步和struts2.x程序的编写过程一一对应,看看它们谁更“酷”。

下面我们来编写一个基于Struts2的Web程序。

这个程序的功能是让用户录入两个整数,并提交给一个Struts Action,并计算这两个数的代数和,如果代码和为非负数,则跳转到positive.jsp页面,否则跳转到negative.jsp页面。

【第1步】安装Struts2这一步对于Struts1.x和Struts2都是必须的,只是安装的方法不同。

Struts1的入口点是一个Servlet,而Struts2的入口点是一个过滤器(Filter)。

因此,Struts2要按过滤器的方式配置。

下面是在web.xml中配置Struts2的代码:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>【第2步】编写Action类这一步和Struts1.x也必须进行。

只是Struts1.x中的动作类必须从Action类中继承,而Struts2.x的动作类需要从com.opensymphony.xwork2.ActionSupport类继承。

下面是计算两个整数代码和的Action类,代码如下:import com.opensymphony.xwork2.ActionSupport;public class FirstAction extends ActionSupport {private int operand1;private int operand2;public String execute() throws Exception {if (getSum() >= 0) // 如果代码数和是非负整数,跳到positive.jsp页面{return"positive";} else// 如果代码数和是负整数,跳到negative.jsp页面{return"negative";}}public int getOperand1() {return operand1;}public void setOperand1(int operand1) {System.out.println(operand1);this.operand1 = operand1;}public int getOperand2() {return operand2;}public void setOperand2(int operand2) {System.out.println(operand2);this.operand2 = operand2;}public int getSum() {return operand1 + operand2; // 计算两个整数的代码数和}}从上面的代码可以看出,动作类的一个特征就是要覆盖execute方法,只是Struts2的execute方法没有参数了,而Struts1.x的execute方法有四个参数。

而且execute方法的返回值也不同的。

Struts2只返回一个String,用于表述执行结果(就是一个标志)。

上面代码的其他部分将在下面讲解。

【第3步】编写ActionForm类在本例中当然需要使用ActionForm了。

在Struts1.x中,必须要单独建立一个ActionForm类(或是定义一个动作Form),而在Struts2中ActionForm和Action 已经二合一了。

从第二步的代码可以看出,后面的部分就是应该写在ActionForm 类中的内容。

所以在第2步,本例的ActionForm类已经编写完成(就是Action 类的后半部分)。

【第4步】配置Action类这一步struts1.x和struts2.x都是必须的,只是在struts1.x中的配置文件一般叫struts-config.xml(当然也可以是其他的文件名),而且一般放到WEB-INF 目录中。

而在struts2.x中的配置文件一般为struts.xml,放到WEB-INF"classes 目录中。

下面是在struts.xml中配置动作类的代码:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"><struts><package name="struts2" namespace="/mystruts"extends="struts-default"><action name="sum" class="action.FirstAction"><result name="positive">/positive.jsp</result><result name="negative">/negative.jsp</result></action></package></struts>在<struts>标签中可以有多个<package>,第一个<package>可以指定一个Servlet访问路径(不包括动作名),如“/mystruts”。

extends属性继承一个默认的配置文件“struts-default”,一般都继承于它,大家可以先不去管它。

<action>标签中的name属性表示动作名,class表示动作类名。

<result>标签的name实际上就是execute方法返回的字符串,如果返回的是“positive”,就跳转到positive.jsp页面,如果是“negative”,就跳转到negative.jsp页面。

在<struts>中可以有多个<package>,在<package>中可以有多个<action>。

我们可以用如下的URL来访问这个动作:http://localhost:8080/struts2/mystruts/sum.action注:Struts1.x的动作一般都以.do结尾,而Struts2是以.action结尾。

【第5步】编写用户录入接口(JSP页面)1. 主界面(sum.jsp)在Web根目录建立一个sum.jsp,代码如下:<%@ page language="java" import="java.util.*" pageEncoding="GBK" %> <%@ taglib prefix="s" uri="/struts-tags"%><html><head><title>输入操作数</title></head><body>求代数和<br/><s:form action="mystruts/sum.action" ><s:textfield name="operand1" label=" 操作数1"/><s:textfield name="operand2" label=" 操作数2" /><s:submit value="代数和" /></s:form></body></html>在sum.jsp中使用了Struts2带的tag。

相关文档
最新文档