30 第三十章 struts入门.docx
- 文档编号:30285818
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:11
- 大小:63.97KB
30 第三十章 struts入门.docx
《30 第三十章 struts入门.docx》由会员分享,可在线阅读,更多相关《30 第三十章 struts入门.docx(11页珍藏版)》请在冰豆网上搜索。
30第三十章struts入门
第三十章:
struts入门
学习目标
⏹应用框架介绍
⏹理解HTTP,CGI,servlet,和JSP
⏹使用Model2架构
⏹构建简单的应用
Struts简介
Struts是Apache软件基金下Jakarta项目的一部分,Struts框架的主要架构设计和开发者是CraigR.McClanahan。
Craig也是Tomcat的主要架构师,以及JavaWebServicesDeveloperPack的主要架构师和实现者。
他现在是Sun的JavaServerFaces(JSR-127)以及J2EE平台的Web层架构的规范领导。
Struts在Apache软件许可[ASF,License]下对公众是免费的。
使用此软件没有任何获得和再现成本。
不象其他一些开源许可,Apache软件许可对商业用途是友好的。
你可以在你的商业项目中使用Struts,并自由分发Struts库。
你也可以将Struts组件集成到你的框架中,就像他们是你自己编写的一样。
框架之所以叫“Struts”,是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。
这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。
当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。
同样,软件工程师使用Struts为业务应用的每一层提供支持。
什么是应用框架
框架(framework)是可重用的,半完成的应用程序,可以用来产生专门的定制程序[Johnson]。
Framework概念并不是很新了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。
这意味着人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。
于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。
这也就是我们所说的Framework。
Framework的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个Framework开发上的结构。
通常,Framework的结构中都有一个“命令和控制”组件("commandandcontrol"component)——FrameworkFactoryandManager。
图1Framework体系
通过基于请求响应(Request-Response)模式的应用Framework,基本上有如下几个表现逻辑结构组成。
⏹控制器(Controller)——控制整个Framework中各个组件的协调工作。
⏹业务逻辑层(BusinessLogic)——对Framwork本身来说,这里仅仅只是概念和几个提够服务的基础组件,真正的实现与客户的业务逻辑接轨,还需要开发人员在Framework上再次扩展。
⏹数据逻辑层(DataLogic)——绝大应用系统都需要涉及到数据交互,这一层次主要包括了数据逻辑和数据访问接口。
对于数据逻辑来说,如果你了解数据建模(DataModeling)可能就很容易理解。
框架向开发人员提供一系列具有以下特征的骨架组件:
⏹已经知道他们在其他程序上工作的很好;
⏹它们随时可以在下一个项目中使用;
⏹他们可以被组织的其他团队使用;
WEB框架所要解决的问题
涉及的概念和技术
超文本传输协议(HTTP):
很多服务器应用程序使用HTTP之外的其他协议。
他们在计算机之间维护一个持久性的的连接。
应用服务器可以清楚的知道是谁连接上来,而且何时中断连接。
因为他们知道每一个连接的状态,以及每一个使用它的人。
这称之为状态协议。
相反,HTTP是一个无状态协议。
HTTPserver可以接受来自于各种客户的各种请求,并提供各种响应,即使是这个响应仅仅是说No。
没有大量的协商和连接持久性,无状态协议可以处理大量的请求。
HTTP请求的第一行包含方法,其后是请求的来源地址和HTTP版本。
HTTP请求头跟在首行后面,可以没有也可以有多个。
HTTP头向服务器提供额外的信息。
可以包括浏览器的种类和版本,可接受的文档类型,浏览器的cookies等等。
7种请求方法中,GET和POST是用得最多的。
一旦服务器接收到请求,他就要产生一个HTTP响应。
响应的第一行称为状态行,包含了HTTP协议的版本,数字型状态,以及状态的简短描述。
状态行后,服务器将返回一个HTTP响应头,类似于HTTP请求头。
Cookies和URL重写是两个在请求间跟踪用户状态的方式。
cookie是一种特殊的信息包,存储于用户的计算机中。
URL重写是在页面地址中存储一个特殊的标记,Java服务器可以用它来跟踪用户。
标准的HTTPweb服务器并不传输动态内容。
它主要是使用请求来定位文件资源,并在响应中返回此资源。
通常这里的文件使用HypertextMarkupLanguage(HTML)[W3C,HTML]格式化,以使浏览器可以显示它们。
静态内容直接来自于文本或数据文件,比如HTML或者JPEG文件。
这些文件可以随时改变,但通过浏览器请求时,却不能自动改变。
动态内容是临时产生的,典型地,它是针对浏览器的个别请求的响应。
建立简单的Struts应用
首先你该做的
下载并安装JDK下载并安装Tomcat校验Tomcat是否工作正常。
用户注册程序
需求描述:
用户将看到一个注册屏幕,包含3个字段:
用户名,密码和密码确认。
成功的注册要求两次密码相符。
如果注册成功,控制将转向一个页面,显示注册成功successful!
.。
如果两次输入密码不同,控制流将转向一个显示失败的页面。
问题:
如何创建HTML表单;从HTML表单获取输入;处理输入(业务逻辑);根据动态输入改变控制流;
解决:
为完成这个程序,你需要建立一个ActionForm一个Actionstruts-config.xml文件和三个页面
步骤1创建ActionForm
ActionForm是个JavaBean,扩展org.apache.struts.ActionForm类。
这个对象捕获通过请求传送的输入。
当浏览器提交一个表单,它在请求中为每个表单中的字段创建一个参数。
ActionForm针对每个HTML表单中的字段具有一个对应的属性。
ActionServlet匹配请求中的参数和ActionForm中的属性。
当匹配好后,ActionServlet为属性调用setter方法,并将请求中的值传入。
在我们的练习中,表单中的username字段需要一个setUsername(String)方法。
Password1字段需要setPassword1(String)和setPassword2(String)方法。
RegisterForm的源代码显示在清单1中。
packageapp;
importorg.apache.struts.action.*;
publicclassRegisterformextendsActionForm{
protectedStringuserName;
protectedStringpassword1;
protectedStringpassword2;
publicStringgetPassword1(){
returnpassword1;
}
publicvoidsetPassword1(Stringpassword1){
this.password1=password1;
}
publicStringgetPassword2(){
returnpassword2;
}
publicvoidsetPassword2(Stringpassword2){
this.password2=password2;
}
publicStringgetUserName(){
returnuserName;
}
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
}
存储在
步骤2创建RegisterAction
Action一个Java类,扩展了org.apache.struts.Action。
ActionServlet组装ActionForm,然后将其传递给Action。
Action通常负责输入校验,存取业务信息,以及决定向Servlet返回哪个ActionForward。
packageapp;
importorg.apache.struts.action.*;
importjavax.servlet.http.*;
importjava.io.*;
publicclassRegisterActionextendsAction{
publicActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestreq,HttpServletResponseres){
//转换form到RegisterForm
RegisterFormrf=(RegisterForm)form;
Stringusername=rf.getUsername();
Stringpassword1=rf.getPassword1();
Stringpassword2=rf.getPassword2();
//业务逻辑
if(password1.equals(password2)){
try{
//调用服务把用户加到数据库中去
//UserService.getInstance().AddUser(username,password1);
returnmapping.findForward("success");
}catch(Exceptione){
returnmapping.findForward("failure");
}
}
//ReturnActionForwardforfailure
returnmapping.findForward("failure");
}
}
步骤3创建Struts配置文件(struts-config.xml)
struts-config.xml文件包含了ActionServlet需要用来处理对应用请求的详细信息。
为了练习,我们创建一个空壳的struts-config.xml文件。
文件存储在
首先,添加/register到
ActionServlet使用Web容器转发给它的URI来选择正确的Action类。
URI和ActionMapping的path属性匹配。
这里,请求给出的路径必须在去除前缀和后缀后和/register匹配。
前缀或后缀通常是/do/或者.do。
我们的练习中,将后缀设置为.do。
当URI具有一个.do扩展名,容器就知道将请求转发给ActionServlet。
Struts会自动去除扩展名,所以我们在配置时不必加上它们。
下一步添加:
registerForm到
然后,添加app.RegisterAction到
ActionServlet使用这个属性来识别将用来处理请求的Action类。
接下来,在
最后,再在另一个
这些元素将创建ActionForward对象,我们将用它来选择程序的控制流。
Struts-config.xml源代码:
xmlversion="1.0"encoding="ISO-8859-1"?
>
DOCTYPEstruts-configPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.0//EN"
"http:
//jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
name="registerForm"> Struts框架将struts-config.xml文件视为部署描述符使用。 它使我们可以创建和改变ActionMapping和路径的关联而不用重新编译java类。 我们也可以改变页面之间的连接,而不改变JSP模板。 步骤4创建success.html,failure.html,以及register.jsp页面存放在 success.html
恭喜你,注册成功了
failure.html
注册失败!
Register.jsp
<%@tagliburi="/WEB-INF/struts-form.tld"prefix="form"%>
formaction="register.do"> 用户名: textproperty="username"/> 输入密码: passwordproperty="password1"/> 再输一次: passwordproperty="password2"/> submitvalue="Register"/> form> 整个程序的流程图如下 现在,试一下运行如何。 如果Tomcat没有运行,启动它。 在浏览器中输入以下地址: http: //localhost: 8080/register/register.jsp 回顾一下,我们做了什么 建立Register应用我们实际上完成了以下内容: ⏹RegisterFormActionForm ⏹RegisterActionAction ⏹3个页面 它是如何工作的 当你浏览器地址http: //localhost: 8080/register/register.jsp,Tomcat按通常情况加工这个页面。 输入username和password,点击Register提交页面。 浏览器在请求中post表单的内容。 容器检查请求将送到哪一个注册的路径去。 然后请求被转发到ActionServlet,并由RegisterAction来处理。 在返回成功或失败之前,RegisterAction校验输入的有效性。 最后servlet将控制根据返回的ActionForward转发到响应页面。 如图2 图2 内容总结 ⏹掌握Struts的基本流程 ⏹理解框架的概念 ⏹能够创建简单的Struts应用 独立实践 ⏹用Struts框架写一个用户注册 ⏹用Struts框架写一个用户登陆,如果登陆失败,在客户端显示详细的错误信息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 30 第三十章 struts入门 第三十 struts 入门