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

 2023-09-11 阅读 20 评论 0

摘要:搭建Struts2的开发环境,一般要做以下三个步骤: 1.找到开发Struts2应用需要使用到的jar文件,接下来介绍如何在网上下载Struts所需要的工具并找到开发Struts应用的jar文件: (1).首先,在百度中搜索Struts2,然后打开下图的红色箭头指向

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

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

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

JAVA开发环境?

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

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

struts1框架、

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

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

java struts框架?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:

struts2的执行流程,

点击完成后打开项目底下的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.以上内容仅供大家学习参考,写得不好请见谅,如要转载,请注明出处,如有雷同,纯属巧合,如有错误,请指出,谢谢!



版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/47531.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息