zoukankan      html  css  js  c++  java
  • Struts1.3——使用MyEclipse集成工具开发Struts

    前面两篇通过手工写代码,手工配置struts-config.xml文件的方法来开发了一个最简单的struts项目,通过手工的方式旨在学习底层原理细节。当熟悉了以后,我们就不需要再通过纯手工的方式来开发struts了,MyEclipse为我们提供了便捷的集成开发工具。 
    下面就介绍通过MyEclipse自动开发struts的步骤。这里仍然使用登录验证系统来说明。

    1.建立web工程

    首先要建立web工程,这是所有项目的第一步。这里我新建项目StrutsLoginByTool

    这里写图片描述


    2.引入struts开发包

    (1)右键该项目,依次点击MyEclipse->Project Facets[Capabilities]->Install Apache Struts(1.x) Facet(该步骤针对MyEclipse2015 Stable 2.0版本,不同版本步骤可能略有出入)。如图:

    这里写图片描述

    (2)在跳出来的对话框中选择struts 1.3版本。

    这里写图片描述

    (3)在接下来跳出来的对话框中选择struts-config.xml文件的路径,选择URL Pattern等一些配置。

    这里写图片描述

    (4)点击finish,就会自动地引入struts开发包和自动生成struts-config.xml文件,并完成一些配置。现在的项目目录如下:

    这里写图片描述

    可以看到,它自动引入的struts开发包是1.3.8版本的,并且生成了struts-config.xml文件。

    在这一步之后,MyEclipse帮我们自动配置了struts的开发环境,我们已经可以在项目中使用struts来开发了。 
    我们依然可以按照手工的方式来开发ActionForm、Action,以及在之后的过程中手工配置struts-config.xml文件。但是MyEclipse的强大之处就在于这些工作它也完全可以自动完成,简化了我们手工的麻烦。

    下面我们采用纯自动的方式来开发。


    3.开发login.jsp

    开发简单的登录页面:login.jsp,该jsp依然放在WEB-INF目录下,通过index.jsp转发到该页面。与上篇一样,核心代码如下:

    <body>
        <form action="??" method="post">
            UserName:<input type="text" name="username"/><br><br>
            Password:<input type="password" name="password"/><br><br>
            <input type="submit" value="Login"/>    
        </form>
      </body>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这里action提交的地址还不知道,暂时先放在这里。两个表单组件的名字分别为username和password,这两个名字在struts中很关键,后面填充表单的时候要用到。


    4.开发welcome.jsp和error.jsp

    顺手把welcome.jsp和error.jsp也一并写出来,用于之后登陆验证后的跳转目标页面。


    5.开发ActionForm和Action

    (1)我们打开struts-config.xml文件,该文件可以采用DesignSource两种方式编写,Design模式就是我们自动开发ActionForm和Action的窗口,而Source模式让我们直接编辑源代码。

    这里写图片描述

    (2)在Design模式下的空白处点击右键,选择New,可以看到它可以新建Action,可以新建Form等

    这里写图片描述

    (3)我们先新建Form,创建UserForm,如下图:

    这里写图片描述

    (4)再创建和UserForm关联的Action,名字为LoginAction,如下图:

    这里写图片描述

    (5)完成上述步骤之后,我们可以看看MyEclipse帮我们完成哪些工作:

    <1>看看项目目录,它自动生成了UserForm和LoginAction的代码:

    这里写图片描述

    <2>再看struts-config.xml文件,在Design模式下,可以看到它多出了一个LoginAction的视图,在Source模式下可以看到源代码,它已经帮我们配置好了UserForm和LoginAction以及它们两者之间的关联。

    这里写图片描述

    这里写图片描述


    6.在struts-config.xml的Design模式下配置跳转关系

    (1)将login.jsp、welcome.jsp和error.jsp都拖动到struts-config.xml的视图上,如下图:

    这里写图片描述

    (2)选择左侧的Add Connection工具,通过连线配置login.jsp到LoginAction的input关系,配置LoginAction到welcome.jsp和error.jsp的转发关系。对于到welcome.jsp,转发的判断名字为ok,而到error.jsp的转发判断名字为error

    这里写图片描述

    (3)最后形成的关系图如下:

    这里写图片描述

    (4)我们可以看看struts-config.xml的源代码,它在LoginAction中又给我们自动配置了forward关系:

    这里写图片描述


    7.在LoginAction的excute方法中添加业务逻辑

    判断用户验证是否通过,如下:

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
        if("123".equals(userForm.getPassword())){
            return mapping.findForward("ok");
        }else {
            return mapping.findForward("error");
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    8.别忘了在login.jsp中将表单的action地址补充上去,我们的LoginAction的path为/login,所以应该写上/StrutsLoginByTool/login.do

    <body>
        <form action="/StrutsLoginByTool/login.do" method="post">
            UserName:<input type="text" name="username"/><br><br>
            Password:<input type="password" name="password"/><br><br>
            <input type="submit" value="Login"/>    
        </form>
      </body>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    9.测试

    运行该项目,发现跟手工写代码配置的一样,运行正常。

    这里写图片描述

    这里写图片描述

    可以看到我们只写了3个简单的jsp页面,和一点简单的业务逻辑代码。而其他的全部都是MyEclipse帮我们做的,生成Action和ActionForm,配置struts-config.xml等。

    所以呢,struts简化了我们手工书写和配置跳转关系的麻烦,让我们专注于业务逻辑的书写。当然这么一个简单的登录验证只是一个非常小的例子,而项目真正复杂的地方正是在于业务逻辑。

    这个例子旨在介绍通过集成工具开发struts的一般流程。



    为什么说struts是一个web框架?

    这里写图片描述

    struts横贯了Web层,因为struts接管了Web层的组件,包括jsp,表单,Action等,所以把Struts称之为Web层框架,但是Struts并没有影响下面的业务逻辑层、DAO层和数据库层,这些层次将来会有其他的框架接管。

  • 相关阅读:
    unserialize() 反序列化报错,疑似乱码解决 阿星小栈
    js判断输入字符串是否为空、空格、null的方法总结 阿星小栈
    navicat中创建存储过程、触发器和使用游标的简单实例(图文) 阿星小栈
    mysql触发器new和old区别 阿星小栈
    div垂直居中
    javascript 原型详解
    对Web标准的理解。可用性和可访问性
    css兼容问题
    $(...).live is not function
    js判断两个对象是否相等
  • 原文地址:https://www.cnblogs.com/husam/p/7912204.html
Copyright © 2011-2022 走看看