`
shukuiyan
  • 浏览: 413555 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个struts工程的创建过程及运行原理

阅读更多

1 Myeclipse 中新建一个Web project,如图,点击Finish

2 右击项目名z-myfirstproject,选择Myeclipse---Add Struts Capabilities

3 在出现的如下界面中,将包名称改为自己的包名称:yan.struts,其他的默认即可,点击确定。

4 完成以上步骤后,会在项目目录中自动添加一些jar包和文件等,如图。

5 点击打开 strust-config.xml,如下,右击空白处,选择 New ---Form Action and JSP

6 在出现的Add Struts Capabilities界面中,输入user caselogin,因为要做一个登录的用例。同时可以在下面的optional Details中的form Properties中点击Add按钮添加属性。

7 这里添加两个Form表单属性,一个是username ,一个password,如下图。

 

8 如下图,选中Create JSP form选项,Superclass选择 ActionForm。点击Next

9 在出现的界面中的Optional Details中,选择Forwards,点击Add添加一个Forward

10 点击Add ,在出现的界面中填写Forward,点击Add按钮。然后在Add Struts Capabilities界面中点击finish 按钮。

11 以上操作完成后,会在项目中添加几个文件,如下图。

12 打开WebRoot目录下的form下的login.jsp页面,可以看到系统自动生成了登录页面,代码如下:

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<html>

    <head>

       <title><bean:message key="login.hello"/></title>

    </head>

    <body>

       

       <html:form action="/login.do">

           username : <html:text property="username"/><html:errors property="username"/><br/>

           password : <html:password property="password"/><html:errors property="password"/><br/>

           <html:submit/><html:cancel/>

       </html:form>

    </body>

</html>

13 src目录下的yan.struts.form目录下自动生成LoginForm.java,在该Java类中编写validate()函数,进行表单验证,它完成的功能是:如果表单中输入的username为空或者password为空,则生成表单验证错误。返回错误结果给login页面。代码如下:

public ActionErrors validate(ActionMapping mapping,

           HttpServletRequest request) {

       // TODO Auto-generated method stub

       ActionErrors errors=new ActionErrors();

       if(username==null||username.length()<1)

       {

           errors.add("username",new ActionMessage("login.error.username"));

//这里username对应的是login.jsp<html:errors property="username"/>      }

       if(password==null||password.length()<1)

       {

           errors.add("password",new ActionMessage("login.error.userpassword"));

//这里password对应的是login.jsp<html:errors property=" password "/>

       }

       return errors;

    }

当用户提交了HTML表单后,struts框架将自动把表单数据组装到ActionForm中,Actionform中的属性和HTML表单中的字段一一对应。ActionForm还提供数据验证方法,以及把属性重新设置为默认值的方法。Struts框架中定义的ActionForm类是抽象的,必须在应用中创建它的子类,来存放具体的HTML表单数据。

ActionForm实质是一种JavaBean,不过它除了具有javabean的常规方法,还有两种特殊方法:validate()用于表单验证;reset()把属性重新设置为默认值。

当用户提交了HTML表单后,struts框架会自动把表单数据组装到ActionForm中,如果在

Struts-config.xml配置文件中mapping配置中有 validate=true这一选项,则接下来struts框架会自动调用ActionFormvlidate()方法进行表单验证。如果Validate()方法返回的ActionErrors对象为null,或者不包含任何ActionMessage对象,就表示没有错误,数据验证通过。如果ActionErrors中包含ActionMessage对象,就表示发生了错误,Struts框架会把ActionErrors对象保存到request范围内,然后把请求转发到恰当的视图组件,视图组件通过

<html:errors>标签把request范围内的ActionErrors对象中包含的错误消息显示出来,提示用户修改错误。

 

14 上面的代码中用到了 new ActionMessage("login.error.username"),这里的

login.error.username 需要在ApplicaitonResources.properties中定义。

打开ApplicaitonResources.properties(它在src----yan.struts目录下)

右击 ApplicaitonResources.properties,选择Openwith ------Myeclipse Property Editor,打开编辑器,点击Add 按钮添加

 

15 打开LoginAction.java,在该类中有一个execute()方法,它完成对表单信息的业务逻辑验证以及对相关处理。编辑该方法如下:

public class LoginAction extends Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form,

           HttpServletRequest request, HttpServletResponse response) {

       LoginForm loginForm = (LoginForm) form;

       String username1=loginForm.getUsername();

       String username=null;

        try {

        username=new String(username1.getBytes("ISO-8859-1"),"UTF-8");

       } catch (UnsupportedEncodingException e) {

           e.printStackTrace();

       }

       //以上将form表单中获得用户名转换为UTF-8格式。

       String password=loginForm.getPassword();

       ActionMessages errors=new ActionMessages();

       String badusername="admin";

       String badpassword="123456";

       if(username.equals(badusername))

       {

           errors.add("username",new ActionMessage("login.error.badusername",badusername));

           //如果用户名验证失败,将ActionMessage对象保存到ActionMessages对象errors中。

           //login.error.badusername对应消息资源文件中的login.error.badusername的值。

           saveErrors(request,errors);

           //保存ActionMessages对象errorsrequest范围。

           return new ActionForward(mapping.getInput());

           //返回ActionForward对象,Struts框架会把请求转发到视图组件login.jsp中,通过来显示错误信息。

       }

       if(password.equals(badpassword))

       {

           errors.add("password",new ActionMessage("login.error.badpassword",badpassword));

           saveErrors(request,errors);

           return new ActionForward(mapping.getInput());

       }

       request.setAttribute("username",username);

       request.setAttribute("password",password);

       //usernamepassword的值存入request范围内,可以传递到下一页面。

       return mapping.findForward("login-success");//返回下一页面,login-success对应struts-config.xml<forward>属性

    }

}

所有的Action类都是org.apache.struts.action.Action的子类,Action子类应该覆盖父类的execute()方法,当ActionForm被创建,并且表单验证顺利通过后,struts框架就会调用Action类的execute()方法,该方法的包含如下参数:

ActionMapping:包含了这个Action的配置信息,和struts-config.xml文件中的<action>元素对应。

ActionForm:包含了用户的表单数据,当struts框架调用execute()方法时,ActionForm中的数据已经通过了表单验证。

HttpServletRequest:当前的HTTP请求对象。

HttpServletResponse:当前的Http相应对象。

16 WebRoot下新建success.jsp文件,代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

EN-

分享到:
评论

相关推荐

    struts2.0环境配置

    在项目中创建一个新的Web工程,然后在web.xml中配置Struts2的核心过滤器。这通常包括以下代码: ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter....

    struts2 HelloWorld 例子工程包

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。这个"HelloWorld"例子工程包是初学者入门Struts2的绝佳起点,旨在帮助开发者理解并熟悉该框架的基本结构和工作原理。 首先,让我们...

    Struts2 code jar+实现struts2步骤文档

    这个压缩包包含了核心库(core)的jar文件和一个实现Struts2工程的步骤文档,这对于初学者或者开发者来说是极其有价值的资源。 1. **Struts2核心库(Core Jars)**: - Struts2的核心库提供了框架的基本功能,包括...

    hibernate+struts+css,能直接运行。

    标题中的“hibernate+struts+css”指的是一个基于Java技术栈的Web应用程序开发框架。...对于学习Java Web开发的初学者或者需要参考示例代码的开发者来说,这是一个非常有价值的资源,可以直接运行并理解其工作原理。

    struts1.2.9 jar包及源码

    Struts 1.2.9 是一个非常经典的Java Web开发框架,由Apache软件基金会开发,主要用于构建基于MVC(Model-View-Controller)设计模式的Web应用程序。此框架的发布版本包括jar包和源码,方便开发者进行学习、调试和...

    徒手配置Struts2

    ### 徒手配置Struts2的关键知识点 #### 一、徒手配置Struts2环境时需注意的关键事项 ...此外,通过深入理解配置文件的每一个元素,可以帮助开发者更好地掌握Struts2的工作原理,从而提高应用程序的开发效率和质量。

    struts2 代码学习 小工程

    本项目是Struts2的学习实践,通过一个小型工程来帮助理解Struts2的核心概念和工作原理。 1. **Struts2框架介绍**:Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其不足,提供了一种...

    struts1 开源项目研究

    Struts1是一个经典的开源MVC框架,由Apache软件基金会维护,它在Java Web开发领域有着广泛的应用。这个项目的研究将帮助我们深入理解Web应用程序的架构设计,以及如何通过框架简化开发流程。 首先,Struts1的核心是...

    Struts1小demo

    这个"Struts1小demo"是一个很好的学习资源,可以帮助初学者理解Struts1的工作原理并快速上手实践。下面我们将深入探讨Struts1的相关知识点。 1. **MVC模式**:MVC模式是软件工程中的一种设计模式,将业务逻辑...

    struts2 学习重点笔记

    - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 WebWork 2,它融合了 Struts 1 的一些优秀思想。 - **优势**:使用 Struts2 可以显著提高...

    <Struts Web设计与开发大全>电子版

    - 介绍了如何使用IDE(如Eclipse或NetBeans)创建一个新的Struts工程。 - **3.1.2 发布应用** - 讲解了如何部署Struts应用程序到Web服务器上,如Tomcat或Jetty。 **3.2 Java Web应用配置文件:web.xml** - **...

    struts2的helloworld例子

    这个"struts2的helloworld例子"是为初学者准备的一个基础教程,旨在帮助理解Struts2框架的基本工作原理和配置过程。下面将详细阐述这个例子中的关键知识点。 首先,Struts2框架的核心是Action类,它是处理用户请求...

    Struts项目

    Struts项目是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,主要用于构建企业级的Web应用。Struts2是Struts的升级版本,它在Struts1的基础上进行了很多改进,提供了更强大的功能和更好的...

    实验3 Struts2的简单开发和配置

    通过实践一个简单的用户登录程序,加深对Struts2工作原理的理解,并能够独立完成Struts2项目的搭建与调试。 #### 实验背景 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源框架,它简化了Web应用...

    通用论坛(Eclipse+Struts)(Eclipse+Struts)

    在Eclipse中,开发者可以创建一个全新的Struts项目,配置相关的构建路径、部署描述符(web.xml)以及Struts配置文件(struts-config.xml)。Struts框架的核心在于Action类,每个Action对应一个用户请求,负责处理...

    利用felix和struts2实现osgi web

    Struts2是一个流行的MVC框架,用于构建Web应用的控制层。最新版本的Struts2(如2.1.8.1)开始支持与Felix OSGi的集成,使得开发者能在传统的Web开发环境中利用OSGi的模块化和动态部署特性,而无需大幅度改变开发...

    Struts2 实例 HelloWorld

    在本章中,我们将深入理解如何通过一个简单的HelloWorld实例来启动和运行Struts2应用,同时了解其核心组件和配置过程。 首先,HelloWorld实例是初学者学习新框架时常见的入门教程。在本例中,它的目标是帮助读者对...

    [web工程]集成struts2 mvc

    最后,提供的“demo”文件可能包含了一个简单的Struts2示例工程,你可以解压后运行并分析其结构,以加深对Struts2集成的理解。记得检查`src/main/java`、`src/main/resources`、`WebContent/WEB-INF`等关键目录,看...

Global site tag (gtag.js) - Google Analytics