学习Struts2.3
</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创建webproject。并通过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>验证环境搭建是否成功:启动创建的project。假设没有报错,就成功了,3.入门程序:第一个struts2.3实例--Hello Struts<p>文件夹结构</p><img src="http://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
学习Struts2.3的更多相关文章
- 学习struts2
有部分内容转载牛人的博客: http://blog.csdn.net/hudie1234567/article/details/6730481 http://blog.csdn.net/lishuan ...
- 学习Struts2的个人疑惑及问题解决
刚开始学习SSH框架中Struts2时,个人疑惑以及一些问题总结一下. 1.package节点namespace属性值决定访问路径问题 namespace不写或写namespace=&qu ...
- 学习struts2及MVC
1.MVC模式基础 1.1.MVC模式简介 MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而达到更好的开发和维护效率.在MVC模式中 ...
- 学习Struts2的第一个应用步骤
---恢复内容开始--- 一.在官网 http://struts.apache.org/下载struts-2.3.31-all 1. 打开struts-2.3.31-all,将struts-2.3. ...
- 深入学习Struts2
本部分主要介绍struts.xml的常用配置. 1.1. 包配置: Struts2框架中核心组件就是Action.拦截器等,Struts2框架使用包来管理Action和拦截器等.每个包就是多个A ...
- 框架学习Struts2之HelloWord
一.概述 Struts2是基于MVC设计模式的web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts作为控制器(Controller)来建立模型与视图之间的数据交互.Str ...
- SSH框架学习------struts2前后台传值(二)
struts2的Action类一般都会继承(extends)ActionSupport类(Action类,即实现action的类)1.前传后:jsp里<input type="text ...
- SSH框架学习------struts2(一)
1.总的目录 2.所有程序 1)index.jsp很简单 <%@ page language="java" contentType="text/html; char ...
- Java——Struts2 crud 简单实例(学习struts2和ssh) 用Myeclipse实现
1.new web project 2.给新建的web项目添加struts2支持 3.项目结构中有了struts.xml和struts2核心库 4.编码 4.1项目结构图 4.2源代码: (1)DbU ...
- 学习Struts2经验总结
一.struts 访问路径问题 1) Struts2的思想:主要围着“action”转,只要找到“action”它就知道自己该干嘛了. 首先配置struts.xml ,我们可以明白的看到,action ...
随机推荐
- [Leetcode Week3]Course Schedule
Course Schedule题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/course-schedule/description/ Descript ...
- 【MT8382/8121】为MTK的工厂测试添加测试项
摘要: 本文介绍添加MTK工厂测试项的步骤及调试技巧. 纲要: 1. 描述添加MTK工厂测试项的步骤 2.调试小技巧 1. 描述添加MTK工厂测试项的步骤 以添加红外测试为例: 1. mediatek ...
- 记一次CUDA编程任务
这个月6号开始,着手解决一个具有实际意义的计算任务.任务数据有9879896条,每条包含30个整数,任务是计算每两条数据之间的斯皮尔相关系数及其P值.原始数据只有500+MB,因此我并不认为这是个多么 ...
- 1.kafka的介绍
kafka是一种高可用,高吞吐量,基于zookeeper协调的分布式发布订阅消息系统. 消息中间件:生产者和消费者 举个例子: 生产者:做馒头,消费者:吃馒头,数据流:馒头 如果消费者宕机了,吃不下去 ...
- 关于docker swarm有满满干货的一篇文章,讲了如何用service来作nginx负责proxy已级无缝升级策略
http://www.cnblogs.com/atuotuo/p/6260591.html ================================= $docker network crea ...
- 新电脑配置 git 同步github账户
1.下载安装git 2.初始化 仓库文件夹 git init 3.生成公钥ssh-keygen -t rsa -C "youremail@example.com"4.github ...
- CF 990A. Commentary Boxes【数学/模拟】
[链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...
- P1059 明明的随机数【去重排序】
题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应 ...
- HDU 2537 8球胜负(模拟)
/*这是一个模拟题,模拟一种台球的进球过程,并且判定胜负. 对于输入的字符串,如果出现R则红方记1分,如果出现Y则黄方记1分. 最后根据哪一方打进黑球和得分情况判定胜负. 程序说明: 这里给出两个C语 ...
- java应用高cpu占用
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环 排查故障如下: 1.根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障 2.通过ps ...