<%@ page contentType="text/html; charset=gb2312"%> Struts 使Web开发更简单
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
Struts 使Web开发更简单
     发布者: 发布时间:2007-01-12

什么是Struts

Struts是基于MVC设计模式的开发Web应用程序的开源框架,当前的版本是1.1

他的建立者是著名的开源组织Apache Software Foundation,提起Apache software Foundation(ASF) 大家一定不会陌生,好多口碑不错的开源产品像Tomcat,Ant,Velocity,JSF等都出自他们.

如果对他们感兴趣的话可以到他们的网站去看一看:http://Jakarta.apache.org

为什么叫Struts

Struts的英文意思是: (框架的)支柱,支撑物

就像我们盖楼一样,各楼层之间是用钢筋,混凝土构成的柱子去支撑的,在开发三层结构的Web应用程序时,Struts 的角色就是支撑这些应用程序的各个层次.

什么是框架

框架是可重用的应用程序的半成品,使用框架你可以构造出具体的个性化的应用程序.

框架是建立在应用程序的共性基础上的,给开发者提供了可重用的结构.Struts,Jsf,Spring都是比较成熟的框架.

利用struts框架开发Web应用程序你需要哪些知识

¨         Http协议是一种无状态的协议

¨         能够利用Jsp构建Web页面

¨         了解Servlet技术

¨         能够建立简单的JavaBean

¨         MVC思想有认识

好了,具备了这些知识你就可以利用Struts开发Web应用程序了

理解Struts是如何工作的

理解Struts框架的工作原理要理解下面这幅重要的图片.

 

StrutsActionServlet是一个控制器,起着流程导航的作用,Struts Action类用来访问相关的业务类.

ActionServlet从容器中接收到一个请求时,他会根据URI决定哪一个Action 来处理这个请求,Action进行输入的验证,访问业务层,从数据库或其他的数据服务器中获得必要的信息.

验证输入或者根据输入的数据更新数据库,Action需要知道哪些数据被提交了,ActionServlet把这些输入绑定到JavaBean,这个JavaBeanStrutsActionForm的子类,ActionServlet根据请求路径决定使用哪个ActionFormAction.

每一个Http请求要对应一个Http响应,通常情况下,StrutsAction自己并不生成响应,而是把请求传递给其他的资源,比如Jsp页面.

Struts中提供了一个ActionForward类使用逻辑名存储页面路径,Action 完成业务逻辑处理的时候,会向AcitonServlet返回一个ActionForward,ActionServlet会根据存储在ActionForward中的对象调用相关的页面完成响应.

Struts把这些细节绑定到ActionMapping对象中,每一个ActionMapping都是和路径相关的,当这个路径被请求时,Servlet会找到哪些Action,ActionForm,ActionForward可以使用.

所有的这些细节Action,ActionForm,ActionForward,ActionMapping都在Struts-config.xml中被声明.ActionServlet在启动时会读取这个文件并且建立一个配置对象的数据库,在运行时ActionServlet会参照这些对象而不是这个配置文件.

不管你信不信,知道了这些你就可以建立一些简单的Web应用程序了.

建立第一Struts应用程序

我们的第一个Struts应用程序是一个简单的用户注册应用程序

1 功能描述:

用户需要输入用户名,密码,重复输入密码,当两次输入的密码相匹配时就认为注册成功,否则认为注册失败.

2 MVC模式分析:

M (model):模型层(业务逻辑) 我们这里的业务逻辑很简单就是判断两次输入的密码是否一致.

V(view):视图层:

A 用户输入的用户名,两次输入的密码

B 显示注册成功信息

C 显示注册失败信息

 

C(contrl)控制层:Struts servlet来实现控制的导航.

3 界面原型:

A 录入注册信息

 

B 显示注册成功

 

C 显示注册失败

4 要完成这个程序我们只需要建立

¨         一个ActionForm 绑定用户的输入信息

¨         一个Action 进行业务处理

¨         一个配置文件Struts-config.xml

¨         三个表示层页面 注册信息录入页面,注册信息成功,注册失败显示页面

 

1)      首先建立三个显示页面

Register.jsp success.html failure.html

相关代码如下:

Register.jsp:

 

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

<form:form action="register.do">

UserName:<form:text property="username"/><br>

enter password:<form:password property="password1"/><br>

re-enter password:<form:password property="password2"/><br>

<form:submit value="Register"/>

</form:form>

Success.html:

<HTML>

<HEAD>

<TITLE>SUCCESS</TITLE>

</HEAD>

<BODY>

Registration succeeded!

<P><A href="register.jsp">try another?</A></P>

</BODY>

</HTML>

 

Failure.html:

<HTML>

<HEAD>

<TITLE>FAILURE</TITLE>

</HEAD>

<BODY>

Registration failed!

<P><A href="register.jsp">try again?</A></P>

</BODY>

</HTML>

 

2)      用户的输入是绑定到ActionForm中的,接下来我们建立一个ActionForm.

RegisterForm是一个JavaBean继承自Struts框架的org.apache.struts.ActionForm,这个对象能够捕获通过请求发送的输入域.当一个web浏览器提交一个表单的时候,web浏览器会为表单的每一个域在请求中建立一个参数.ActionForm 中对应于Html的表单的每一个域都有一个相应的属性.ActionServlet会把请求中的参数和ActionForm中的属性进行匹配,调用属性的Setter方法来绑定请求中的值.

我们这里用户需要输入的数据有userName,password1,password2,我们的ActionForm就要提供SetUserName(String),SetPassword1(String),SetPassword2(String)方法.

下面是我们的ActionForm 的代码:

RegisterForm.java:

 

package app;

import org.apache.struts.action.*;

public class RegisterForm extends ActionForm {

protected String username;

protected String password1;

protected String password2;

public String getUsername () {return this.username;};

public String getPassword1() {return this.password1;};

public String getPassword2() {return this.password2;};

public void setUsername (String username) {this.username = username;};

public void setPassword1(String password) {this.password1 = password;};

public void setPassword2(String password) {this.password2 = password;};

}

 

3)      我们来建立业务处理层的RegisterAction:

RegisterAction是继承自Struts框架的org.apache.struts.Action.ActionServlet把刚刚组装的ActionForm传递给Action,Action负责验证输入,访问业务信息,决定把哪个ActionForward返回给Servlet.

RegisterAction.java的代码如下:

RegisterAction.java:

 

package app;

import org.apache.struts.action.*;

import javax.servlet.http.*;

import java.io.*;

public class RegisterAction extends Action {

public ActionForward perform (ActionMapping mapping,

ActionForm form,

HttpServletRequest req,

HttpServletResponse res) {

// Cast the form to the RegisterForm

RegisterForm rf = (RegisterForm) form;

String username = rf.getUsername();

String password1 = rf.getPassword1();

String password2 = rf.getPassword2();

// Apply business logic

if (password1.equals(password2)) {

try {

//  Return ActionForward for success

UserDirectory.getInstance().setUser(username,password1);

return mapping.findForward("success");

} catch (UserDirectoryException e) {

return mapping.findForward("failure");

}

}

// Return ActionForward for failure

return mapping.findForward("failure");

}

}

 

 

注意:

struts1.1中使用的execute()方法来代替了perform()方法(performstruts1.0)中的方法,execute()方法应用了更好的异常处理机制.

 

通过以上步骤我们已经准备好了所有Web开发必备的材料,下面我们要做的就是把这些材料进行有机的组合,建立一个实实在在的Web应用.

 

4)      建立Struts的配置文件Struts-config.xml

Struts-config.xmlStruts框架中最重要的配置文件,所有的细节像Acgtions,ActionForms,ActionForwards,ActionMappings等都是在这里进行配置.ActionServlet将根据这个文件来实现流程的控制.

Struts-config.xml的内容如下:

Struts-config.xml:

 

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

<!DOCTYPE struts-config PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"

"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">

<struts-config>

<form-beans>

<form-bean name="registerForm" type="app.RegisterForm"/>

</form-beans>

<action-mappings>

<action path="/register"

type="app.RegisterAction"

name="registerForm">

<forward name="success" path="/success.html"/>

<forward name="failure" path="/failure.html"/>

</action>

</action-mappings>

</struts-config>

 

 

知识回顾:

1)      我们做了什么

为了完成这个注册程序我们建立了

A RegisterForm

B RegisterAction

C 三个页面 注册页面,成功失败显示页面

D struts-config.xml文件

2)      他们是如何有机的结合起来的

我们再来改造一下前面那幅图:

 

 

我们回顾一下Struts-config.xml这个比较重要的配置文件:

 

Struts-config.xml:

 

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

<!DOCTYPE struts-config PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"

"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">

<struts-config>

<form-beans>

<form-bean name="registerForm" type="app.RegisterForm"/>

</form-beans>

<action-mappings>

<action path="/register"

type="app.RegisterAction"

name="registerForm">

<forward name="success" path="/success.html"/>

<forward name="failure" path="/failure.html"/>

</action>

</action-mappings>

</struts-config>

 

 

思考题:

我们建立一个简单的Web程序

需求描述: 用户注册的程序我们已经完成了,假定用户需要登陆系统,登陆时需要输入用户名,密码,当用户名和密码正确时显示欢迎页面,否则显示密码或用户名错误的页面.在这里为了使程序简单我们假设输入的密码为password就通过登陆验证。

(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
提升JSP应用程序的七大绝招
请求重定向与请求转发的比较
在tomcat中实现https安全连接的方法
体验Java 1.5中面向(AOP)编程
教Eclipse说你的本土语言
Sun开放Java源代码 Apache计划紧跟作调整
 
最近评论:
        
你曾悄悄的来过!
wow gold,wow gold,wow gold,ffxi gil max(3017)
        
冰封的往事!
wow power leveling,wow gold,wow power leveling,wow gold max(2362)
        
冰封的往事!
wow power leveling,wow gold,WoW Gold,wow gold max(5751)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(3406)
        
回复:Struts 使Web开发更简单
怎么连接数据库?并对数据库进行操作???
        
回复:Struts 使Web开发更简单
ok
        
回复:Struts 使Web开发更简单
非常感谢,这一点我正是不太懂,我还是学生,这上面怎么不显示图片啊,
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号