精通Struts技术第一章
第一章:
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
为你的安装目录
你若是能看到缺省的
Tomcat
主页面,表明你的配置成功了。如果未成功请查看你的
JDK
是否已经安装,或者
JDK
路径是否设置正确。
下一章将大致讲述
JSP
和
servlets
,若你对于这方面的技术已经了解,你可以跳过下一章节。
精通struts技术第二章
<jsp:include>
用于在JSP中包含静态或动态的WEB组件。语法如下:
<jsp:include page="urlSpec" flush="true">
<jsp:param ... />
</jsp:include>
表2.9描述了<jsp:include>的属性:
属性
|
说明
|
page
|
要包含的资源的地址,基于URL
|
flush
|
指明是否缓冲。
|
通过一个例子来对include进行说明:
列表 2.13 include.jsp.
----------------------------------------------------------------
<html>
<head>
<title>Include Example</title>
</head>
<body>
<table width="100%" cellspacing="0">
<tr>
<td align="left">
<jsp:include page="header.jsp" flush="true">
<jsp:param name="user"
value=’<%= request.getParameter("user") %>’ />
</jsp:include>
</td>
</tr>
</table>
</body>
</html>
------------------------------------------------------------
include.jsp文件包含了一个简单的JSP文件header.jsp,文件显示如下:
列表 2.14. header.jsp.
------------------------------------------
<%
out.println("<b>Welcome: </b>" +
request.getParameter("user"));
%>
------------------------------------
header.jsp寻找名称为user的参数并输出“welcome……”字符串。复制JSP文件到:
<CATALINA_HOME
>/webapps/wileyapp/ 目录,在浏览器中输入地址.:
http://localhost:8080/wileyapp/include.jsp?user=Bob
<jsp:forward>
在当前的WEB应用中告诉JSP引擎重定向当前请求到另外可用的资源上,包括静态资源,servlets,JSP等。<jsp:forward>能有效的终止当前执行的JSP。
注意:<jsp:forward>能包含<jsp:param>子属性,这个子属性作为从定向的目标资源。
语法如下:
<jsp:forward page="relativeURL">
<jsp:param .../>
</jsp:forward>
表2.10对<jsp:forward>的属性进行描述:
列表:2.15使用<jsp:forward>的例子:检验请求参数并且重定向请求到包含对应参数的JSP页面。
列表2.15 forward.jsp.
-----------------------------------------------------------------
<html>
<head>
<title>JSP Forward Example</title>
</head>
<body>
<%
if ( (request.getParameter("role")).equals("manager") ) {
%>
<jsp:forward page="management.jsp" />
<%
}
else {
%>
<jsp:forward page="welcome.jsp">
<jsp:param name="user"
value=’<%=request.getParameter("user") %>’ />
</jsp:forward>
<%
}
%>
</body>
</html>
-------------------------------------------
forward.jsp简单的检验请求参数的角色类型,然后重定向请求到相应的页面。
目标资源文件之一:welcome.jsp.
------------------------------------------------
<html>
<!-- Set the scripting language to java -->
<%@ page language="java" %>
<HTML>
<HEAD>
<TITLE>Welcome Home</TITLE>
</HEAD>
<BODY>
<table>
<tr>
<td>
Welcome User: <%= request.getParameter("user") %>
</td>
</tr>
</table>
</body>
</HTML>
----------------------------------------------------------
目标资源文件之二:management.jsp
------------------------------------------------------
<html>
<!-- Set the scripting language to java -->
<%@ page language="java" %>
<HTML>
<HEAD>
<TITLE>Management Console</TITLE>
</HEAD>
<BODY>
<table>
<tr>
<td>
Welcome Manager: <%= request.getParameter("user") %>
</td>
</tr>
</table>
</BODY>
</HTML>
复制三个JSP文件到
<CATALINA_HOME
>/webapps/ wileyapp/目录下,在浏览器中输入:
你可以通过修改输入的角色来重定向到不同的页面。
<jsp:plugin>
导致下载指定的applet和JavaBeans组件,并同步执行业务。
.<jsp:plugin>语法如下:
<jsp:plugin type="pluginType"
code="classFile"
codebase="relativeURLpath">
<jsp:params>
</jsp:params>
</jsp:plugin>
表2.11说明了
<jsp:plugin>的属性:
属性
|
说明
|
type
|
说明plug-in包含的类型(比如applet)
|
code
|
被plug-in执行的类名称
|
Codebase
|
寻找代码的绝对或相对路径
|
小结:
在这一章我们讲述了Struts技术的两个基础:servlet和JSP。我们试验了它们的结构和组件。了解了JSP和servlet 技术是如何在WEB应用中被装配使用的。下一章,我们将真正开始讲述Strutst技术。
第三章:开始学习Struts
在这一章,我们将开始学习Struts。在开始之前,我们必须先安装和配置Struts应用。我们将创建一个简单的应用来显示Struts是如何工作的。
这一章我们将提供一个Struts应用来让你快速入门。
获取和安装
Jakarta Struts项目
在开始你的Struts开发前,我们需要获取最新版本的Struts包。目前struts包为1.1
.地址如下:http://cvs.apache.org/builds/jakarta-struts/nightly/jakarta-struts-20031010.zip
一旦你获取了版本后,你在部署Struts应用前需要完成下面的预备工作。
1. 创建一个应用目录<CATALINA_HOME
>/webapps/wileystruts
2. 复制struts的JAR文件到<CATALINA_HOME
>/webapps/wileystruts/WEB-INF/lib目录下,jar文件列表如下:
struts.jar ¨
commons-beanutils.jar ¨
commons-collections.jar ¨
commons-dbcp.jar ¨
commons-digester.jar ¨
commons-logging.jar ¨
commons-pool.jar ¨
commons-services.jar ¨
commons-validator.jar ¨
3.在<CATALINA_HOME
>/webapps/wileystruts/WEB-INF/下创建web.xml,在文件中添加如下代码:
<?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/j2ee/dtds/web-app_2_3.dtd">
<web-app>
</web-app>
4.创建一个strut-config.xml文件,复制到
<CATALINA_HOME
>/webapps/wileystruts/WEB-INF/ 目录下。
struts-config.xml是Struts应用的部署描述文件。它用来把MVC组件组合在一起。
它通常被放置在
<CATALINA_HOME
>/webapps/ webappname
/WEB-INF/目录下,我们将会频繁的使用到它。空的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">
<struts-
分享到:
相关推荐
孙卫琴老师的“精通Struts”教程深入浅出地讲解了如何使用Struts来构建高效、可维护的Web应用。在这个教程的前四章中,我们将重点探讨以下几个核心知识点: 1. **Struts框架基础**: Struts框架是基于Servlet和JSP...
1. **lib**:这个目录包含所有Struts2运行所需的JAR文件,例如核心库、插件、依赖的第三方库等。这些JAR文件是实现Struts2功能的基础,例如`struts2-core.jar`是框架的核心,`xwork-core.jar`处理Action和结果映射,...
### 精通Struts2:关键技术点解析 #### Struts2概述与MVC架构 - **背景**:随着计算机技术的进步,特别是互联网技术的飞速发展,软件系统的复杂度日益增加,传统的软件开发方式已经难以满足现代软件工程的需求。在...
【精通Java EE项目案例-基于Eclipse Spring Struts Hibernate光盘源码(第二版)】这一资源涵盖了Java企业级开发中的关键技术和实践,是学习和深入理解Java EE应用开发的宝贵资料。本资源以Eclipse作为集成开发环境,...
精通Struts(sun)孙卫琴电子书,经典JAVA WEB 开发入门教材。第1部分 说明:文件比较大,共三部分,全部下载完后解压才可正常使用。谢谢大家的支持。详情: http://jje2008.5d6d.com/viewthread.php?tid=62
总的来说,这三章的源码学习是每个想要精通Struts2的开发者不容错过的。它们涵盖了从基础到进阶的关键知识,能够帮助你从理论到实践全面掌握Struts2框架。在阅读源码的过程中,结合手册内容,不断实践和调试,你将能...
读者将学习如何设置Struts环境,创建第一个Struts应用。 2. **MVC模式**:Struts基于Model-View-Controller设计模式,书中会深入讲解MVC模式在Struts中的实现方式,以及如何通过模型、视图和控制器分离业务逻辑和...
孙卫琴_精通Struts:基于MVC的Java Web设计与开发(第一部分)共分三部分 part01.rar----part07.rar 本人所发布的所有资源,请访问以下地址 ... 如有问题可随时联系我! 博客...
本书第1章到第3章为入门篇,通过两个Struts应用实例,引导读者把握设计、开发和部署Struts应用的整体流程,充分体会Struts框架在开放大型、可扩展的Web应用方面发挥的优势。第4章到第7章深入探讨了Struts框架的核心...
《精通Struts:基于MVC的Java Web设计与开发》是孙卫琴撰写的一本经典教程,这本书深入浅出地讲解了如何使用Struts框架进行Web应用开发。在这个"addressbook"源码示例中,我们可以看到作者通过三个不同的版本展示了...
本书第1章到第3章为入门篇,通过两个Struts应用实例,引导读者把握设计、开发和部署Struts应用的整体流程,充分体会Struts框架在开放大型、可扩展的Web应用方面发挥的优势。第4章到第7章深入探讨了Struts框架的核心...
Struts2是一个强大的Java web应用框架,用于构建和...对于希望深入理解和精通Struts2框架的开发者来说,这是一个宝贵的资源。通过研究这些源码,不仅可以提升理论知识,还能增强实战技能,更好地应对实际项目的需求。
精通J2EE——Eclipse+Struts+Hibernate+Spring整合应用案例 pdf电子书, 包含所有18个章节的完整版, 美中不足的是扫描质量不是很高,且是第一版的,不是目前最新的第二版! 请看清楚了再下,免得后悔! 共有两个部分-这...
#### 第1章 Struts概述 - **1.1 JSP Framework - Struts介绍** - **Struts**是Apache组织开发的一个开源MVC(Model-View-Controller)架构框架,主要用于简化Java Web应用的开发。它通过将业务逻辑、展示逻辑和...
<精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例>源码和数据库。这是第1卷,请下载完7卷后解压。
本章将带你逐步深入理解并实践如何创建第一个Struts2应用。 在Struts2中,模型(Model)负责业务逻辑的处理,视图(View)负责数据的展示,控制器(Controller)则作为两者之间的桥梁,接收用户请求,处理业务逻辑...
【标题】"精通Java EE项目案例--基于Eclipse Spring Struts Hibernate (源程序3)" 提供了一个深入理解Java企业级应用开发的实例。这个案例基于经典的"SSH"框架,即Eclipse作为集成开发环境,Spring作为核心框架,...