10级学员 赵成举课堂笔记
我们搭建好struts2的开发环境,接下来就该写struts2的应用了。
一、struts2包的介绍
首先在struts2.xml文件中配置struts2包,代码如下:
Package包的作用和java项目中包的作用相似,是管理在struts2中的action。一般开发中,都把功能类似的action放在同一包下。
下面介绍一下package中的属性:
Name属性:用来指定包的名称,包名是用来标识包的,一般都以它操作的类命名,在一个应用程序中,包名必须是唯一的。
Namespace属性:用来定义包的命名空间,命名空间会作为访问该包下action路径的一部分。
Extends属性:用来定义该包的继承包,一般包都需要继承struts-default包,struts-default包中定义了struts2中的核心功能(拦截器),如果不继承该包将不能使用struts2的提供的一些服务。Struts-default是在struts-default.xml文件下定义的,该文件位于struts2-core-2.*.*.*.jar下。
Abstract属性:定义该包是不是抽象包,如果包定义为抽象包,该包下就不能包含action。
二、struts2中action的介绍
Action应定义与package中,action属性的介绍:
Name属性:用来指定该action的名称,它跟package的namespace共同组合成访问某个action的路径。如本例题访问helloworld这个action时的完整路径应该为:http://localhost:8080/helloworld/csdn/helloworld.action
Class属性:用来指定action所对应的处理类,需要写上完整的路径名。
Method属性:用来指定处理类中的哪个方法执行该action操作。
Action标签中的class属性和method属性可以缺省,在缺省的状态下执行struts2中的ActionSupport类中的execute()方法。如果只缺省method就执行指定类的execute()方法(本例题的helloworld.action所执行的就是HelloworldAction中的list()方法)。
我们看到在action标签中还有result标签,result标签用来指定当action执行完需要跳转的视图。
三、处理类的介绍
好了,刚才介绍了struts.xml文件中的配置,下面介绍一下处理类:
Strtus2中的处理类可以是普通的java类和可以是继承了ActionSupport的java类。下面我们写两个例子对比一下:
这是普通的java类,在struts2中的变量是通过依赖注入的方式来传递值的,所以必须定义get()和set()方法。
好了,到这里我们第一个没有继承ActionSupport类的struts2应用就写完了,只需要在index.jsp中调用helloworld.action就行了。
Index.jsp文件:
需要注意的是由于是通过依赖注入的方式传递值,所以要传递的参数名称必须跟java类中的set方法set的名称一样。
当方法执行完成后还需要跳转到list.jsp界面中,获取传递过去的值并显示到界面上。
List.jsp文件:
执行结果如下:
访问http://localhost:8080/helloworld/csdn/helloworld.action并填写要传递的信息
点击提交按钮:
当java类继承ActionSupport时的写法:
HelloworldAction.java文件:
跟不继承ActionSupport类的写法一样,只是多了一个继承的说明:不过在实际开发中需要将一些从界面获取的数据放到Session、Request等对象中,这时候就需要继承ActionSupport类了