Struts2学习——(二)开发实例-我的第一个Struts2工程
来源:互联网 发布:手机淘宝买东西流程 编辑:程序博客网 时间:2024/06/05 10:34
回顾了上一次的学习过程,感觉还是有点条理不够清晰,因此这次我决定动手写一个过程,牢记一下Myeclipse下配置Struts2以及建立工程的过程。
IDE:MyEclipse10
1、新建一个web project
2、在工程上单击右键,选择“MyEclipse”下的“Add Struts Capabilities...”
在这里我们选择Struts2.0版本,同时加入core库,其中包含了我们所需要的基本jar。
之后我们可以看到,在src文件夹下已经自动生成了struts.xml文件
同时可以看到在web.xml文件中也已经对filter做好了映射。
3、打开struts.xml,配置action
<struts><package name="struts_demo" namespace="/" extends="struts-default"><action name="login" class="cn.wqy.LoginAction" method="execute"><result name="success">/loginsuc.jsp</result><result name="error">/loginfal.jsp</result></action></package></struts>直接在<struts>标签下配置即可。一个<package>标签下可以有多个action。<package>标签的属性有name(不是java目录下的包),namespace(命名空间,用来组成访问action的路径,减少重复代码),extends(继承的类,struts-default包是struts内置的,它定义了很多拦截器,而Struts2很多核心的功能都是通过这些内置的拦截器实现,如:从文件上传、数据验证、自动封装前台传过来的参数等等。我们写的包继承了struts-default包才能使用struts2为我们提供的这些功能,所以通常我们写的每个包都应该继承它。)。
<action>标签的属性有name(action的名,参与组成访问action的路径),class(action所用的类),method指定了所用的方法,缺省则为execute()。
<result>代表的是结果集,即通过action的返回值来确定返回的视图。根据其name属性值返回该标签体中的页面。在只有一个<result>的情况下,缺省name则默认为“success”。
result标签中有一个属性type,默认值为“dispatcher“,服务器端跳转(只可以跳转页面HTML、JSP,但是不能使Action)。还可以取值为:(常用)
redirect:重定向(只可以跳转页面HTML、JSP,但是不能使Action)
chain:forward到一个Action
redirectAction:客户端跳转到一个Action
Ps:如果要跳转到另一个包中的action时:
<package name="p1" namespace="/p1" extends="xxxxx"> <action name="a1" class="xxxx"> <result>/1.jsp</result> </action></package><package name="p2" namespace="/p2" extends="xxxxx"> <action name="a2" class="xxxx"> <result type="redirectAction">这里</result> </action></package>应该在一个action的result标签下作如下配置:
<result type="redirectAction"> <param name="namespace">/p1</param> (这里要写package的namespace) <param name="actionName">a1</param> (这里写action的name)</result>
(其余不常见的以后再补充................)
>>Global results全局结果集
如果有一个包中有几个Action同时想回到某个结果集,则可以把这个结果集设置为全局结果集。<global-results>,内部结构完全相同。在Action之外设置。则该包中所有Action都可以访问这个结果集。
>>如果别的包中的Action也想用这个全局结果集怎么办呢?
将另一个包继承含有想使用的全局结果集的包(即包的extends属性),由于父包继承了"struts-default",故子包也继承了该类,不必担心缺少一些必要的方法等。
要注意的是,struts.xml的配置中有一种<include>标签,eg:<include file="xxx.xml">,这样写起来板块更加明确。可以在每一个被包含的xml中写相关的一组Action。
4、写action对应的类
package cn.wqy;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {/** * */private static final long serialVersionUID = 1L;private String name;private String pass;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}public String execute(){if(name.equals("wqy")&&pass.equals("aaa")){return SUCCESS;}else{return ERROR;}}}注意类名和struts.xml中要对应起来,返回值常量和<result>中对应起来。
5、写其他的jsp
jsp的编写这里就不展示了
注意路径问题:/ 表示的是绝对路径,不加表示的是相对路径,即和当前文件同目录级别。
struts.xml中
<result name="success">/loginsuc.jsp</result><result name="error">/loginfal.jsp</result>此处的jsp页面要使用绝对路径,表示在工程目录下。
而页面间超链接跳转是相对路径:
<body> fail!<br> <a href="login.jsp">click here!</a> </body>
至此,一个简单的struts工程就创建好了。
在链接栏里输入:http://localhost:8080/Struts2_001/login.jsp
ps:在这里可能有一个疑问。没有request对象的声明,name和pass两个属性是如何获得值的呢?答案是:框架帮我们把属性注射进去了。利用反射原理,获得了action中的setter,getter方法,根据属性名的对应,struts2框架帮我们将String,int,double等各种类型的数据注射入action,并且转换成我们所定义的数据类型。
而且,action类中向视图传递参数时,不必像servlet一样setAttibute,直接可以在JSP中访问action中的属性,比如${ XXX }即可。
pps.如果在实际开发中,action的package的namespace不为默认值,比如说设置为“/demo”,那么在访问action时,跳转的链接就应该写成“demo/xxx.action”。
ppps:如果要表示上级目录,则正确格式为“../”表示上一级目录,“../../”表示上两级目录,以此类推。
- Struts2学习——(二)开发实例-我的第一个Struts2工程
- struts2(二)开发第一个struts2的实例
- 细谈struts2(二)开发第一个struts2的实例
- Struts2学习笔记(3)——第一个 struts2工程
- 学习struts2的第一个小实例
- Strust2第(二)篇《开发第一个struts2的实例》
- Java程序员从笨鸟到菜鸟之(三十七)细谈struts2(二)开发第一个struts2的实例
- Java程序员从笨鸟到菜鸟之(三十七)细谈struts2(二)开发第一个struts2的实例
- Struts2 第一个实例学习
- Struts2学习(第二篇)——开发第一个Struts2应用
- Struts2学习总结(二):第一个Struts2程序
- 第一个Struts2的实例:
- Struts2学习笔记01------第一个struts2的应用开发
- 第一个struts2实例
- 第一个struts2实例
- 我的第一个Struts2框架开发-Hello World
- Struts2学习(二):第一个Action
- Struts2的第一个应用实例
- Add Two Numbers
- 轻松学习JavaScript六:JavaScript的表达式与运算符
- 消费是一场心理战
- c++11中的右值引用以及移动构造
- linux-系统调用01-strace工具的使用
- Struts2学习——(二)开发实例-我的第一个Struts2工程
- 导入某些特殊Jar包中的类
- vim背景色molokai配置
- GDB十分钟教程
- 二叉排序树(插入、删除、查找)
- NOIP2015总结
- 在Linux或mac上配置github提交代码到github仓库
- find命令的xargs参数的使用---Linux学习笔记
- 设计模式之--代理模式