`
snowyvalley
  • 浏览: 147550 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts入门

    博客分类:
  • Java
阅读更多
一 什么是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框架的工作原理要理解下面这幅重要的图片.
发件人 tech

Struts的ActionServlet是一个控制器,起着流程导航的作用,Struts 的Action类用来访问相关的业务类.
当ActionServlet从容器中接收到一个请求时,他会根据URI决定哪一个Action 来处理这个请求,Action进行输入的验证,访问业务层,从数据库或其他的数据服务器中获得必要的信息.
验证输入或者根据输入的数据更新数据库,Action需要知道哪些数据被提交了,ActionServlet把这些输入绑定到JavaBean中,这个JavaBean是Struts的ActionForm的子类,ActionServlet根据请求路径决定使用哪个ActionForm和Action.
每一个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 录入注册信息
发件人 tech

B 显示注册成功
发件人 tech

C 显示注册失败
发件人 tech

4 要完成这个程序我们只需要建立
一个ActionForm 绑定用户的输入信息
一个Action 进行业务处理
一个配置文件Struts-config.xml
三个表示层页面 注册信息录入页面,注册信息成功,注册失败显示页面

1)首先建立三个显示页面
Register.jsp success.html failure.html
相关代码如下:
Register.jsp:
html代码
 
  1. <%@ taglib uri="/WEB-INF/struts-form.tld" prefix="form" %>  
  2. <form:form action="register.do">  
  3. UserName:<form:text property="username"/><br>  
  4. enter password:<form:password property="password1"/><br>  
  5. re-enter password:<form:password property="password2"/><br>  
  6. <form:submit value="Register"/>  
  7. </form:form>  
<form:form action="register.do"> <form:text property="username"> <form:password property="password1"> <form:password property="password2">

<form:submit value="Register"> </form:submit>
Success.html:


html代码
 
  1. <HTML>  
  2. <HEAD>  
  3. <TITLE>SUCCESS</TITLE>  
  4. </HEAD>  
  5. <BODY>  
  6. Registration succeeded!  
  7. <P><A href="register.jsp">try another?</A></P>  
  8. </BODY>  
  9. </HTML>  
</form:password> </form:password> </form:text> </form:form>

Failure.html:

html代码
 
  1. <HTML>  
  2. <HEAD>  
  3. <TITLE>FAILURE</TITLE>  
  4. </HEAD>  
  5. <BODY>  
  6. Registration failed!  
  7. <P><A href="register.jsp">try again?</A></P>  
  8. </BODY>  
  9. </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()方法(perform是struts1.0)中的方法,execute()方法应用了更好的异常处理机制.

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

4)建立Struts的配置文件Struts-config.xml
Struts-config.xml是Struts框架中最重要的配置文件,所有的细节像Acgtions,ActionForms,ActionForwards,ActionMappings等都是在这里进行配置.ActionServlet将根据这个文件来实现流程的控制.
Struts-config.xml的内容如下:
Struts-config.xml:
<struts-config> <form-beans> <form-bean type="app.RegisterForm" name="registerForm"> </form-bean> <action-mappings>

七 知识回顾:
1)我们做了什么
为了完成这个注册程序我们建立了
A RegisterForm
B RegisterAction
C 三个页面 注册页面,成功失败显示页面
D struts-config.xml文件
2)他们是如何有机的结合起来的
我们再来改造一下前面那幅图:
</action-mappings> </form-beans> </struts-config>
发件人 tech

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

Struts-config.xml:


<struts-config> <form-beans> <action-mappings><action path="/register"><forward path="/success.html" name="success"></forward></action>
xml 代码
 
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>  
  2. <!DOCTYPE struts-config PUBLIC  
  3. "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"  
  4. "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">  
  5. <struts-config>  
  6. <form-beans>  
  7. <form-bean name="registerForm" type="app.RegisterForm"/>  
  8. </form-beans>  
  9. <action-mappings>  
  10. <action path="/register"  
  11. type="app.RegisterAction"  
  12. name="registerForm">  
  13. <forward name="success" path="/success.html"/>  
  14. <forward name="failure" path="/failure.html"/>  
  15. </action>  
  16. </action-mappings>  
  17. </struts-config>  


八 思考题:
我们建立一个简单的Web程序
需求描述: 用户注册的程序我们已经完成了,假定用户需要登陆系统,登陆时需要输入用户名,密码,当用户名和密码正确时显示欢迎页面,否则显示密码或用户名错误的页面.在这里为了使程序简单我们假设输入的密码为password就通过登陆验证。</action-mappings> </form-beans> </struts-config>
分享到:
评论

相关推荐

    struts入门与实践.zip

    本资料"struts入门与实践.zip"是一个压缩包,包含了关于Struts框架的基础知识和实战教程。 Struts的核心概念包括: 1. **Action类**:在Struts中,Action类是业务逻辑的主要载体。它负责接收来自客户端的请求,...

    struts入门最简单例子

    这个"struts入门最简单例子"旨在帮助初学者快速理解并掌握Struts2的基本用法。Struts2框架提供了丰富的功能,如动作映射、结果类型、拦截器、动态方法调用等,使得开发者能够构建结构清晰、可维护性强的Web应用程序...

    struts 入门与实践

    struts 入门与实践

    struts入门源代码

    本资源“struts入门源代码”旨在为初学者提供一个基础的入门教程,帮助理解Struts框架的工作原理和实际应用。 在Struts框架中,Controller部分通常由Action类实现,它负责接收用户请求,调用相应的业务逻辑(Model...

    struts入门(中文版).pdf

    本资源"struts入门(中文版).pdf"为初学者提供了一个全面的 Struts 学习指南,涵盖了从基础配置到高级特性的多个方面。 1. **环境配置**:在开始使用 Struts 之前,你需要先搭建开发环境。这通常包括安装 Java ...

    struts入门[文字版][中文].

    Struts入门 作者:余立非 本书为入门者准备的,其中讲述了Struts的一些基础东西。请读者首先能建立一个Struts的开发环境,其次了解Struts基础的东西,由MVC的概念进入Struts。 目录 前言 简介 第一章 配置环境 第二...

    struts入门简单例子

    这个“struts入门简单例子”旨在为初学者提供一个基础的 Struts 应用示例,帮助理解 Struts 的核心概念和工作流程。 1. **MVC设计模式**:Struts 是基于 Model-View-Controller (MVC) 设计模式的,它将应用的业务...

    Struts入门.rar

    Struts入门 作者:余立非 本书为入门者准备的,其中讲述了Struts的一些基础东西。请读者首先能建立一个Struts的开发环境,其次了解Struts基础的东西,由MVC的概念进入Struts。 本书的目的是使你快速入门。本书的...

    struts入门(中文版)

    在Struts入门的过程中,首先需要了解的是Struts的基本架构。Struts的核心是ActionServlet,它是控制器,负责处理所有的HTTP请求,并根据配置文件决定调用哪个Action来处理请求。Action类是业务逻辑的载体,它会与...

    Struts入门实例:通讯录

    在这个"Struts入门实例:通讯录"中,我们将探讨如何使用Struts框架来创建一个简单的通讯录应用。 首先,了解通讯录应用的基本需求。该应用应具备添加、查看、编辑和删除联系人的功能。在Struts框架下,这些功能通常...

    struts入门(中文版)pdf

    本篇将深入探讨Struts入门的相关知识点,包括其核心概念、工作原理以及实际应用。 一、Struts的基本概念 1. MVC模式:MVC模式是软件工程中一种用于分离业务逻辑、用户界面和数据存储的设计模式。在Struts中,模型...

    struts入门与实践

    struts入门与实践 struts入门的好助手,深入浅出,精辟易懂

    struts入门小程序

    这个“Struts入门小程序”旨在帮助初学者理解并掌握Struts框架的基本用法和核心概念。通过提供的多个模块,我们可以深入学习到Struts在实际应用中的常见场景。 首先,我们来看登陆模块。在Web应用程序中,用户登录...

    Struts 入门好文章

    ### Struts 入门知识点详解 #### 一、概述 本文档通过介绍一个简单的Struts应用实例——`helloapp`,帮助读者快速掌握Struts框架的基础知识与开发流程。`helloapp`应用的核心功能是接收用户的姓名输入,并返回个性...

    Java Struts入门学习指南.rar

    在Java Struts入门学习中,首先要理解的是MVC设计模式。Model代表应用程序的数据模型,View负责显示数据,Controller接收用户请求并调用相应的Model和View进行处理。Struts框架将这些元素整合在一起,为开发者提供了...

    经典struts入门(中文PDF版)

    这个"经典struts入门(中文PDF版)"资源对于初学者来说是一个很好的起点,它包含详细的讲解和项目制作截图,使得学习过程更加直观易懂。 Struts框架的核心组件包括: 1. **ActionServlet**:这是Struts框架的入口点...

    Struts入门(适合初学者)

    在Struts入门学习中,首先需要理解MVC设计模式。MVC模式是一种将业务逻辑、数据和用户界面分离的设计方式。Model代表应用的数据模型,负责处理业务逻辑;View是用户界面,用于展示数据;Controller是两者之间的桥梁...

    Struts 入门实践 随书光盘

    在《Struts 入门实践》这本书中,作者详细介绍了如何使用Struts进行实际的Web开发。 首先,Struts框架的核心概念包括Action、ActionForm、Dispatcher Servlet(也就是Struts Controller)和配置文件。Action是处理...

Global site tag (gtag.js) - Google Analytics