struts2环境搭建

Struts2的环境要求    Apache Struts2的环境需求如下:

 

  Servlet API 2.4

  JSP API 2.0

  Java 5

  需要提醒的是,在Struts中会用到Annotation,所以请将JDK版本升级到1.5.

  Struts2环境搭建

 

4.1Struts的下载

   从游览器输入http://people.apache.org/builds/struts/,即可看到Struts的各个版本列表。从下图中可以发现,现在Struts2.0的最新版是2.1.0,发布于2007年10月29。      

  Struts2教程--第一章 搭建Struts2开发环境

 

  (图1)

   Struts2教程--第一章 搭建Struts2开发环境

   (图2)

  从图2中可以看出,即可以分开下载,又可以一次全部下载。全部下载的大小为83M,

   下表注明了各个压缩包的作用。

 

  压缩包名称

  作用

  struts-2.1.0-docs.zip

  文档,包含了Struts2API

  struts-2.1.0-lib.zip

  构建Struts2工程所需要的包

  struts-2.1.0-src.zip

  Struts2的所有源代码

  struts2-blank-2.1.0.war

  空白工程

  struts-2.1.0-all.zip

  大集成,包括上面所有的内容

4.2 开发工具介绍

   目前J2EE开发工具主要分为Eclipse和NetBeans两大阵营,Eclipse的最高版本为3.3,NetBeans的最高版本为6.0.今天刚刚从新闻上看到,NetBeans6.0的英文正式版正式发布了,真是可喜可贺。

   笔者在开发时以Eclipse为主,但Eclipse并不支持WEB开发,需要安装相应插件。MyEclipse是一个功能强大且框架支持非常广泛的WEB开发插件,该产品是收费项目。目前MyEclipse的最高版本为6.0,即便如此,尚不支持Struts2.0,我们只能手工配置Struts2.0的开发环境。

4.3 库文件

   从网站上下载的Struts2包含了二三十个库文件,但大多数是可选的,有些库是插件,用于和其他框架的整合。

   读者可自行下载struts2-blank-2.1.0.war压缩包,展开后是一个非常简单的项目,从WEB-INF/lib目录中可以看到5个库文件,解释如下:

 

  包名

  说明

  commons-logging-1.0.4.jar

  日志管理

  freemarker-2.3.8.jar

  表现层框架,定义了struts2的可视组件主题(theme)

  ognl-2.6.11.jar

  OGNL表达式语言,struts2支持该EL

  struts2-core-2.0.10.jar

  struts2的核心库

  xwork-2.0.4.jar

  webwork的核心库,自然需要它的支持

  Struts2教程--第一章 搭建Struts2开发环境 (图3)

4.3 使用Eclipse搭建Struts2的开发环境4.3.1创建用户库

   将Struts2所需的包建成用户库,可以更加方便地进行管理和使用,这是一个好的习惯——编程从习惯开始。

   1.选择菜单Window->Preferences->Java->Build Path->User Libraries。如图4:

   Struts2教程--第一章 搭建Struts2开发环境

   (图4)

   2.点击右侧的New…按钮,创建一个新的用户库,弹出如图5所示对话框:

   Struts2教程--第一章 搭建Struts2开发环境

   (图5)

    3.输入用户库的名称,如:Struts2,点击OK按钮,该对话框自动关闭。结果如图6所示:

 

   Struts2教程--第一章 搭建Struts2开发环境

   (图6)

   此时,右侧的按钮被点亮。

   4.点击“Add JARS…”按钮,添加用户库所需的库文件,在Struts2中,至少要包含上文中提到的5个库文件。添加后效果如图7所示:

   Struts2教程--第一章 搭建Struts2开发环境

   (图7)

   5.点击“OK”完成。

4.3.2开发第一个Struts2应用程序——世界,你好

   开发WEB应用程序,本文使用了MyEclipse插件。该插件为收费软件,目前提供英文版和日文版,不同的版本可以运行在Windows、Linux等操作系统上。为了方便用户,MyEclipse有一个Full版,连同Eclipse一起安装,对于初学者而言,可以减少很多麻烦和困扰。

   读者可自行去http://www.myeclipseide.com/网站下载该软件的共享版本。建议读者下载MyEclipse5.5(这也是笔者使用的版本),这个版本相对比较稳定,MyEclipse6.0还处于测试之中。

   入门教程总是以HelloWorld作为学习的第一步,自然笔者也不例外。本示例从游览器输入网址,提交请求后在页面中显示“世界,你好”的信息。

   1.新建WEB工程,如图8所示:

   Struts2教程--第一章 搭建Struts2开发环境

   (图8)

   2.点击“Next”,输入工程名,如图9所示:

   Struts2教程--第一章 搭建Struts2开发环境

   (图9)

   3.点击“Finish”完成。

   4.现在将Struts2的库导入到工程中,右击工程名称弹出快捷菜单,选择Build Path->Add Libraries…,如图10所示。

   Struts2教程--第一章 搭建Struts2开发环境

   (图10)

   5.从弹出的对话框中选择“User Libraries”,如图11所示。

   Struts2教程--第一章 搭建Struts2开发环境

   (图11)

   6. 单击下一步,我们看到,上文中创建的用户库出现在列表中,在“Struts2”前的复选框上打勾,点击“Finish”完成。如图12。

   Struts2教程--第一章 搭建Struts2开发环境

   (图12)

   7.将Struts2所带的过滤器org.apache.struts2.dispatcher.FilterDispatcher配置到工程的web.xml文件中,默认情况下,该过滤器拦截请求字符串中以.action结尾的请求,并将该请求委托给指定的Action进行处理。最直观的表现就是调用Action的execute()方法。代码如下:

  代码清单1:web.xml

  <filter>

    <filter-name>struts2</filter-name>

    <filter-class>

      org.apache.struts2.dispatcher.FilterDispatcher

    </filter-class>

  </filter>

  <filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern><!--<url-pattern>*.action</url-pattern>-->

  </filter-mapping>

  注:在Sturts1.X中,该行为由Servlet完成。

  8.创建包com.lizanhong.action,并在该包中创建HelloWorldAction类,该类继承自com.opensymphony.xwork2.ActionSupport。理论上,Action可以不继承任何类或实现任何接口,以增强程序的可测试性,这也是和Struts1.X不同的地方。但是,继承自ActionSupport可以减少更多的编码工作。

   在ActionSupport中,定义了方法execute(),当用户向该Action发送请求时,会自动调用。程序代码如下:

  代码清单2:HelloWorldAction.java

package com.lizanhong.action;

import com.opensymphony.xwork2.ActionSupport;

publicclass HelloWorldAction extends ActionSupport {

  @Override

  public String execute() throws Exception {

    System.out.println("Action执行了。");

    returnSUCCESS;

  }

}

  注:ActionSupport是Struts2提供的类,功能类似于Struts1.x中的Action类,该类封装了几个有用的功能,比如:

  getText():从资源文件中获取国际化消息。

  addFieldError():验证输入未通过时添加错误消息,支持国际化。

  execute():该方法一般会被重写,当客户端向Action发送请求时,会调用此方法。

  总结起来,该类主要提供了错误消息的支持和国际化支持。

   在工程类路径下创建struts.xml文件,这是Struts2的配置文件,类似于Struts1.x中的struts-config.xml,在struts.xml文件中可以配置Action、Bean、Interceptor等组件。

  代码清单3:struts.xml

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

  <include file="struts-default.xml"></include>

  

  <package name="a" extends="struts-default">

    <action name="helloworld" class="com.lizanhong.action.HelloWorldAction">

      <result>/result.jsp</result>

    </action>

  </package>

</struts>

  注:WEB应用程序的类路径是指WEB-INF/classes目录,在Eclipse中,创建在src目录下的文件最终发布后会自动复制到WEB-INF/classes目录下。

  代码清单3中涉及到很多标签,以下是简单的解释:

 

  标签名称

  说明

  include

  包含其他xml文件,在示例中,这意味着struts.xml可以访问定义在struts-default.xml文件中的组件。

  该元素可以使得Struts2定义多个配置文件,“分而治之”。

  要注意的是,任何一个struts2配置文件都应该和struts.xml有相同的格式,包括doctype,并且可以放在类路径下的任何地方。

  package

  为Action或截拦器分组。

  name:名称,必填项,名称自定义,没特别要求。方便别的package引用。

  extends:package能继承其他的package,即通过该属性实现,值为另一个package的name。

  在示例中,extends =”struts-default”是从struts-default.xml中继承的。

  action

  定义Action,name属性为访问时用到的名称,class属性是Action的类名。

  result

  根据Action的返回值定义页面导航。

  Action的预定义的返回值有:

  String SUCCESS = "success";

  String NONE  = "none";

  String ERROR  = "error";

  String INPUT  = "input";

  String LOGIN  = "login";

  比如,当Action返回SUCCESS时希望转到ok.jsp页面,则可以这样写:

  <result name=”success”>ok.jsp</result>

  其中,name的缺省为success。

   9.result.jsp是一个非常简单的jsp页面,输出“世界,你好”。

  代码清单4:result.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 'result.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>

  世界,你好. <br>

</body>

</html>

  9.发布工程,在浏览器中输入:http://localhost:8081/Struts2Demo/helloworld.action,在控制台输出“Action执行了。”

  10.在浏览器的结果

  struts.xml的定义文件

代码清单5:struts-2.0.dtd

 

<?xml version="1.0" encoding="UTF-8"?>

<!-- START SNIPPET: strutsDtd -->

<!--

  Struts configuration DTD.

  Use the following DOCTYPE

 

  <!DOCTYPE struts PUBLIC

  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

  "http://struts.apache.org/dtds/struts-2.0.dtd">

-->

<!ELEMENT struts (package|include|bean|constant)*>

<!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, global-results?, global-exception-mappings?, action*)>

<!ATTLIST package

  name CDATA #REQUIRED

  extends CDATA #IMPLIED

  namespace CDATA #IMPLIED

  abstract CDATA #IMPLIED

  externalReferenceResolver NMTOKEN #IMPLIED

>

<!ELEMENT result-types (result-type+)>

<!ELEMENT result-type (param*)>

<!ATTLIST result-type

  name CDATA #REQUIRED

  class CDATA #REQUIRED

  default (true|false) "false"

>

<!ELEMENT interceptors (interceptor|interceptor-stack)+>

<!ELEMENT interceptor (param*)>

<!ATTLIST interceptor

  name CDATA #REQUIRED

  class CDATA #REQUIRED

>

<!ELEMENT interceptor-stack (interceptor-ref+)>

<!ATTLIST interceptor-stack

  name CDATA #REQUIRED

>

<!ELEMENT interceptor-ref (param*)>

<!ATTLIST interceptor-ref

  name CDATA #REQUIRED

>

<!ELEMENT default-interceptor-ref (param*)>

<!ATTLIST default-interceptor-ref

  name CDATA #REQUIRED

>

<!ELEMENT default-action-ref (param*)>

<!ATTLIST default-action-ref

  name CDATA #REQUIRED

>

<!ELEMENT global-results (result+)>

<!ELEMENT global-exception-mappings (exception-mapping+)>

<!ELEMENT action (param|result|interceptor-ref|exception-mapping)*>

<!ATTLIST action

  name CDATA #REQUIRED

  class CDATA #IMPLIED

  method CDATA #IMPLIED

  converter CDATA #IMPLIED

>

<!ELEMENT param (#PCDATA)>

<!ATTLIST param

  name CDATA #REQUIRED

>

<!ELEMENT result (#PCDATA|param)*>

<!ATTLIST result

  name CDATA #IMPLIED

  type CDATA #IMPLIED

>

<!ELEMENT exception-mapping (#PCDATA|param)*>

<!ATTLIST exception-mapping

  name CDATA #IMPLIED

  exception CDATA #REQUIRED

  result CDATA #REQUIRED

>

<!ELEMENT include (#PCDATA)>

<!ATTLIST include

  file CDATA #REQUIRED

>

<!ELEMENT bean (#PCDATA)>

<!ATTLIST bean

  type CDATA #IMPLIED

  name CDATA #IMPLIED

  class CDATA #REQUIRED

  scope CDATA #IMPLIED

  static CDATA #IMPLIED

  optional CDATA #IMPLIED

>

<!ELEMENT constant (#PCDATA)>

<!ATTLIST constant

  name CDATA #REQUIRED

  value CDATA #REQUIRED  

>

<!-- END SNIPPET: strutsDtd -->

  总结

    Struts是一个时下非常流行并被许多企业级应用程序采用的WEB框架,Struts2在Struts1.x的基础上进行了大量改造,和WebWork合二为一,引进了更多的新观念、新思想和新技术,使之更符合J2EE应用程序开发的需要。

 

   “工欲善其事,必先利其器”,掌握一两种开发工具,能够大大提高编程效率,也能增强开发者的信心。学习一门新技术时,第一个应用程序非常重要,如果第一个最简单的程序运行不成功,会使得学习者的积极性大打折扣,这也是笔者不愿意看到的。所以,本章图文并茂地详细介绍了Struts2应用程序的开发过程,并尽可能少的提及陌生的概念和术语。

 

 详细参照:http://tech.ddvip.com/2008-12/122889918998930.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自动控制节水灌溉技术的高低代表着农业现代化的发展状况,灌溉系统自动化水平较低是制约我国高效农业发展的主要原因。本文就此问题研究了单片机控制的滴灌节水灌溉系统,该系统可对不同土壤的湿度进行监控,并按照作物对土壤湿度的要求进行适时、适量灌水,其核心是单片机和PC机构成的控制部分,主要对土壤湿度与灌水量之间的关系、灌溉控制技术及设备系统的硬件、软件编程各个部分进行了深入的研究。 单片机控制部分采用上下位机的形式。下位机硬件部分选用AT89C51单片机为核心,主要由土壤湿度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。上位机选用586型以上PC机,通过MAX232芯片实现同下位机的电平转换功能,上下位机之间通过串行通信方式进行数据的双向传输,软件选用VB高级编程语言以建立友好的人机界面。系统主要具有以下功能:可在PC机提供的人机对话界面上设置作物要求的土壤湿度相关参数;单片机可将土壤湿度传感器检测到的土壤湿度模拟量转换成数字量,显示于LED显示器上,同时单片机可采用串行通信方式将此湿度值传输到PC机上;PC机通过其内设程序计算出所需的灌水量和灌水时间,且显示于界面上,并将有关的灌水信息反馈给单片机,若需灌水,则单片机系统启动鸣音报警,发出灌水信号,并经放大驱动设备,开启电磁阀进行倒计时定时灌水,若不需灌水,即PC机上显示的灌水量和灌水时间均为0,系统不进行灌水。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值