搭建Struts2的开发环境,一般要做以下三个步骤:

1.找到开发Struts2应用需要使用到的jar文件,接下来介绍如何在网上下载Struts所需要的工具并找到开发Struts应用的jar文件:

(1).首先,在百度中搜索Struts2,然后打开下图的红色箭头指向处(也可以直接点击下面的网址访问:Struts网址)

(2).打开之后,出现下图的界面,点击下载按钮:

(3).选择下面圈起来的第一个zip包,下载即可:

(4).下载之后解压到一个文件夹里面,我下载之后里面的文件有:

(5).我们所需要的jar包就在lib那个文件夹下,不同应用需要的jar包是不同的,因为我们所下载的Struts包是Struts-2.3.20版本的,所以开发Struts2程序最少需要的jar包有以下10个,分别是:

struts2-core-2.x.x.jar : Struts 2框架的核心类库。

xwork-core-2.x.x.jar: XWork类库,Struts 2在其上创建。

ognl-3.x.x.jar: 对象图导航语言(Object Graph Navigation Language),Struts 2框架通过其读写对象的属性。

freemarker-2.3.x.jar: Struts 2的UI标签的模板使用FreeMarker编写。

commons-logging-1.1.x.jar: ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK1.4+的日志记录。

commons-fileupload-1.3.1.jar: 文件上传组件,2.1.6版本后必须加入此文件。

commons-io-2.2.jar:里面有很多io(输入输出)操作工具类,是java.io.*的扩展,IO数据流读取功能。

commons-lang-2.4.jar:是json中的jar包,包含了一些数据类型工具,是java.lang.*的扩展。

commons-lang3-3.2.jar:带有常用的语言处理类的方法。

javassist-3.11.0.GA.jar:javassist(Java编程助手)用来操作字节码的,是字节码操纵简单。这个jar包是一个编辑Java字节码的类库。

以上这些包都可以在lib文件夹中找到,这是Struts-2.3.20版本所必需的,要不然会报异常

(6).接下来我们打开MyEclipse工具,新建一个Web Project:

点击完成后打开项目底下的WebRoot目录下的WEB-INF,下面有个lib文件夹,把上面所需要的10个jar包找到,放入lib目录底下:

这样就完成了第一步骤,把开发Struts2应用所需要的jar包放入Web工程中。

注:如果你所下载的Struts工具的版本较低的话,有一些jar包是不需要的,这里仅供大家作为参考。

2.接下来就是编写Struts2的配置文件:

在项目下的src目录下新建一个struts.xml文件,接下来附上struts.xml的模板:

struts.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts></struts>

就可以在<struts>和</struts>标记之间写一些其它的东西了。

3.在项目底下的WebRoot目录下的WEB-INF下的web.xml文件中加入Struts2 MVC框架启动配置:

这里,只需要在web.xml文件中加入这一段代码:

<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>

加在哪里呢,所以我附上web.xml文件:

web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name><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><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

这样就算配置好了,接下来测试一下开发环境搭建是否成功,点击这个项目,单击鼠标右键,在点击Run as <- 3 MyEclipse Server Application,出现下图,点击OK即可:

然后查看控制台,看是否会报错,如果报错可能上面3步中有步骤没做好,看到控制台没报错,该项目完成即可:

这里只截2幅图了,这样就搭建好了Struts2的开发环境。

4.接下来将实现第一个Struts2应用,这个应用是在前面StrutsTest项目搭建好开发环境后接下来写的:

(1).首先,打开struts.xml文件,在<struts>和</struts>标记之间写一段代码:

struts.xml文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="xg" namespace="/test" extends="struts-default"><action name="helloworld" class="tom.xg.action.HelloWorldAction"method="execute"><result name="hello">/WEB-INF/page/hello.jsp</result></action></package>
</struts>

在Struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际作用中,我们应该把一组业务功能相关的Action放在同一个包下。

其中配置包时,必须指定name属性,该name属性值可以任意取名,但必须是唯一的,它不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用,包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下Action的路径的一部分,如访问上面例子的Action,访问路径为:/test/helloworld.action,如果不指定该属性,默认是""(空字符串)。

通常每个包都要继承struts-default包,因为Struts2很多核心的功能是由拦截器来实现的,如:从请求中把请求参数封装到action,文件上传和数据校验等等都是通过拦截器来实现的,struts-default定义了这些拦截器和Result类型。当包继承了struts-default才能使用struts2提供的核心功能,包还可以通过abstract="true"定义为抽象包,抽象包不能包含action。

action中的name属性指的是action的名称,可以作为访问action路径的一部分,class属性是定义一个action类,当请求到来之后,交给这个action类处理,上面的例子说明要创建一个HelloWorldAction类并且在tom.xg.action类包下,method属性指的是该action的方法,如上面代码中的execute方法必须定义在HelloWorldAction类中。

result那个标记主要用来定义视图,name属性是视图的名称,上面的代码说明hello.jsp页面的路径必须在WEB-INF目录底下的page文件夹下。

(2).第二步,把那个包下的action新建出来,类名为HelloWorldAction,该类放在src目录下的tom.xg.action包下,并定义一个execute方法,其中代码如下:

HelloWorldAction.java文件:

package tom.xg.action;public class HelloWorldAction {private String msg;//定义一个字符串变量,放置内存中,用来存储你所想要显示在视图上的信息public String getMessge(){//封装字符串变量return msg;}public String execute(){ //execute方法,其中返回类型一定要是String类型,这是struts2的action方法的签名格式,要求必须是String类型msg="我的第一个Struts2应用,Hello World!";//为该变量负责,通过execute方法,显示到hello.jsp页面上return "hello";  //处理完用户的请求后,希望回到什么视图,就填视图的名称,这里返回到的是struts.xml文件里的result标记的name属性}
}

(3).第三步,在struts.xml文件上要求视图的路径为/WEB-INF/page/hello.jsp,所以我们在项目下WebRoot目录下的WEB-INF下新建一个page文件夹,在page文件夹里新建一个hello.jsp页面:

hello.jsp文件的代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'hello.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><!-- 输出显示HelloWorldAction类所封装的变量,因为是getMessage()方法,所以就是${message },如果在HelloWorldAction类里封装变量的方法为getResult,代码应该写为${result }-->${messge }</body>
</html>

(4).第四步,重新部署StrutsTest项目,开启Tomcat 7.0服务器,再输入网址 http://localhost:8083/Struts2Test/test/helloworld,其中这网址的前面几个不用我说了,后面的/test/helloworld是根据struts.xml文件中包的命名空间namespace属性的值和包下的action的名称name属性值来访问的,如果改了的话,访问路径也要改的,最后,运行效果如下图所示:

最后,再附上该项目的目录结构:

5.以上内容仅供大家学习参考,写得不好请见谅,如要转载,请注明出处,如有雷同,纯属巧合,如有错误,请指出,谢谢!



Struts2之struts-2.3.20开发环境的搭建并实现第一个Hello World小应用相关推荐

  1. Angular 5.0 学习2:Angular 5.0 开发环境的搭建和新建第一个ng5项目

    1.安装Node.js 在开始工作之前,我们必须设置好开发环境. 如果你的机器上还没有Node.js®和npm,请先安装它们. 去Node.js的官网,https://nodejs.org/en/,点 ...

  2. SSH开发环境整合搭建

    1.建立动态web工程,加入必要的jar包. antlr-2.7.7.jar asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3.jar c3p0-0.9.1.2 ...

  3. strut2开发环境的搭建

    搭建struts2开发环境的步骤 1,创建一个project----javaweb工程. 2,导入相关的srtuts2的jar文件 3,创建jsp文件 4,创建action文件 5,编写srtuts2 ...

  4. ubuntu 11.04下Android开发环境的搭建!

    ubuntu 11.04下Android开发环境的搭建! 1.安装JDK 首先到oracle的官网上下载linux版本的JDK,网址为:http://www.oracle.com/technetwor ...

  5. JAVA学习:maven开发环境快速搭建

    最近,开发中要用到maven,所以对maven进行了简单的学习.因为有个maven高手在身边,所以,很快就上手了,我这里算是自我总结吧.关于maven是什么东西,请参考其它文章. 准备工作 Jdk 1 ...

  6. Eclipse j2ee开发环境的搭建

    Eclipse j2ee 开发环境的搭建 Eclipse 是一个开源的功能强大的 ide 开发环境,再加上他的扩展插件功能,使得他被广泛使用. J2ee 有几种开发环境, eclipse+lomboz ...

  7. TypeScript 开发环境的搭建与数据类型

    一.Ts的优势 更早的发现错误 任何位置都有代码提示,增加开发效率 类型系统提升了代码的可维护性,重构更容易 使用最新的ES语法 TS类型推断机制,降低成本 二.开发环境的搭建 安装 Node.js ...

  8. TI cc2541协议栈开发环境的搭建

    最近半个月由于项目需要,学习了一下蓝牙4.0的协议栈开发,其实也就是TI公司做好的协议栈的基础上进行修改,不是太难,现在资料也很多. 我是个新手,所以对于新手来说,我的经验应该很有帮助,但文章细节不全 ...

  9. Ubuntu20.04下 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)

    Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 目录导航 Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 前言 1.安装前的准备工作 2.安装交叉编译器 3.安装t ...

最新文章

  1. 分类家族:二分类、多分类、多标签分类、多输出分类
  2. ESLint的NPM账户遭黑客攻击,可能窃取用户NPM访问令牌
  3. JavaWeb_域对象的属性操作
  4. TextArea的滚动条看不到了,可能与height有关
  5. 杭电2062java实现
  6. 深入理解计算机系统(2.6)------整数的运算
  7. python操作excel命令_python操作Excel读写(使用xlrd和xlrt)[转帖]
  8. java.util.Locale简介
  9. 安全平台基于ArcGIS构建安全的移动端App
  10. Permission denied (publickey). 解决方法
  11. Logic Pro for Mac(音频制作软件)V10.6.2中文版 支持M1芯片版mac
  12. Android下载文件常见错误解决方法
  13. 吾爱IC社区知识星球问答精选
  14. 【BUUCTF】CTF_Crypto 密码学_Quoted-printable(引用可打印)
  15. postgres 导入纯文本数据txt
  16. 免费稳定的APP分发托管平台,支持应用合并、内测分发、扫码下载
  17. 把用户证书安装成系统证书
  18. 三点估算法 PERT计划评审技术
  19. java的向下转型_Java 向上/向下转型浅析
  20. C#事件中sender和e参数的理解

热门文章

  1. Linux下安装Beego:go install: cannot install cross-compiled binaries when GOBIN is set
  2. 内部类的小总结(语法和用法方面)
  3. beyond company30天到期
  4. python3 str 数字类型判断 str.isdecimal(), isdigit(), isnumeric()
  5. Entity Framework Core导航属性加载问题
  6. MFC窗口程序显示命令行输出窗口的方法
  7. ZOJ3556 How Many Sets I(容斥)
  8. 禅道批量添加任务时选择对应模块功能
  9. linux下启动oracle
  10. 关于VS.NET RSACryptoServiceProvider的疑惑