我们先来用ANT搭建起一个工作环境。
首先从apache.org获得ant的可执行二进制win或linux代码,然后根据不同的系统配置好ANT_HOME环境变量和ant的bin所在的path目录;关于两种系统的环境配置可以在我的java环境的搭建文章中找到方法;然后测试你的ant是否可用:在任何一个目录下运行ant会出现一下信息:
C:>ant
Buildfile: build.xml does not exist!
Build failed
这说明你的ant可以工作了。
下面让我们再从apache.org获得Struts的包文件。找到struts-example包,我们就借用一下这个很好的教学包来修改创建并理解我们的Struts结构。
打开此包,我们可以发现此根文件夹存在一个build.xml文件,这个就是我们前面ant程序所必需的文件,那么就让我们来看看这个文件:
<project name="struts-example.project" default="war-package"
basedir=".">这一行定义了你的工程名struts-example.project打包war工程默认打包路径:.为当前所在目录
<property
name="app.name" value="struts-example" />
<property name="build.dir"
value="WEB-INF/classes" />
<property name="lib.dir"
value="build/lib"/>
<property name="build.home"
value="build/${app.name}"/>
<property name="src.dir"
value="E:/Tomcat/webapps" />
<property name="del.dir"
value="E:/Tomcat/webapps/struts-example"
/>以上几行定义了此build.xml文件内所要用到的变量,我很是推荐这种变量的申明用法,如果你做多了就会发现这也是一种很简单的模式。
<!--
===================================================================
-->
<!-- Compile package -->
<!--
===================================================================
-->
<target name="compile">这一行定义了ant 后面所要的参数,也就是我们将来使用ant
compile来编译以下<target></target>之间的目标文件。
<javac
srcdir="WEB-INF/src/org/apache/struts/webapp/example"
destdir="${build.dir}"
这一行当中WEB-INF/src/org/apache/struts/webapp/example是源文件所在的目录而destdir="${build.dir}"则是编译好的class文件所放置目录,这里所要指出的是因为源文件package了org/apache/struts/webapp/example所以目录为WEB-INF/classes
debug="on"
deprecation="on"
optimize="off"
>
<classpath>
<pathelement
location="WEB-INF/lib/struts.jar"
/>这一行声明了本次ant命令所要用到的类文件的classpath:WEB-INF/lib/struts.jar
</classpath>
<include
name="OkInensModel.java"/>
<include
name="OkInensAction.java"/>所要编译的文件,你也可以用一个<include
name="*.java"/>代替
</javac>
</target>
以下解释请参考以上的自己解释:
<!--
===================================================================
-->
<!-- Creates the package jar archive -->
<!--
===================================================================
-->
<target name="war">
<jar
jarfile="${app.name}.war"
basedir=""
includes="**"/>
</target>
<!--
===================================================================
-->
<!-- Creates the distribution -->
<!--
===================================================================
-->
<!--
===================================================================
-->
<!-- Create directories and copy files for joinStruts web app
-->
<!--
===================================================================
-->
<target name="copy">
<delete
dir="${del.dir}"/>
<!-- copy web application
-->
<!-- copy struts configuration files -->
<copy
todir="${src.dir}">
<fileset
dir=""
includes="${app.name}.war"
/>
</copy>
</target>
<!--
===================================================================
-->
<!-- Packages the distribution to a WAR -->
<!--
===================================================================
-->
</project>
下面让我们来看看此文件夹下的web-inf下其他文件:
web.xml
此文件定义了Struts架构的基本信息,包括*.do的映射配置:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
action.xml在Struts1.0以后已经被取消
struts-config.xml
此文件为文件映射目录配置文件:
<?xml version="1.0" encoding="ISO-8859-1"
?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software
Foundation//DTD Struts Configuration
1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<!--
This
is the Struts configuration file for the example application,
using the
proposed new syntax.
NOTE: You would only flesh out the details in the
"form-bean"
declarations if you had a generator tool that used them to
create
the corresponding Java classes for you. Otherwise, you would
need
only the "form-bean" element itself, with the corresponding
"name" and "type"
attributes.
-->
<struts-config>
<!--
========== Data Source Configuration ===============================
-->
<!--
<data-sources>
<data-source>
<set-property
property="autoCommit"
value="false"/>
<set-property
property="description"
value="Example Data Source
Configuration"/>
<set-property
property="driverClass"
value="org.postgresql.Driver"/>
<set-property
property="maxCount"
value="4"/>
<set-property
property="minCount"
value="2"/>
<set-property
property="password"
value="mypassword"/>
<set-property
property="url"
value="jdbc:postgresql://localhost/mydatabase"/>
<set-property
property="user"
value="myusername"/>
</data-source>
</data-sources>
-->
<!--
========== Form Bean Definitions ===================================
-->
<form-beans>
<!-- Logon form bean
-->
<!--
<form-bean
name="logonForm"
type="org.apache.struts.webapp.example.LogonForm"/>
-->
<!--
<form-bean
name="logonForm"
type="org.apache.struts.action.DynaActionForm">
-->
<form-bean
name="logonForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property
name="username" type="java.lang.String"/>
<form-property
name="password"
type="java.lang.String"/>
</form-bean>
<!--
Registration form bean -->
<form-bean
name="registrationForm"
type="org.apache.struts.webapp.example.RegistrationForm"/>
<!--
Subscription form bean -->
<form-bean
name="subscriptionForm"
type="org.apache.struts.webapp.example.SubscriptionForm"/>
</form-beans>
<!--
========== Global Forward Definitions ==============================
-->
<global-forwards>
<forward name="logoff"
path="/logoff.do"/>
<forward name="logon"
path="/logon.jsp"/>
<forward name="registration"
path="/registration.jsp"/>
<forward name="success"
path="/mainMenu.jsp"/>
</global-forwards>
<!--
========== Action Mapping Definitions ==============================
-->
<action-mappings>
<!-- Edit user registration
-->
<action
path="/editRegistration"
type="org.apache.struts.webapp.example.EditRegistrationAction"
attribute="registrationForm"
scope="request"
validate="false">
<forward
name="success"
path="/registration.jsp"/>
</action>
<action
path="/okInens"
type="org.apache.struts.webapp.example.OkInensAction"
validate="false"
scope="request">
</action>
<!--
Edit mail subscription -->
<action
path="/editSubscription"
type="org.apache.struts.webapp.example.EditSubscriptionAction"
attribute="subscriptionForm"
scope="request"
validate="false">
<forward
name="failure"
path="/mainMenu.jsp"/>如果EditSubscriptionAction返回failure进入mainMenu.jsp
<forward
name="success"
path="/subscription.jsp"/>如果EditSubscriptionAction返回success进入subscription.jsp
</action>
<!--
Process a user logoff -->
<action
path="/logoff"
type="org.apache.struts.webapp.example.LogoffAction">
<forward
name="success" path="/index.jsp"/>
</action>
<!-- Process
a user logon -->
<action
path="/logon"
type="org.apache.struts.webapp.example.LogonAction"
name="logonForm"
scope="session"
input="logon">
<exception
key="expired.password"
type="org.apache.struts.webapp.example.ExpiredPasswordException"
path="/changePassword.jsp"/>
</action>
<!--
Save user registration -->
<action
path="/saveRegistration"
type="org.apache.struts.webapp.example.SaveRegistrationAction"
name="registrationForm"
scope="request"
input="registration"/>
<!--
Save mail subscription -->
<action
path="/saveSubscription"
type="org.apache.struts.webapp.example.SaveSubscriptionAction"
name="subscriptionForm"
scope="request"
input="subscription">
<forward
name="subscription" path="/subscription.jsp"/>
<forward name="success"
path="/editRegistration.do?action=Edit"/>
</action>
<!--
Display the "walking tour" documentation -->
<action
path="/tour"
forward="/tour.htm">
</action>
<action
path="/xs"
forward="/xs.jsp">
</action>
</action-mappings>
<!--
========== Controller Configuration ================================
-->
<controller>
<!-- The "input" parameter on "action"
elements is the name of a
local or global "forward" rather than a
module-relative path -->
<set-property property="inputForward"
value="true"/>
</controller>
<!-- ========== Message
Resources Definitions ===========================
-->
<message-resources
parameter="org.apache.struts.webapp.example.ApplicationResources"/>
<message-resources
parameter=
"org.apache.struts.webapp.example.AlternateApplicationResources"
key="alternate">
</message-resources>
<!--
========== Plug Ins Configuration ==================================
-->
<plug-in className=
"org.apache.struts.webapp.example.memory.MemoryDatabasePlugIn">
<set-property
property="pathname"
value="/WEB-INF/database.xml"/>
</plug-in>
<plug-in
className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
红色是我自己加改的,你可以自己根据自己的需要添加更改
以下是我的struts-example运行效果:
我的struts-example.war下载
以上只是我的一点理解,如果你想更深刻的理解使用这些,请你自己来进行更深入的学习和使用吧,我想那才是你真正体会并运用了这项技术,在此对apache.org表示最敬意的感谢,他为我们带来了许多开源好技术。
相关推荐
struts2框架详细搭建教程
这是一个帮助初学者学习如何搭建struts2框架的详细教程文档,图文教程;
Struts框架搭建
Struts1作为一个官网都没更新的框架,在现在的市面上几乎已经不见其踪影。但作为一个入门框架对于理解请求的整个流程还是比较简单易懂的。在这里就简单的搭建一个Struts框架希望能对学习的小伙伴提供一点帮助吧。我们的开发工具仍然为eclipse,在这里使用maven作为我们的构建工具,如果对eclipse搭建maven还不懂的同学请点击这里。先建立一个ma...
struts 简单框架搭建
struts 简单框架搭建 最简单 基础的的 struts 没有spring
struts框架搭建
struts是开源框架。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。 Struts 是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet...
Struts2官方例子1(Ant版的)
Struts2官方例子1(Ant版的),Basic_Struts2_Ant,主要是搭建Struts2的基本环境,包括需要的jar,web.xml Struts.xml的配置
用朴素贝叶斯分类模型判断病人是否感染幽门螺杆菌(Python实现)
朴素贝叶斯,Python
Struts2 搭建框架记录
今天是学习Struts框架的第一天,记录下来遇到的第一个问题,折腾了半天了,终于解决了。 记录一下搭建过程: 一:搭建环境: eclipse:eclipse-jee-oxygen-2-win32-x86_64 jdk:jdk1.8.0_131 Tomcate:apache-tomcat-7.0.79 二:下载struts2相关的jar包。 可以从官网下载,下载步骤如下: 1,...
Windows Server安装Intel I219-V网卡驱动完整教程
在Windows Server系统上安装Intel I219-V网卡驱动的方法。
搭建struts框架
1.导包 2.新建一个实体类... 2.配置WebRoot下的lib文件里面的web.xml(配置过滤器) com.struts struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*
基因家族Motif 分析
MEME
从命令到对话:LLM如何重塑车载语音交互与软件定义汽车体验
自动语音识别和自然语言处理是智能交互的核心基础技术,它们使机器能够理解和响应人类语音指令。其原理在于通过声学模型和语言模型将声音信号转化为文本,再解析文本背后的用户意图。这项技术的价值在于提供了一种自然、高效且能解放双手的人机交互方式,极大地提升了在特定场景(如驾驶)下的安全性与便利性。随着技术演进,其应用场景已从简单的命令控制扩展到复杂的多轮对话和跨域任务执行。当前,软件定义汽车的架构变革为车载语音提供了统一的控制平台,而大型语言模型的引入则带来了范式革命,使其从功能触发器进化为真正的智能任务执行者。本文
Struts学习笔记[3]使用ant来发布Struts应用
使用ant来发布Struts应用用ant来编译规模较大的工程比较方便,每个工程对应一个build.xml文件。这个文件包含与这个工程有关的路径信息和任务。每个build.xml文件都包含一个元素,和一个或多个元素。ANT提供了内置任务集,用户可以开发自己的任务元素。下表为ANT的内置任务:ANT任务描述Property设置name/value形式的属性Mkdir创建目录Copy拷贝文件或文件夹De
Ubuntu20.04下Intel RealSense D435i相机驱动配置全攻略(含ROS Noetic适配)
本文详细介绍了在Ubuntu20.04系统下配置Intel RealSense D435i相机驱动的完整流程,包括libRealsense SDK 2.0安装、ROS Noetic适配及常见问题解决方案。通过实战指南帮助开发者快速实现深度相机与ROS的集成,适用于机器人视觉和SLAM应用开发。
用ANT工具管理Struts等Web应用
1. Ant是apache的一个开源代码项目,它是一个优秀的软件工程管理工具。ANT本身用java语言实现,并且使用xml格式的配置文件来构建工程,可以很方便地实现多平台编译,非常适合管理大型工程。 本篇将介绍如何用Ant工具来创建和发布struts应用。 在开发阶段,我们需要建立和准备各种类型的文件,如java源代码,java Class文件,jar文件
手把手教你用EG2153搭建开关电源:SOP-8封装驱动芯片的5个设计技巧
本文详细介绍了使用EG2153自振荡半桥驱动芯片搭建开关电源的五个核心设计技巧。内容涵盖从深入理解芯片工作机制、频率编程计算误区、SOP-8封装的热管理方案,到死区时间评估与外部保护电路设计,以及实战调试与故障排查指南,旨在帮助工程师实现稳定可靠的小功率电源设计。
机器人动力学仿真软件:PyBullet_(10).案例分析:双足机器人行走仿真
在本节中,我们将详细探讨如何使用PyBullet进行双足机器人的行走仿真。双足机器人行走仿真是一个复杂的动力学问题,涉及多个关节的协调运动和环境交互。通过本节的学习,您将了解如何创建和控制双足机器人模型,设置仿真环境,以及实现基本的行走算法。首先,我们需要创建一个双足机器人模型。PyBullet支持多种模型格式,包括URDF(Unified Robot Description Format)和MJCF(MuJoCo XML Format)。URDF是一种广泛使用的机器人模型描述格式,我们将使用URDF来创建
用Ant,Struts搭建简单工程应用环境
google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java
杰理-tone
低音质格式切换高音质格式:切换提示音格式,未导出,编译下载没有提示音;提示音导出,再次编译下载,提示音正常高音质格式切换低音质格式:不需要导出,直接编译下载,提示音正常。
ant 自动生成struts资源文件
Ant这个工具真实一个太好用的工具了!<br />近期在学习使用struts,使用过程中会涉及到struts资源的文件的使用,这个资源文件又必须通过jdk的命令native2ascii转换字符编码。想起来我经常修改资源文件,然后每次修改都要打开控制台,cd到资源文件目录,然后在执行命令native2ascii -encoding gb2312,真是好痛苦的经历啊。<br /> 所以我决定使用ant解决这个难题。让ant自动为我服务,呵呵。好懒的我啊!<br /> 打开ant的文档,找到了
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
Struts、spring、hibernate、EJB、ant术语说明
Struts、spring、hibernate、EJB、ant术语说明 Struts Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几...
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
用ANT打包Struts2项目并发布到tomcat里
花了一天时间研究ANT,做了一个简单的demo,本着分享快乐的初衷,现在将部分代码贴出来,希望给有需要的朋友一些帮助,也给自己备个份。 笔者无意在这里讨论ANT的详细信息,所以这里我们假设你至少已经知道ANT是什么、有什么用。 笔者使用的IDE是Eclipse+myEclipse,所以这里都将以该环境做介绍。 1、工程目录图: [img...
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
Struts、spring、hibernate、EJB、ant的理解
<br />Struts<br /><br /> Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 <br /><br /> Spring<br /><br /
class文件用ant打包后struts扫描不到action的问题
有个项目的class文件用ant打包后放到项目lib目录下, 结果struts2 convention 就扫描不到jar里的action了...然后在网上搜到这个 https://jira.springsource.org/browse/SPR-1670 是说jar包中META-INF/manifest.mf没有指定什么directory entry, 查看了一下jar中的META-INF/m...
330



被折叠的 条评论
为什么被折叠?



