发布时间:2006.03.15 19:49 来源:Matrix 作者:blue_sunn
本文主要是介绍Struts 1.1 框架基本原理,以及介绍Struts 1.1 安装和一个简单的例子。
1. Struts的起源 Struts是作为Apache Jakarta项目的组成部分。该项目的目标是为建立Java web 应用程序而提供的一个开源框架,目前大家一般使用的版本为1.1,但也出现了1.2。通过使用struts 框架可以改进和提高Java Server Pages (JSPs)、Servlet、标签库以及面向对象的技术在web应用程序中的应用。应用Struts框架可以减少你应用MVC(Model- View -Controller)设计模式的开发时间,从而提高开发效率。把Struts应用于J2ee客户端,应该是一个不错的选择。
2. Struts的工作原理 谈到Struts,我们就不得不提到MVC设计模式。MVC即Model-View-Controller的缩写,它是web应用当中的常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。 Struts是MVC的一种实现,它很好的结合了Jsp,Java Servlet,Java Bean ,Taglib等技术。那么我们来看看Struts框架的工作原理: 控制:在Struts中,ActionServlet起着一个控制器(Controller)的作用。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充 Action Form(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。所有这些控制逻辑利用Struts-config.xml文件来配置。 视图:主要是由Jsp来控制页面输出的。它接收到Action Form中的数据,利用html,taglib,bean,logic等显示数据。 模型:在Struts中,主要存在三种bean,分别是:Action,ActionForm,EJB或者Java Bean。ActionForm用来封装客户请求信息,Action取得ActionForm中的数据,再由EJB或者Java Bean进行处理。
3 Struts 优点与缺点 优点:1.利用Struts提供的taglib可以大大节约开发时间。2. 表现与逻辑分离。 3.维护扩展比较方便。 4 便于团队开发 缺点:大量的使用标签,对于初学者难度较大。
4. Struts 1.1 安装 安装Struts 1.1 比较简单。假设我们使用的是Tomcat 5.0,并且安装在D:\tomcat下。首先,请到http://jakarta.apache.org/struts/ 下载Struts 1.1,解压缩后,可以看到jakarta-struts-1.1目录,在这个目录下面,你可以看到这样一个目录:webapps.该目录下面有多个*.war,我们copy struts-blank.war 文件到D:\tomcat\webapps下,restart Tomcat,在Tomcat 的webapps下就会生成一个struts-blank空白Struts开发环境。另外,在你解压缩的目录下的webapps中 struts-example.war 是一个很好的struts学习教程,如果你想深入学习请访问http://jakarta.apache.org/struts 或者 下载 《Struts in Action》 E 文版。
5.
一个简单的例子 5.1 Logon.jsp <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ page contentType="text/html; charset=gb2312" %> <% /** * This page shows Logon interface. * Title: LOGON SYSTEM * Description: Logon Page * Copyright: Copyright (c) 2004 * Company: www.ewe.com.cn * @author bluesunny <hyjun2001@163.com> * @version 1.0 */ response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); %> <html> <head> <title>Logon</title> </head> <body> <html:errors/> <html:form action="/Logon" focus="username"> username:<html:text property="username" size="25"/> password:<html:password property="password" size="25"/> <html:submit property=”submit”/> </html:form> </body> </html> 页面为用户登陆页面,应用到Struts的html标签。 5.2 LogonForm.java package com.logon.app; import javax.servlet.http.*; import org.apache.struts.action.*; /** * This page shows LogonForm.java * Title: LOGON SYSTEM * Description: LogonForm Page * Copyright: Copyright (c) 2004 * Company: www.ewe.com.cn * @author bluesunny * @version 1.0 */ public class LogonForm extends ActionForm{ private String username; private String password; public LoginForm() { username = null; password = null; } public void setUsername(String username){ this.username = username; } public String getUsername() { return this.username; } public void setPassword(String password){ this.password = password; } public String getPassword(){ return this.password; } public void reset(ActionMapping mapping, HttpServletRequest request) { username = null; password = null; } } 这个页面为ActionForm bean ,主要是用来封装客户端的用户名与密码。 5.3 LogonAction.java package com.logon.app; import java.io.*; import java.sql.*; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForm; import javax.servlet.*; import javax.servlet.http.*; import org.apache.struts.action.*; /** * This page shows LogonAction.java * Title: LOGON SYSTEM * Description: LogonAction Page * Copyright: Copyright (c) 2004 * Company: www.ewe.com.cn * @author bluesunny * @version 1.0 */ public class LogonAction extends Action{ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response)throws Exception{ LogonForm form = (LogonForm)actionForm; ActionErrors errors = new ActionErrors(); String username = form.getUsername(); String password = form.getPassword(); If(username.equals(“bluesunny”) && password.equals(“bluesunny”)){ return actionMapping.findForward("success"); }else{ errors.add("login",new ActionError("Logon.failed")); saveErrors(request,errors); return actionMapping.findForward("failed"); } } } 取得ActionForm中的数据,进行处理,处理结果返回到Jsp页面。 5.4 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> <display-name>Struts Logon Application</display-name> <!-- Standard Action Servlet Configuration (with debugging) --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <!-- Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- The Welcome File List --> <welcome-file-list> <welcome-file>logon.jsp</welcome-file> </welcome-file-list> <!-- Struts Tag Library Descriptors --> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location>/WEB-INF/struts-nested.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-tiles</taglib-uri> <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location> </taglib> </web-app> 5.5 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-config> <form-beans> <form-bean name="logonForm" type=" com.logon.app.LoginForm"/> </form-beans> <action-mappings> <action path="/Logon" type="com.logon.app.LogonAction" name="logonForm" scope="request" input="Logon.jsp"> <forward name="success" path="/success.jsp"/> <forward name="failure" path="/Logon.jsp"/> </action> <message-resources parameter="resources.application"/> </struts-config> 5.6 application.properties Logon.failed = Logon failed!Please Logon in again! 5.7 deploy Logon Application 创建一个success.jsp,输入:"successflly!". 编译源文件,并且把该应用程序部署在TOMCAT里,假设部署在app目录下面。我们可以启动浏览器访问:http://localhost:8080/app/. 5.8 目录结构 /WEB-INF : / WEB-INF/lib : Struts.jar / WEB-INF/classes : / WEB-INF/classes/com/logon/app : *.class / WEB-INF/classes/resources : *.properties
6. 总结 本文详细讲解了Struts的工作原理以及安装方法,并且举了一个登陆例子作为Struts框架应用。另外,本文对Struts的目录结构也有说明,这大大减轻了初学者学习负担,可以作为Struts入门之用。
|
相关推荐
“退一进三”形象地表达了引入Struts后带来的改变:虽然增加了框架的学习成本,但大大提高了开发效率和应用程序的可维护性。 **2.2.2 进入Struts** 这一节介绍了Struts的核心理念和主要特点,如MVC设计模式的应用...
接下来,我们谈谈OGNL(Object-Graph Navigation Language),它是Struts2中用于数据绑定和表达式的强大语言。开发者可以使用OGNL在Action和JSP之间传递数据,或者在Action中进行复杂的逻辑判断。 Struts2还提供了...
通过这个小项目,你可以学习到如何在实际开发中整合Struts2和Hibernate,提升Web应用程序的开发效率。同时,这也是一个很好的实践机会,加深对MVC模式和ORM思想的理解。在学习过程中,你可能会遇到各种问题,如数据...
Struts2是一个强大的Java web开发框架,用于构建和维护可扩展、具有良好结构的MVC(Model-View-Controller)应用程序。...同时,这也为学习其他MVC框架,如Spring MVC或Play Framework,打下坚实基础。
在实际开发中,还需要不断地学习和掌握更多的Struts2特性,如拦截器的自定义、结果类型的扩展、插件的使用等,以便更好地利用Struts2框架提升开发效率和代码质量。同时,关注框架的更新和最佳实践,以保持应用的先进...
接下来,我们谈谈Struts2的国际化全局资源配置。Struts2支持多种方式实现国际化,包括使用`struts.properties`配置文件、`struts.xml`中的`<constant>`标签以及Action类中的资源文件。资源文件通常以`.properties`...
Struts和数据结构是两个非常...总的来说,"Struts+数据结构"的学习涵盖了Web开发的后端逻辑和前端表现,以及它们之间如何通过合适的数据结构进行高效通信。理解并掌握这些知识,对于成为一名全面的Web开发者至关重要。
通过学习这个示例,你可以了解到如何配置Struts的ActionMapping,如何创建和使用ActionForm,以及如何在JSP中使用Struts标签库。同时,Ant的使用也会让你明白如何通过XML配置文件来自动化构建过程。 总的来说,...
尽管Struts框架具有很多优点,但也存在一些缺点,比如配置文件复杂、学习曲线较陡等。 ##### 2.6.2 Struts的强项 Struts框架的优点包括易于集成、良好的文档支持、丰富的社区资源等。 --- #### 3. 构建一个简单...
然后,我们来谈谈Hibernate的事务处理。虽然Hibernate本身也支持事务管理,但在实际开发中,通常结合Spring一起使用,利用Spring的事务管理能力。Hibernate Session与数据库的交互是在事务内部进行的,因此,我们...
总的来说,通过这个简单的Struts登录示例,初学者可以学习到MVC架构、Struts Action的使用、表单提交、请求处理以及基础的用户认证逻辑。然而,实际开发中还需要考虑更多复杂性和安全性问题。希望这个介绍能为你提供...
- **随便谈谈**:引出了Struts框架的基本概念。 - **为什么我们需要Struts**:阐述了使用Struts框架进行Web应用开发的原因。 - **Struts控制器组件**:详细介绍了Struts框架的核心组件——控制器。 - **用Struts...
总的来说,这套J2EE_spring_struts课件为初学者提供了一个全面的学习路径,涵盖了从基础的J2EE概念到高级的Spring和Struts框架的实践应用。通过深入学习和实践,你将能够掌握构建高效、可扩展的企业级Web应用所需的...
本书《Struts in Action 中文修正版》由 Ted Husted 编写,Eric Liu(铁手)翻译,是学习 Struts 的优秀资源之一。 **1.1 关于本书** - **谁创建了Struts?** - Struts 最初是由 Craig R. McClanahan 创建的。 - *...