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

学习脚步-----自己编写个简单的Struts1.x(学习用,功能不完善)

阅读更多

项目分析:

Struts1.x是基于MVC框架而开发的一个项目:

M---modelDAO+DAOMAIN -------à是一群普通的java

V----viewjsp-------à只负责显示和表单的提交

C---controllerservlet--------à一般只有一个(除非是验证码)

项目要求:

本项目分为以下几个步骤来完成,时间是五天

每完成一部分都要进行相应的测试,并导出JAR包和压缩包。

一、MyStruts1.0的编写:

要求其中包含的文件有:

五个类: ActionMapping   ActionMappings  ActionFoward  ActionServlet   Action

一个配置文件:rule.xml

要求自己写的有:

*Action继承自Action

struts-config.xml并进行配置

.jsp页面进行业务的操作

原理分析:

二、MyStruts1.1的编写:---------à表单错误转发之后回来name等处还是有内容

要求其中包含的文件有:

四个类:ActionMapping  Action  ActionMappings ActionFoward  ActionServlet   FormBean  FormBeans  StrutsConfig

一个配置文件:rule.xml

要求自己写的有:

*Action继承自Action

*Form继承自ActionForm

struts-config.xml并进行配置

.jsp页面进行业务的操作

三、MyStruts1.2的编写:----2点要求-----à在配置文件中配置上资源文件和全局的forward标记

要求其中包含的文件有:

四个类:ActionMapping   ActionMappings  ActionFoward  ActionServlet   FormBean  FormBeans  StrutsConfig

Message

Message.tld中配置的类(继承自SimpleTagSupport

一个配置文件:rule.xml   message.tld

要求自己写的有:

*Action继承自Action

*Form继承自ActionForm

struts-config.xml并进行配置

.jsp页面进行业务的操作(有关于taglib的引入等)

STRUTS1.0版本报告:

 

编写顺序:

1.       先想好要解析的struts-config.xml文件将要按照何种格式写、各个标记的名称分别是什么、各个标记如何使用、写一个模板出来。

2.       struts-config.xml中有那些标记,每个标记写一个实体类。对应的属性作为类的属性存在。对于有内容的要使用HashMap来存储并提供addfind方法--à为了解析的时候往上一级的对象中添加使用。

3.       编写rule.xml文件告诉digester如何解析

4.       编写ActionServlet类继承HttpSerlvet类实现serviceHttpSerlvetRequest requestHttpServletResponse response)方法,注意里面是http

5.       在使用digesterjar包做解析的时候也用到了其他的jar包,所以在运行的时候要把commons-digester-1.8.jar    commons-beanutils-1.8.0.jar    commons-collections-3.2.1.jar   commons-logging.jar复制到lib的目录下。也就是说使用digester解析xml文档需要借助其他三个包

遇到的问题:

1.关于jar包,要引进的不是一个commons-digester-1.8.jar,还要引进commons-beanutils-1.8.0.jar    commons-collections-3.2.1.jar   commons-logging.jar,因为digester解析的时候用到了其他的三个jar

2.对于WEB-INF下面的jsp页面我们不能直接访问,只能通过转发才可以(也就是redirectfalse才可以)。在使用相对路径的时候转发、链接、重定向、提交写法都一样,使用绝对路径的时候转发不必带工程的名称,而其他的必须带着。

3.忘记在web.xmlActionServlet进行配置了

测试:

1.       test中写了LoginAction类继承自Action

2.       自己按照解析规则编写了struts-config.xml文件,并进行相应的配置

3.       WEB-ROOT下写了login.jsp写出登陆的主界面

4.       WEB-INF/jsp写了main.jsperror.jsp在页面,分别作为登陆成功和登陆失败转发的页面。(必须都为转发----redirect=”false”

5.       web.xml中对ActionServlet进行配置

效果:在浏览器输入:http://localhost:8080/MyStruts/login.jsp填写相应信息地址栏变为:http://localhost:8080/MyStruts/login.action  但是跳转到了main.jsp或者error.jsp页面。

进一步测试:

在项目上单击右键-àExport----àjava/JAR file--à选中src下面的包(名字为kang的包中有五个类和一个rule.xml文件)/点击浏览选中导到的位置并给jar包取个名字叫做struts1.0即可。

注意:

1在导出来的struts1.0.jar包中kang----五个类,也就是说仍然保存着导出时候的目录结构。所以在我们在使用其中类的时候要使用kang.类名(就是包名.类名,类似java.util.List)。在自己写得配置文件中也要写作kang.ActionSerlvet进行配置。

2.为什么不导出commons-digester-1.8.jar等四个jar文件?因为太大了,麻烦,到时候说明文档中告诉用户去下载哪个版本的哪个jar文件就可以了(不同版本的类中的方法的实现可能不同,所以要注明版本)。

步骤:

1.  把四个jar包和我们自己写的struts1.0.jar粘贴到lib下面

2.  src目录下自己写一个struts-config文件进行配置(位置和标记都是固定的)

注意:一定是要在src的目录下写这个配置文件因为在ActionServlet中加载这个文件的时候的路径写的是:

digester.parse(ActionServlet.class.getClassLoader().getResource("struts-config.xml"));所以一定要卸载src的目录下面而且名称不可以错误:

<action-mappings>

<action path="/login" type="test.LoginAction" >

<foward name="success" path="/WEB-INF/jsp/main.jsp" redirect="false"/>

<foward name="fail" path="/WEB-INF/jsp/error.jsp" redirect="false"/>

</action>

</action-mappings>

3.写一个LoginAction继承自Action,实现execute方法。

4.web.xml中进行ActionServlet的配置

5.WEB-INF/jsp下面写main.jsperror.jsp

6.scr下面写一个login.jsp,描述登陆页面

测试过程和运作流程:

1.在页面输入http://localhost:8080/MyStruts/login.jsp

2.输入相关内容点击提交表单

分析:因为我们在web.xml中对ActionServlet进行了配置,所有*.action的请求都由ActionServlet这个servlet来处理。

ActionServlet中先调用digester.jarstruts-config.xml中的配置信息按照rule.xml的规则解析成mappings对象。这时候所有的struts-config.xml中的信息已经保存在actionmappingsactionmappingactionfoward对象里面。

按照ActionServletservice方法,一步步调用对象的方法执行,最后重定向或者是跳转到某个页面。在这个项目中是转发到WEB-INF下面的某个页面。

其中service方法的流程是:

先在mappings中根据接收到的uri查找到mapping对象,然后得到mapping对象的type(要创建的Action对象的字符串名称),利用反射得到这个Action对象,调用这个对象的execute方法,得到字符串,利用这个字符串在mapping中查找到对应的forward对象,得到是转发还是重定向,以及重定向或者是转发到的地址。

STRUTS1.1版本报告:

这个版本是在上个版本的基础上改的,主要的改动有:

1.       新建立了ActionForm类,给类没有方法只是实现了serilizable接口(因为要网session或者是request中存放),本类的作用就是存储表单中的信息:

        Map map = request.getParameterMap();

              BeanUtils.populate(aform, map);

2.       新建立了StrutsConfig类,新建立了FormBeansFormBean类,这三个类都是和struts-config.xml对应的标记的类,使用于存储配置文件中的信息的。

3.       删除了error.jsplogin.jsp剪切到了WEB-INF/jsp下面,修改了rule.xml文件:

<struts-config>

<form-beans>

<form-bean name="loginform" type="test.LoginForm"/>

</form-beans>

<action-mappings>

<action path="/login" type="test.LoginAction" name="loginform" attribute="lf" scope="session">

<foward name="fail" path="/login.jsp" redirect="false"/>

<foward name="success" path="/WEB-INF/jsp/main.jsp" redirect="false"/>

</action>

</action-mappings>

</struts-config>

分析:都是转发到页面main.jsplogin.jsp这里是按照绝对路径写的,都不必加工程名字。

要求是用户自己写的这个配置必须是写的是绝对路径,因为在ActionServlet中会调用这个路径,使用的时候也是按照绝对路径来使用的。

4.       ActionServlet中对方法进行了整合,是各个方法更有条理性

遇到的问题:

1.login.jsp确保登陆错误跳转回login.jsp的时候用户名部分有内容,则需要使用EL表达式:

用户名:<input type="text" name="name" value="${lf.name}"/><br>

但是表达式会以文本的形式出现在用户名的框里面,解决方法:在login.jsp头部添加<%@isELIgnored="false"%>

2.在利用digester解析struts-config.xml文件的时候,配置文件中的内容加载不进FormBeans中,原因是:在rule.xml文件中<pattern value="form-beans"><pattern value="action-mappings">写的顺序颠倒了。

3.login.jsp页面提取出来的信息加载进ActionForm中的时候,把ActionForm对象和FormBeansFormBean弄混淆了,在传递参数的时候传递不过去。

操作和效果:

在地址栏输入:http://localhost:8080/MyStruts/login.jsp然后输入相应的用户名和密码,然后点击提交,如果正确的话会转发到main.jsp页面,如果错误的话则转发回到login.jsp页面,那么此时用户名一栏则有上次输错误的名字记录,每次都不一样

 

分享到:
评论

相关推荐

    Struts1.x-Hibernate,曾删改查

    Struts1.x 和 Hibernate 是两种在Java Web开发中广泛使用的开源框架,它们分别负责不同的职责。Struts1.x 是一个MVC(Model-View-Controller)框架,主要用于处理Web应用程序的业务逻辑和用户交互,而Hibernate则是...

    Struts1.x 中文帮助文档

    Struts1.x是Apache软件基金会旗下Jakarta项目的一个核心组件,它是一款开源的MVC(Model-View-Controller)框架,用于构建企业级Java Web应用程序。这个框架在2000年代初非常流行,因其规范化的开发流程和强大的功能...

    快乐编程-知识分享-Struts1.x学习-1.2入门-001

    Struts1.x是Java Web开发中的一个经典框架,由Apache软件基金会开发,它基于Model-View-Controller(MVC)设计模式,旨在简化应用程序的构建,提供更好的结构和控制。Struts1.2是该系列的一个重要版本,为开发者提供...

    struts in action (struts1.x)

    `Struts 1.x` 是 Apache 软件基金会(ASF)下的一个开源项目,是 Java Servlet 和 JavaServer Pages(JSP)平台上的一个MVC(Model-View-Controller)框架,主要用于构建企业级Web应用程序。这个框架在2002年发布,...

    Struts1.x的验证框架示例

    Struts1.x是一个经典的Java Web开发框架,由Apache软件基金会维护。它的主要目的是为了简化MVC(模型-视图-控制器)架构的实现,提高Web应用程序的可维护性和可扩展性。验证框架是Struts1.x的一个重要组成部分,用于...

    struts1.x教程

    2. **创建Web项目**: 使用IDE(如Eclipse或IntelliJ IDEA)创建一个新的Web项目,命名为`myStruts1.x`。 3. **导入JAR文件**: 将解压得到的Struts JAR文件导入到项目中。为了方便以后的项目,建议先将常用JAR包添加...

    struts1,struts教程,struts1.x入门

    在"struts1.x入门"的教程中,我们可以学习到以下几个核心知识点: 1. **MVC模式**:理解MVC模式的基本概念,它将应用程序分为模型、视图和控制器三个部分,各自负责数据处理、用户界面展示和用户交互处理。 2. **...

    DWR+jquery2.x+easyUI1.3.x开发富客户端应用

    1. **整合目标**:本文档的目标是将 Struts2.x、Spring3.x、Hibernate4.x 与 DWR、jquery2.x 和 easyUI1.3.x 进行集成,以构建一个功能齐全且高效的 Web 开发环境。 2. **jQuery 版本选择**:为了兼容性和性能考虑...

    struts1.x入门[修订版]

    下面详细介绍如何创建一个简单的 Struts 1.x 应用实例,该实例实现了一个基本的登录功能: ##### 步骤一:搭建环境 1. **下载并安装 Struts**: 首先下载 `struts-1.3.10-all.zip` 并解压缩,从 `lib` 目录中获取所...

    struts1.x validator框架验证入门例子

    在这个入门例子中,你可以创建一个简单的表单,使用Struts1.x的Validator框架进行验证。首先创建表单HTML页面,然后编写对应的ValidatorForm和Action,最后配置struts-config.xml和ValidatorRule.xml。运行项目,...

    struts1教程.doc

    本教程主要针对初学者,旨在引导学习者掌握Struts 1.x的基础知识和使用方法。 在开始学习Struts 1.x之前,首先需要了解其基本概念。Struts 1.x框架的核心组件包括ActionForm、Action、Controller(Struts Action...

    struts1.X中文教程

    Struts1.X中文教程 Struts是一个开源的Java EE Web应用程序框架,主要为了解决MVC(Model-View-Controller)设计模式在JSP应用程序中的实施问题。它由Apache软件基金会开发并维护,旨在简化创建功能丰富的、基于...

    用struts 1.x写的一个图书管理系统的例子

    本文将深入探讨一个使用Struts 1.x框架编写的图书管理系统的实例,该系统支持HTML和JSP页面,同时也集成了MySQL数据库和SSH(Spring、Struts、Hibernate)中的Struts组件。这个项目对于初学者来说是一个很好的学习...

    Struts1.x系列教程文档【技术文档】

    学习如何编写和解析这个文件对于理解和使用Struts1至关重要。 4. **ActionMapping**:定义了请求URL与Action类的映射关系,包括Action的执行路径、对应的ActionForm以及处理后的跳转页面。 5. **ActionForm**:...

    org.springframework.web.struts-sources-3.0.4.RELEASE.jar

    在3.0.x系列中,Spring提供了对Struts 1.x的支持,允许开发者利用Spring的特性来增强Struts应用,例如事务管理、AOP(面向切面编程)、数据绑定和类型转换等。 1. **Spring与Struts的整合机制** Spring与Struts的...

    不同版本的 struts2.dtd

    - 使用符合当前版本的DTD来编写配置文件,以充分利用框架提供的所有功能。 - 学习并理解每个版本的DTD变化,有助于更好地理解和优化应用配置。 总之,Struts2的不同版本的DTD代表了框架在不同阶段的发展和进步,...

    struts1-core.jar

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的Controller部分。标题中的"struts1-core.jar"是Struts1的核心库文件,它包含了实现框架核心功能...

    struts1学习教程

    通过这个mystruts的实例,你可以了解到Struts 1.x的基本架构和工作流程,包括如何创建和配置Struts工程,编写Action和ActionForm,设计数据库模型,以及如何处理用户输入和显示结果。进一步学习,你还可以探索更复杂...

    struts-2.1.dtd

    Struts 2是Java Web开发中的一个开源框架,主要用于构建基于MVC(Model-View-Controller)模式的应用程序。在Struts 2中,DTD(Document Type Definition)文件扮演着重要的角色,它们定义了配置文件的结构和规则,...

Global site tag (gtag.js) - Google Analytics