分享
 
 
 

精通Struts技术第一章

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

第一章: Jakarta Struts 项目的介绍和它的支持组件

我们所有的章节的Web服务器都是基于Jakarta Tomcat容器。在本章结束的时候,通过运行你建立的Struts应用程序,你可以对Struts的框架机制有个大致的了解

The Jakarta Struts项目

The Jakarta Struts项目是由Apache Software Foundation发起的开源项目,它在java服务器端实现了MVC(Model-View-Controller)设计模式。

The Jakarta Struts项目最初是由Craig McClanahan在2000年五月创建的,但后来被开源组织所接收。

The Jakarta Struts作为一个开源框架的主要意图是为了在创建WEB应用时能比较容易的分离表示层和业务数据层。自从它诞生以来收到大量开发人员的支持,并很快的成为开源社区中一个重要的成员。

理解MVC设计模式

为了更深刻的理解Struts框架,你必须先理解MVC设计模式,Struts技术的就是基于MVC设计模式的。MVC设计模式起源于Smalltalk语言,它由以下三个部分组成:模型(model),视图(view),控制器(Controller).表1.1定义了这些组件。

组件

描述

模型(model)

封装数据对象。模型用来封装和显示数据对象。

视图(view)

作为模型的显示,它表示数据对象的当前状态

控制器(Controller)

定义对用户的输入执行相应操作的接口,它用来操作模型(model)和数据对象

使用MVC的好处包括如下:

可靠性:表示层和业务层别分离,这样就允许你更改你的表示层代码而不用重新编译你的模型(model)和控制器(Controller)代码

高重用和可适应性: MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或则无线浏览器(WAP)。

较低的生命周期成本:MVC使降低开发和维护用户接口的技术含量成为可能。

快速的部署:开发时间会得到相当大的缩减,它使程序员(java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。

可维护性: 分离表示层和业务逻辑层也使得基于Struts的Web应用更易于维护和修改。

The Struts架构图

在这章节,我们简要的画出一幅和MVC模式对应的STRUTS框架图1.1:

图1.1是Struts框架下应用程序请求流通过的路径。这个处理过程由5个基本的步骤组成。

下面是处理步骤的描述。

1. 由显示视图产生一个请求。

2. 请求被ActionServlet(控制器)接收,它在struts-config.xml文件中寻找请求的URI,找到对应的Action类后,Action类执行相应的业务逻辑。

3. Action类执行建立在模型组件基础上的业务逻辑,模型组件是和应用程序关联的。

4. 一旦Action类处理完业务逻辑,它把控制权返回给ActionServlet。,Action类提供一个键值作为返回的一部分,它指明了处理的结果。ActionServlet使用这个键值来决定在什么视图中显示Action的类处理结果。

5. 当ActionServlet把Action类的处理结果传送到指定的视图中,请求的过程也就完成了。

模型(The Model)

Struts框架没有提供特定的模型组件,因此我们不会整章介绍模型组件,但我们会把它使用到我们的例子中去。

视图(The View)

Struts框架中视图组件对应于一个简单的JSP文件,这个JSP文件包含了Struts定义的标签,下面的代码片段是一个简单的Struts视图:

<%@page language="java">

<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html">

<html:form action="loginAction.do"

name="loginForm"

type="com.wiley.loginForm" >

User Id: <html:text property="username"><br/>

Password: <html:password property="password"><br/>

<html:submit />

</html:form>

如你看到的那样,几个JSP的标签是JSP文件中的重点。这些标签在Struts框架中定义,它使struts应用项目和控制器之间实现松耦合。在第三章我们会建立一个真正可运行的struts视图,第五章中会对视图进行更详细的介绍。

控制器(The Controller)

控制器是Struts框架中的中枢,它由org.apache.struts.action.ActionServlet这个servlet来贯彻和执行的。这个org.apache.struts.action.ActionServlet接收所有客户端的请求,并把请求委派到指定的Action类(用户扩展自org.apache.struts.action)。ActionServlet委派请求是基于客户端传入的URI。一旦Action类完成处理,ActionServlet根据Action返回的键值来决定在什么视图中显示Action的类处理结果。ActionServlet类似于一个创建Action对象的工厂,由Action对象去执行应用中实际的业务逻辑。控制器是Struts框架中最重要的部分。我们会在第三章和第四章对控制器进行更详细的探讨。

Web应用 (WebApplications)

所有的Web应用被包含在一个目录结构中,首先你要在Web服务器下建立如下目录:

目录

内容

wileyapp

这是Web应用的根目录,所有的JSP和HTML文件都在这个目录下。

/wileyapp/WEB-INF

这个目录包含了所有除根目录外需要的资源,

包括WEB应用部署信息。注意:WEB-INF目录下的不是公共文件,无法直接服务于客户端。

/ wileyapp/WEB-INF/classes

存放了所有的servlet类或实用类。

/ wileyapp/WEB-INF/lib

包含所有WEB应用中要用到的后缀为JAR的包文件

图1.2

如果你实用的是Tomcat服务器,你的缺省根目录为<CATALINA_HOME>/webapps/,在<CATALINA_HOME>/webapps/下建立图1.2所示目录

注意:WEB服务器允许你编译你的类并存放到/WEB-INF/classes或/WEB-INF/lib下,但/WEB-INF/classes的类将被优先载入,即若你编译的类在两个目录下都存在,起作用的只有/WEB-INF/classes目录下的类。

Web应用的部署描述

Web应用的核心是部署描述。部署描述存放在/<SERVER_ROOT>/applicationname/WEB-INF/下的web.xml文件中,它描述了所有Web应用要使用的组件。如果你使用图1.2的目录结构,那么你的部署描述位于/<SERVER_ROOT>/wileyapp /WEB-INF/web.xml文件中。

部署描述中包括如下元素:

· ServletContext init parameters

·Localized content

· Session configuration

· Servlet/JSP definitions

· Servlet/JSP mappings

· Tag library references

· MIME type mappings

· Welcome file list

· Error pages

· Security information

下面的代码片段是部署描述的一个例子,它定义了一个简单的servlet。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<servlet>

<servlet-name>SimpleServlet</servlet-name>

<servlet-class>com.wiley.SimpleServlet</servlet-class>

</servlet>

</web-app>

打包Web应用

标准的Web应用都被打包成后缀为war的文件,你可以使用Java打包命令来创建WAR文件:jar cvf wileyapp.war

现在你就可以用wileyapp.war文件发布你WEB应用了。

Tomcat容器

Tomcat是是基于JAVA的开源WEB应用服务器,我们的例子都以Tomcat为WEB应用服务器。在开始我们的学习前你需要下载

Tomcat4 地址:http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.6/src/jakarta-tomcat-4.0.6-src.zip

JDK1.4地址:http://java.sun.com/webapps/download/Redirect/68949517/5847479377282807053505607246086069333228071972022813600060132859339008063305596058473206-3865/j2sdk-1_4_1_02-s1studio_ce-4u1-bin-windows.exe

操作系统为Win2000

2.在系统变量中设置JAVA_HOME = root

3.在系统变量中设置CATALINA_HOME> = root

4.在系统变量中设置CLASSPATH= root/lib/dt.jar;jar;root/lib/tools.jar;root/jre/rt.jar;

6. 在系统变量中PATH下添加 root\bin;

注意:root为你的安装目录

启动<CATALINA_HOME>\bin\startup.bat,在浏览器中输入http://localhost:8080

你若是能看到缺省的Tomcat 主页面,表明你的配置成功了。如果未成功请查看你的JDK是否已经安装,或者JDK路径是否设置正确。

下一章将大致讲述JSP和servlets,若你对于这方面的技术已经了解,你可以跳过下一章节。

作者:James Goodwill 翻译:凤鸣高岗

本文的版权属于笔者本人,但欢迎转载,前提是注明出处和原作者

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有