一、什么是Struts2
1、Struts2是一个开发框架,应用于JavaEE三层架构中的web层。
2、Struts2框架是在Struts1和webwork基础上发展的一个全新的框架。
3、Struts2解决的问题:在servlet中,每一个操作都要对应于一个servlet类,这样当操作非常多的时候,需要写非常多的类
这样就在维护时带来了许多的不变;而使用Struts2后,只需要一个类,所有的操作对应于类中的每
一个方法,这样就减少了代码文件,便于维护。
4、本文中使用的Struts2版本为2.3.24.
5、web层常见的操作除了Struts2框架,常见的还要springMVC框架。
二、如何搭建一个Struts2项目
由于Struts2是一个应用于web层的框架,因此必须是web项目,才可以使用此框架。下面就一步步介绍如何使用Struts2框架
进行简单的项目搭建。
1、首先创建一个动态web项目。
2、导入依赖
要使用struts2框架,必须要导入struts2依赖的jar包,在WEB-INF目录中的lib文件夹下导入需要的jar包。jar包下载地址:jar包
3、创建一个Action类
Action类是struts2中的操作类,相当于servlet。
在Action的编写中有以下的点要注意:
Action类中的方法可以没有返回值,也可以有返回值。
如果方法有返回值,则返回值类型必须是String类型。
没有返回值的方法可以声明返回值为void,也可以返回none字符串。
如果有返回值,并且返回值不是none,就必须要在配置文件中配置该返回值。
当action类被访问时,会默认执行execute方法(类似于servlet中的service方法)。
action的编写有三种方式:(1)直接写一个普通类 (2)实现Action接口 (3)继承ActionSupport类。
示例代码:
(1)第一种:直接写一个普通的类。
public classHelloAction1 {/**
* 1、当访问action时,struts2会默认执行execute方法。
* 2、action里面的方法可以没有返回值,如果有返回值,则返回值类型必须为String。
* 3、当action没有返回值或者返回值为none时,在struts.xml文件中不用配置result标签。
* 4、当action有返回值时,在struts.xml中必须要配置result标签,
* 标签中的name的属性值必须要和返回值一致。*/
/**
* 该方法在Action被访问时默认执行*/
publicString execute(){
System.out.println("execute被执行");return "success";
}/**
* 该方法没有返回值。*/
public voidtest1(){
System.out.println("test1被执行");
}/**
* 该方法返回的值为none,相当于void,没有返回值*/
publicString test(){
System.out.println("test被执行");return "none";
}/**
* 该方法有返回值
* 该返回值必须要配置,不然会出现404*/
publicString hello(){
System.out.println("hello被执行");return "ok";
}
}
(2)第二种:实现Action接口
public class HelloAction2 implementsAction{/*** 1、当访问action时,struts2会默认执行execute方法。
* 2、action里面的方法可以没有返回值,如果有返回值,则返回值类型必须为String。
* 3、当action没有返回值或者返回值为none时,在struts.xml文件中不用配置result标签。
* 4、当action有返回值时,在struts.xml中必须要配置result标签,
* 标签中的name的属性值必须要和返回值一致。*/
/*** 继承Action接口,需要重写execute方法
* 在Action接口中提供了五个常量可以使用,分别为:
* (1)SUCCESS:相当于字符串success。
* (2)NONE:相当于none字符串。
* (3)ERROR:相当于字符串error。
* (4)INPUT:相当于字符串input。
* (5)LOGIN:相当于字符串login。*/@Overridepublic String execute() throwsException {returnSUCCESS;
}/*** 该方法没有返回值。*/
public voidtest1(){
System.out.println("test1被执行");
}/*** 该方法返回的值为none,相当于void,没有返回值*/
publicString test(){
System.out.println("test被执行");returnNONE;
}/*** 该方法有返回值
* 该返回值必须要配置,不然会出现404*/
publicString hello(){
System.out.println("hello被执行");return "ok";
}
}
(3)第三种方法:继承ActionSupport类。
public class HelloAction3 extendsActionSupport{/*** 1、当访问action时,struts2会默认执行execute方法。
* 2、action里面的方法可以没有返回值,如果有返回值,则返回值类型必须为String。
* 3、当action没有返回值或者返回值为none时,在struts.xml文件中不用配置result标签。
* 4、当action有返回值时,在struts.xml中必须要配置result标签,
* 标签中的name的属性值必须要和返回值一致。*/
/*** 该方法在Action被访问时默认执行*/
publicString execute(){
System.out.println("execute被执行");return "success";
}/*** 该方法没有返回值。*/
public voidtest1(){
System.out.println("test1被执行");
}/*** 该方法返回的值为none,相当于void,没有返回值*/
publicString test(){
System.out.println("test被执行");return "none";
}/*** 该方法有返回值
* 该返回值必须要配置,不然会出现404*/
publicString hello(){
System.out.println("hello被执行");return "ok";
}
}
4、编写struts2的核心配置文件。
struts2框架类似于Hibernate框架,也需要一个核心的配置文件,该文件有以下主要特点
位置和名称固定
位置:在src目录下。
名称:struts.xml
该文件的详细编写和说明见代码:
/p>
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
/hello.jsp
5、编写简单的测试jsp页面
由于hello方法有一个返回值,在接受到该返回值后需要重定向到一个路径,示例中为一个jsp页面。
Insert title hereHello Struts2
6、配置struts2的过滤器
要使用struts2必须要在web.xml中配置struts2的过滤器,该代码是固定的。
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
7、测试示例项目
访问地址:http://ip:端口号/项目名称/配置中action的name值,本示例为:http://127.0.0.1:8080/Struts2_01/hello.action
测试结果:
至此,我们就完成了一个简单的struts2框架的项目。