谈谈Struts学习

博客围绕Struts框架展开,涉及MVC设计模式。Struts是重要的后端框架,MVC作为经典设计模式,二者结合在开发中应用广泛。还提及了action等相关概念,对理解Web开发有重要意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

谈谈Struts学习
2004年6月21日  作者:blue_sunny
      本文主要是介绍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" 
"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值