Struts2框架示例.docx

上传人:b****5 文档编号:8637133 上传时间:2023-02-01 格式:DOCX 页数:27 大小:875.74KB
下载 相关 举报
Struts2框架示例.docx_第1页
第1页 / 共27页
Struts2框架示例.docx_第2页
第2页 / 共27页
Struts2框架示例.docx_第3页
第3页 / 共27页
Struts2框架示例.docx_第4页
第4页 / 共27页
Struts2框架示例.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

Struts2框架示例.docx

《Struts2框架示例.docx》由会员分享,可在线阅读,更多相关《Struts2框架示例.docx(27页珍藏版)》请在冰豆网上搜索。

Struts2框架示例.docx

Struts2框架示例

以下是Apache官方网站对Struts2的特性介绍

1、开发方面

(1)容易上手–从教程和模版程序或者Maven原型可以很容易的开发出新项目。

(2)改进的设计–清晰的代码设计对应着独立于HTTP的框架接口。

(3)增强的标签(Tag)-使用样式表驱动的表单标签以及所提供的标签可以减少编码量。

(4)有状态的复选框(Checkbox)-避免了特殊的处理代码,职能复选框能感知自己的状态何时被切换。

(5)灵活的取消按钮–取消时直接转向另一个操作(action)。

(6)最好的AJAX支持–通过使用和标准Struts标签观感一致的AJAX标签,可以增加交互性和灵活性。

(7)方便的Spring集成–使用Spring向Action中注入依赖关系,无需编写额外的连接代码或者其它配置。

(同时支持Plexus?

(8)增强的表示层展示–可以将处理结果以JasperReports,JFreeChart,Action链,或者文件下载的方式展示。

(9)POJO表单–不需要ActionForm!

可以使用任何JavaBean来捕获输入或者直接将属性设置到Action类上。

可以同时使用二进制和字符串类型的属性!

(10)POJOAction–使用任何类作为Action类–甚至接口也是可选的!

Struts2是一个标准的Command模式框架实现,并且完全从web层脱离出来。

Xwork提供了很多核心功能:

前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL–theObjectGraphNotationLanguage),IoC(InversionofControl依赖倒转控制)容器等。

2、发布方面

(1)方便的插件机制–添加JAR文件即可添加框架扩展。

无需人工配置!

捆绑的插件提供对JavaServerFaces,JasperReports,JFreeChart,Tiles......等众多框架的支持。

(2)内置调优–查看Struts2内部,找到死循环的位置!

(3)准确的错误汇报–直接跳转到错误的位置和行号。

3、维护方面

(1)便于测试的Action–可以直接测试Struts2Action,无虚依赖任何模拟的HTTP对象。

(2)聪明的默认值–跳过明显的或者多余的设置。

大多数框架的配置元素都有默认值可以使用,我们可以忘记它。

只需要配置一次!

(3)容易自定义的控制器–需要时可以自定义每个Action的请求处理。

Struts2可以用你需要的方式来工作!

(4)内置调试–使用内置调试器可以生成问题报告。

(5)易于调整的标签–修改FreeMarker模版即可自定义标签。

不需要再学习taglibAPI!

完全支持JSP,FreeMarker,以及Velocity标签。

4、Web层需要解决的问题:

(1)数据的输入。

如何获得基于无状态HTTP的请求数据?

如何将请求的字符数据转换为对应的模型对象?

(2)输入数据的验证。

如何验证输入数据的合法性并给出明确的错误消息提示?

(3)数据的输出。

如何展现复杂的对象结构?

如何处理复杂的展现逻辑?

(4)数据的传递和共享。

如何在不同的请求或页面之间传递和共享数据?

(5)页面的流程管理。

如何管理Web应用中的页面流程?

(6)模块化的管理。

如何将复杂的Web应用以模块化的方式管理?

(7)灵活可扩展的架构。

如何支持各种不同的展现层技术?

如何与业务层或数据层的各种框架整合?

(8)安全和访问控制的管理。

如何提供基于Web的安全机制和资源访问控制的管理?

(9)代码实现的简洁和高效。

如何让开发步骤和代码维护变得简单?

如何尽量减少开发的中间环节?

如何将公共的功能剥离出来,并可以灵活的组装应用?

(10)其它问题。

异步调用、国际化支持、文件上传、防止重复提交等等。

Struts2系统库

1、下载Struts2系统包

目前MyEclipse6对Struts2的开发还没有提供任何直接的支持,所以不得不手工加入相关的系统jar包文件来开发。

(1)首先从Apache网站上下载struts2.0.1的完整包(FullDistribution),可以从这里下载:

http:

//struts.apache.org/downloads.html。

(2)解压后能够看到下面的各个文件

(3)其中的lib目录为系统包文件(包括了Struts2的全部核心类库和依赖包),而src为其源代码目录

其中的lib目录为系统包文件,并且了解下面的各个文件的主要功能

●struts2-core-2.0.11.jar为Struts2的核心包

●而xwork-2.0.4.jar为XWork2库,Struts2核心包作为底层库存在

●ognl-2.6.11.jar为ObjectGraphNavigationLanguage(OGNL),类似于EL表达式的一种用于访问对象的表达式语言

●freemarker-2.3.8.jar为Struts2所有的ui标记的模板均使用freemarker编写,可通过修改或重写模板使struts2的ui标记按用户的需要进行显示

●commons-logging-1.0.4.jar为Apache的CommonsLoggin包,封装了通用的日志接口,可自动调用Log4J或者JDK1.4或者更高版本的util.logging日志包。

(4)而doc目录下为帮助文件

(5)而app目录下的文件为示例(包含了四个war包形式的示例应用,附带有源码,我们可以直接发布到Tomcat的webapps目录下,也可阅读其源码学习。

其中的struts2-blank-2.0.8.war是4个中最基础的一个实例,可以通过它学习了解到下面的知识点

(1)了解struts2的配置

(2)Struts2的表单以及表单验证

(3)Struts2的本地化输出

http:

//127.0.0.1:

8080/struts2-showcase-2.1.8.1/index.jsp

Struts2框架应用示例

1、新建立一个Web项目

(1)项目名称为sshwebcrm、并且添加JSTL标签库

但最好将项目的J2EE系统库的版本选择为J2EE5.0版,以便能够应用MyEclipse的可视化帮助。

(2)设置编译环境为JDK1.6

struts2默认需要Java5的运行环境,和支持ServletAPI2.4,JSPAPI2.0的Web容器.

2、在项目中添加图片等资源文件

3、在项目中添加index.jsp页面

<%@pagepageEncoding="gb2312"isELIgnored="false"%>

<%@taglibprefix="c"uri="

DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http:

//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

//www.w3.org/1999/xhtml">

蓝梦集团CRM系统的首页

urlvalue='/css/pageContentStyle.css'/>"rel="stylesheet"type="text/css"/>

urlvalue='/javascript/commonJavaScript.js'/>"

type="text/javascript">

includepage="/commonPage/pageHead.jsp">

include>

includepage="/commonPage/navMenuBar.jsp">

include>


这是蓝梦集团CRM系统(客户关系系统)的首页内容


includepage="/commonPage/authorInfo.jsp">

include>

4、将项目部署到Tomcat服务器中

5、测试index.jsp页面http:

//127.0.0.1:

8080/sshwebcrm/index.jsp

利用MyEclipse8.X版中的可视化创建项目

1、新建出本Web项目

在MyEclipse中,建立WebProject项目时,如果选择了J2EE5.0后,MyEclipse不会自动添加jstl的系统库,需要手动添加。

注意:

对于一股的应用只需要如下的系统库文件:

●commons-logging-1.0.4.jar

●freemarker-2.3.13.jar

●ognl-2.6.11.jar

●struts2-core-2.1.6.jar

●xwork-2.1.2.jar

●commons-fileupload-1.2.1.jar

OGNL是Object-GraphNavigationLanguage的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。

它使用相同的表达式去存取对象的属性。

MyEclipse将在web.xml文件中添加如下的内容

xmlversion="1.0"encoding="UTF-8"?

>

xmlns="

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

index.jsp

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

*.action

同时将系统中的图片等资源文件拷贝

<%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"isELIgnored="false"%>

tomcat下如果使用j2ee5.0,会导致EL语言的失效,这个时候需要在jsp页面上方加上:

  <%@pageisELIgnored="false"%>

或者在web.xml文件中修改最上面的版本为2.4,以及验证的xsd为web-app_2_4.xsd。

再执行系统的首页,如果没有出现错误,则表明前面的环境搭建是正确的。

在项目中实现用户信息管理功能——构建功能页面

1、在项目中添加一个userLogin.jsp页面

(1)添加userManage目录

(2)在该目录中添加userLogin.jsp页面

(3)设计该userLogin.jsp页面的内容

<%@pagepageEncoding="gb2312"%>

<%@taglibprefix="c"uri="

DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http:

//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

//www.w3.org/1999/xhtml">

蓝梦集团CRM系统在线用户登录功能页面

urlvalue='/css/pageContentStyle.css'/>"rel="stylesheet"type="text/css"/>

urlvalue='/javascript/commonJavaScript.js'/>"

type="text/javascript">

includepage="/commonPage/pageHead.jsp">

include>

includepage="/commonPage/navMenuBar.jsp">

include>


输入右面的认证码:


用户类型:

前台用户

后台管理员


您的名称:


您的密码:



includepage="/commonPage/authorInfo.jsp">

include>

也可以部署和测试本页面的效果http:

//127.0.0.1:

8080/sshwebcrm/userManage/userLogin.jsp

2、在userManage目录中再添加一个显示登陆成功的页面loginSuccess.jsp

(1)loginSuccess.jsp页面

(2)页面内容如下

<%@pagepageEncoding="gb2312"%>

<%@taglibprefix="s"uri="/struts-tags"%>

<%@taglibprefix="c"uri="

DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http:

//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

//www.w3.org/1999/xhtml">

蓝梦集团CRM系统在线登录成功信息显示页面

urlvalue='/css/pageContentStyle.css'/>"rel="stylesheet"type="text/css"/>

urlvalue='/javascript/commonJavaScript.js'/>"

type="text/javascript">

includepage="/commonPage/pageHead.jsp">

include>

includepage="/commonPage/navMenuBar.jsp">

include>




propertyvalue="resultMessage"/>




includepage="/commonPage/authorInfo.jsp">

include>

在这个页面中,使用了Struts2的标签库来获取Action类中所定义的resultMessage成员属性。

而其中的<%@taglibprefix="s"uri="/struts-tags"%>就是从地址/struts-tags下面寻找标签库(它定义在Struts2库文件struts2-core-2.1.6.jar里面的文件META-INF/struts-tags.tld中

在Jsp页面中,Struts2的标签库不需要在web.xml中定义,在页面中通过如下的代码直接引用:

<%@taglibprefix="s"uri="/struts-tags"%>

上面的

propertyvalue="resultMessage"/>也可以写成

propertyvalue="%{resultMessage}"/>作为变量的表达式语言最好应该放在%{}中,利用property标签,它通过表达式语言,打印Action暴露出的数据对象。

在这个文件的开头有下面的这么一段代码:

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEtaglibPUBLIC"-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.2//EN""

2.2.3

1.2

s

/struts-tags

....

大家可以注意到粗斜体的/struts-tags刚好与JSP文件引入taglib声明里面的uri属性匹配,这样就能够找到对应的标签定义的位置了。

Tomcat等Web服务器会自动加载所有jar文件下的META-INF子目录下的.tld标记定义文件,这也是为什么好多框架不需要把tld文件复制到WEB-INF目录下的原因。

(3)尽可能用EL表达式和JSTL,而抛弃框架自带的那些非标准和容易变动的自定义标签库

“面向标准”和“尽量独立于框架编程”是我们在应用框架时所应该把握的基本原则,“可维护性”和“移植性”远远好于绑定某个特定标签库的,开发不能只看眼前,要尽量多地考虑系统在以后的可能的扩展和维护方面的要求。

可以将前面的

propertyvalue="resultMessage"/>改变为使用EL表达式将resultMessage属性的值读取出来。

${requestScope.resultMessage}。

构建出系统中的Action类

1、添加系统中的Action组件类(类似Servlet组件)

(1)类名称为UserInfoAction,包名称为com.px1987.sshwebcrm.action

这可以通过选择菜单File>New>Class,或者点击工具栏上的按钮,在打开的新建类的对话框中,输入Package名称为com.px1987.struts2.action,而类名称UserInfoAction,点击Finish按钮后即可将此类创建。

(2)在该Action组件类中添加一个属性、并提供get/set方法

privateStringresultMessage;

(3)重写该类中的execute方法

Action代表一次请求或调用,在Struts2中的Action类一般都需要实现Action接口,或者直接继承基础类ActionSupport、并且要实现默认的execute方法,并返回一个在配置文件中定义的Result(也就是一个自定义的字符串而已)。

当然,Action也可以只是一个POJO(普通Java对象),不用继承任何类也不用实现任何接口——本示例采用该方式。

(PlainOrdinaryJavaObjects)(PlainOldJavaObject)。

Action是一次请求的控制器,同时也可以充当数据模型(下面将要介绍的字段驱动的Action类)的角色,但不应该系统的业务逻辑功能实现放在Action中——由JavaBean组件实现。

packagecom.px1987.sshwebcrm.action;

publicclassUserInfoAction{

privateStringresultMessage;

publicStringgetResultMessage(){

returnresultMessage;

}

publicvoidsetResult

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1