</pre>1.struts2.3核心jar包(若首次接触,可暂时略过不看)大家可以到http://struts.apache.org/download.cgi#struts2014下载struts-2.x.x-all.zip,目前最新版为2.3.16.3。下载完后解压文件,开发struts2应用需要依赖的jar文件在解压目录的lib文件夹下。不同的应用需要的JAR包是不同的。下面给出了开发Struts 2程序最少需要的JAR。struts2-core-2.x.x.jar :Struts 2框架的核心类库xwork-2.x.x.jar :XWork类库,Struts 2在其上构建,由于Struts2是由xwork的延伸 有些类依然关联着 xwork的类ognl-3.0.x.jar :对象图导航语言(Object Graph Navigation Language),支持ognl表达式,struts2框架通过其读写对象的属性freemarker-2.3.x.jar : FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,Struts 2的UI标签的模板使用FreeMarker编写commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。commons-fileupload-1.3.1.jar 文件上传组件,2.1.6版本后必须加入此文件如要整合其他框架,则需要添加相应的xxx-plugin.jar如: 整合spring需要将这个jar包导入]。struts2-spring-plugin.jar ---struts2的spring插件 顺便介绍下相关名词--------1. jakarta:jakarta是apache组织下的一套Java解决方案的开源软件的名称,它包括了很多子项目。Tomcat,ant,struts等等也是apache下的开源项目。同时也是jakarta的关联项目。2.OGNL:OGNL是一种功能强大的表达式语言(Expression Language,简称为EL),webwork2和现在的Struts2.x中使用OGNL取代原来的EL来做界面数据绑定3.xwork:XWork是一个标准的Command模式实现,并且完全从web层脱离出来。Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Navigation Language),IoC(Inversion of Control倒置控制)容器等。4.command模式:命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。)开发struts2项目时,不要一股脑把struts2框架lib下的所有jar复制到自己的项目中,要是在整合其他框架。那样使得项目显得非常之臃肿。而且根本没有什么用的加进去。起不了什么作用。<p></p><p></p>2.搭建Struts2环境工具:MyEclipse9 用自带的Tomcat搭建Struts2环境有以下几个步骤:1)<span style="white-space:pre"> </span>找到开发Struts2应用需使用到的jar文件。<span style="white-space:pre"></span>通过MyEclipse创建web工程,并通过MyEclipse加入struts2核心jar包(此处实际上就添加了一个core包)。2)<span style="white-space:pre"> </span>编写Struts2的配置文件struts.xml。<span style="white-space:pre"></span>用MyEclipse加入struts2的jar包时,自动创建了struts.xml配置文件。3)<span style="white-space:pre"> </span>在web.xml文件中加入struts2的MVC框架启动配置<span style="white-space:pre"></span>用MyEclipse加入struts2的jar包时,自动在web.xml中加入了启动struts2的配置,即struts框架是通过Filter启动的,web.xml中配置的StrutsPrepareAndExecuteFilter类的init()方法将会读取struts.xml配置文件完成初始化工作。注意:struts2通过过滤器来执行分发功能。4)<span style="white-space:pre"> </span>验证环境搭建是否成功:启动创建的工程,如果没有报错,就成功了,3.入门程序:第一个struts2.3实例--Hello Struts<p>目录结构</p><img src="https://img-blog.csdn.net/20140917103619439" alt="" />1)<span style="white-space:pre"> </span>创建action类<pre name="code" class="java">package cn.ac.siat.helloaction;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport {
private String message;
//struts2的默认执行方法
public String execute(){
System.out.println("execute()...");
message = "Hello Struts!";
return "success";
}
// get set method
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
2) 在struts.xml中配置action类
<struts>
<package name="siat" namespace="/" extends="struts-default">
<action name="helloAction" class="cn.ac.siat.helloaction.HelloAction" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
3) index.jsp程序
<body>
${message}<br><!--可以指定访问action里的数据-->
</body>
4) 浏览器访问
http://lzc:8080/Struts2Test1/helloAction.action
4.可能会遇到的错误
No result defined for action cn.ac.siat.helloaction.HelloAction and result Hello Struts!
solution:
String 里面有5个static 常量分别是:
ERROR INPUT LOGIN NONE SUCCESS
例如 如果在excute 中返回的是 ruturn SUCCESS;
也就相当于返回的是return "success"字符串
就必须在struts.xml中写上对应的"success"
<result name="success">/x.jsp</result>
当然EORROR 对应的就是"error";字符串
当然INPUT 对应的就是"input";字符串
当然LOGIN 对应的就是"login";字符串
当然NONE 对应的就是"none";字符串
要不你就换一换把return SUCCESS换成return "success";试一试
一定要确定你在excute返回的字符串在 struts.xml中有定义
还有一个要提醒你的就是:
在validate中验证有错误的话且没有指定return 字符串的话,
struts2默认就返回的是 return INPUT 也就是return "input"
注:在package里面增加 namespace="/" 告诉系统是从根本录寻找,如http://lzc:8080/Struts2Test1/helloAction.action
如果namespace="/user" 则访问时需要在项目名和action之间加上此路径如http://lzc:8080/Struts2Test1/user/helloAction.action
并未涉及原理,, 2hours