一、什么是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 class HelloAction1 {
/**
* 1、当访问action时,struts2会默认执行execute方法。
* 2、action里面的方法可以没有返回值,如果有返回值,则返回值类型必须为String。
* 3、当action没有返回值或者返回值为none时,在struts.xml文件中不用配置result标签。
* 4、当action有返回值时,在struts.xml中必须要配置result标签,
* 标签中的name的属性值必须要和返回值一致。
*/ /**
* 该方法在Action被访问时默认执行
*/
public String execute(){
System.out.println("execute被执行");
return "success";
}
/**
* 该方法没有返回值。
*/
public void test1(){
System.out.println("test1被执行");
}
/**
* 该方法返回的值为none,相当于void,没有返回值
*/
public String test(){
System.out.println("test被执行");
return "none";
}
/**
* 该方法有返回值
* 该返回值必须要配置,不然会出现404
*/
public String hello(){
System.out.println("hello被执行");
return "ok";
}
}

  (2)第二种:实现Action接口 

public class HelloAction2 implements Action{
/**
* 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。
*/
@Override
public String execute() throws Exception {
return SUCCESS;
}
/**
* 该方法没有返回值。
*/
public void test1(){
System.out.println("test1被执行");
}
/**
* 该方法返回的值为none,相当于void,没有返回值
*/
public String test(){
System.out.println("test被执行");
return NONE;
}
/**
* 该方法有返回值
* 该返回值必须要配置,不然会出现404
*/
public String hello(){
System.out.println("hello被执行");
return "ok";
} }

  (3)第三种方法:继承ActionSupport类。

public class HelloAction3 extends ActionSupport{
/**
* 1、当访问action时,struts2会默认执行execute方法。
* 2、action里面的方法可以没有返回值,如果有返回值,则返回值类型必须为String。
* 3、当action没有返回值或者返回值为none时,在struts.xml文件中不用配置result标签。
* 4、当action有返回值时,在struts.xml中必须要配置result标签,
* 标签中的name的属性值必须要和返回值一致。
*/ /**
* 该方法在Action被访问时默认执行
*/
public String execute(){
System.out.println("execute被执行");
return "success";
}
/**
* 该方法没有返回值。
*/
public void test1(){
System.out.println("test1被执行");
}
/**
* 该方法返回的值为none,相当于void,没有返回值
*/
public String test(){
System.out.println("test被执行");
return "none";
}
/**
* 该方法有返回值
* 该返回值必须要配置,不然会出现404
*/
public String hello(){
System.out.println("hello被执行");
return "ok";
}
}

4、编写struts2的核心配置文件。

  struts2框架类似于Hibernate框架,也需要一个核心的配置文件,该文件有以下主要特点

      • 位置和名称固定
      • 位置:在src目录下。
      • 名称:struts.xml

  该文件的详细编写和说明见代码: 

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入dtd约束 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!--
配置package标签:该标签类似于Java中的包,Struts标签中可以有多个package标签
这些package标签的name属性的值必须不同
name属性的值:这个名称可以随意起名,它表示一个包名,用来区分不同的package
extends属性的值:这个属性的值是固定的,其值为“struts-default”,只有在此配置了
这个属性,该类采有action的功能,类似于Java中的继承
namespace属性的值:该属性是名称空间,该属性的值一般为“/”,用于和action标签中得
name属性组成访问路径
-->
<package name="demo" extends="struts-default" namespace="/">
<!--
配置action标签:该标签用来配置action,一个package标签中可以有多个action
标签,这些action标签的name属性的值必须不同
name属性的值:name属性的值可以随意起,该值用来和package标签中的namespace
属性的值一起构成该action的访问路径
class属性的值:该值是要配置的action所在类的全路径。
method属性的值:该属性用来配置该action对应于类中的哪一个方法,其值为要访问的类中的
那个方法的方法名(execute方法默认访问,不用配置)。
-->
<action name="hello" class="com.jack.action.HelloAction1" method="hello">
<!--
配置result标签:如果配置的该action方法中有返回值,并且返回值不是none,则必须
要配置该标签,否则会出现404错误 name属性的值:该属性的值就是action方法所返回的那个值。
该标签中的值为:action返回该属性后,要重定向到那个路径
-->
<result name="ok">/hello.jsp</result>
</action>
</package>
</struts>

5、编写简单的测试jsp页面

  由于hello方法有一个返回值,在接受到该返回值后需要重定向到一个路径,示例中为一个jsp页面。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Hello Struts2</h1>
</body>
</html>

6、配置struts2的过滤器

  要使用struts2必须要在web.xml中配置struts2的过滤器,该代码是固定的。

 <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

7、测试示例项目

  访问地址:http://ip:端口号/项目名称/配置中action的name值,本示例为:http://127.0.0.1:8080/Struts2_01/hello.action

  测试结果:

    

至此,我们就完成了一个简单的struts2框架的项目。

       

      

  

Struts2 入门介绍(一)的更多相关文章

  1. Struts2入门介绍(二)

    一.Struts执行过程的分析. 当我们在浏览器中输入了网址http://127.0.0.1:8080/Struts2_01/hello.action的时候,Struts2做了如下过程: 1.Stru ...

  2. Struts2入门1 Struts2基础知识

    Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...

  3. struts2框架(1)---struts2入门

    struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说 ...

  4. Struts2 入门

    一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...

  5. C# BackgroundWorker组件学习入门介绍

    C# BackgroundWorker组件学习入门介绍 一个程序中需要进行大量的运算,并且需要在运算过程中支持用户一定的交互,为了获得更好的用户体验,使用BackgroundWorker来完成这一功能 ...

  6. 初识Hadoop入门介绍

    初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...

  7. [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)

    最近在使用Python爬取网页内容时,总是遇到JS临时加载.动态获取网页信息的困难.例如爬取CSDN下载资源评论.搜狐图片中的“原图”等,此时尝试学习Phantomjs和CasperJS来解决这个问题 ...

  8. [Python爬虫] scrapy爬虫系列 <一>.安装及入门介绍

    前面介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分析网页DOM树结构进行爬取内容,同时可以结合Phantomjs模拟浏览器进行鼠标或键盘操作.但是,更 ...

  9. Struts2入门3 深入学习

    Struts2入门3 深入学习 处理结果和异常 前言: Struts学习的差不多了,还有最后的一点就收官了就是结果处理和异常处理.前面学习Struts主要围绕就是Action以及struts.xml配 ...

随机推荐

  1. 用 Inkscape 做 SVG 给 TPath

    FireMonkey 里的 TPathData 支持 SVG 的基本绘图指令,因此可以运用 Inkscape 软件,提取 SVG 的绘图内容,请见图片说明: INKSCAPE https://inks ...

  2. Nhibernate 存储过程获取返回值

    写在前面:因为项目使用ssh.net所以做着做着要调用存储过程,而且是有返回值的,按照以前的做法直接在参数里指定下就可以获取,但是在nhibernate里调用就有点陌生了,百度一下得出的结果有两种:第 ...

  3. Entity Framework 6 暂停重试执行策略

    EF6引入一个弹性连接的功能,也就是允许重新尝试执行失败的数据库操作.某些复杂的场景中,可能需要启用或停用重试执行的策略,但是EF框架暂时尚未提供直接的设置开关,将来可能会加入这种配置.幸运的是,很容 ...

  4. 用Visual Studio 2015成功编译、发布UMDF驱动到目标机!!

    开发工具:Visual Studio 2015企业版 主      机:windows10 X64企业版,主机是安装了Visual Studio 2015的操作系统,主要进行驱动开发和调试. 目  标 ...

  5. 三、linux基础命令

    1.已知/tmp 目录下已经存放了test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp 下覆盖掉/tmp/test.txt,而让linux系统不提示是否覆盖 答:之所以会出 ...

  6. [Swift]堆栈Stack的两种版本:(1)用类包装Stack (2)用泛型包装Stack

    堆栈是一个在计算机科学中经常使用的抽象数据类型.堆栈中的物体具有一个特性: 最后一个放入堆栈中的物体总是被最先拿出来, 这个特性通常称为后进先出(LIFO)队列. 堆栈中定义了一些操作. 两个最重要的 ...

  7. io--文件内容的复制

    public class CopyTextTest_2 {  private static final int BUFFER_SIZE = 1024;  public static void main ...

  8. UIEvent笔记

    UIEvent是什么 代表iOS系统中的一个事件. UIEvent分为三类,touch events, motion events, and remote-control events touch e ...

  9. Tomcat安装与使用

    主要讲解Tomcat的 安装与使用,讲解ubuntu版本和windows. 下载与安装: 1)到apache官网.www.apache.org http://jakarta.apache.org(产品 ...

  10. iOS 循环轮播框架思路

    使用3个imageview实现无线轮播的大致原理 将3个imageview添加到scrollview上面,scrollview的contensize是3个imageview的宽度,设置scrollvi ...