Struts实质上就是在JSP model2(java+servlet+javabean)模式的基础上实现一个MVC框架。我先简单说下MVC,MVC是model—view—controller简称,即模型---视图—控制器。工作原理如下:(见附件)
视图是与用户交互的界面,模型来表示业务数据和逻辑数据,而控制器是接受用户数据并调用模型和视图去完成用户需要。
在struts框架中,模型由实现业务逻辑的javaBean或者EJB组成,控制器由一个基类Action和一些xxxAction来实现,视图由一些JSP文件构成。下图是struts实现的MVC框架流程:(附件)
Struts就是在M与C两层中间加上一个MVC,在这个MVC里,
M层是应用程序的状态和业务逻辑,由一些javaBean和EJB组件来实现。
V层是JSP组件,没有业务代码,模型。只有标签,如用户自定义标签库等。
C层是由ActionServlet和Action类来实现的。
而ActionServlet是整个框架的核心,继承HttpServlet,主要负责接收Http请求,根据用户的struts-config.xml配置文件,把请求转发给相应的Action,如果Action不存在,ActionServlet会先创建这个Action对象。而Action负责调用模型的方法,更新模型状态,并帮助控制应用程序的流程。
当ActionServlet控制器接收到Http请求后,通过配置映射的struts-config.xml文件,把请求转发给一个Action实例,而每个Action的映射信息都通过<action>元素来配置,并以元素里一个path属性来制定请求的uri,并用属性name来匹配Action对象。如果这个Action实例不存在,ActionServlet先会创建它,然后调用Action的excute()方法,Action的excute()方法会返回ActionForward对象,它封装了请求转发给其他web组件的信息。
这些配置信息在ActionServlet容器启动并初始化的时候,通过this.getServletContext().getRealPath(this.getInitParameter(xxx路径/struts-config.xml))的方式读入到内存,供在运行期间使用,而每一个<action>元素都对应一个ActionMapping类的实例。
下面就我的struts-config.xml配置文件详细解释如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mystruts-config SYSTEM "struts-config.dtd">
<mystruts-config>
<form-beans>
<form-bean name="loginform" type="yy.struts.form.LoginForm" />
</form-beans>
<action-mappings>
<action
name="loginform"
type="yy.struts.action.LoginAction"
path="login"
scope="session"
validate="true"
input="error.jsp"
redirect="false"
>
<forward
name="sucess"
path="sucess.jsp"/>
</action>
</action-mappings>
</mystruts-config>
在上面的配置文件里,首先呢,如果需要关联外部的DTD文档,有三种方式:
1. 使用内部DTD 直接定义
2. 使用外部DTD <!DOCTYPE mystruts-config SYSTEM "struts-config.dtd">
3.使用公共的DTD <!DOCTYPE mystruts-config PUBLIC "struts-config.dtd">
每个<form-bean>对应每个formBean模型,并以属性name代表制定要传给的xxxFormBean,type代表xxxForm的完整路径。
在action-mapping里的<action>元素:name属性代表要传递给ActionFormBean,type属性制定Action的完整类名,path制定要访问的Action路径,scope制定要存放的范围,validate制定是否需要进行表单验证,input制定表单验证失败后的转发路径,redirect制定是否需要重定向。还有一个<forward>是来制定要转发的路径。
现在对struts框架了解后,也说了怎么实现的。下面是它的作用:
1.获取表单内容,并组织生成参数对象
2.根据请求的参数转发请求给适当的控制器
3.在控制器中调用业务接口
4.将业务接口返回的结果包装起来发送给指定的视图,并由视图完成处理结果的展现
5.做一些简单的校验或是国际化工作

- 大小: 29.7 KB

- 大小: 29.4 KB
分享到:
相关推荐
总结来说,模拟Struts2框架的实现主要包括以下几个部分: 1. 创建Action类并定义业务逻辑方法。 2. 配置Action映射,指定Action类、方法和URL路径。 3. 实现和配置拦截器,以增强Action的执行过程。 4. 设计视图层...
模拟Struts框架
**Servlet模拟Struts_MVC框架详解** 在Java Web开发中,MVC(Model-View-Controller)模式是一种广泛应用的设计模式,它将业务逻辑、数据处理和用户界面分离,提高了代码的可维护性和可扩展性。Struts是Apache组织...
在IT行业中,构建一个自定义Ajax框架和模拟Struts框架是一项高级技能,涉及到Web开发的核心技术。Ajax(Asynchronous JavaScript and XML)是一种用于创建快速、动态网页的技术,它允许页面在不重新加载整个页面的...
通过这个模拟Struts框架,初学者可以动手实践,从创建简单的Hello World应用开始,逐步深入到复杂的业务场景,从而对Struts框架有更全面的理解。同时,这也有助于为学习其他MVC框架,如Spring MVC打下坚实的基础。
在本主题"Servlet简单模拟Struts2"中,我们将探讨如何利用Servlet来实现类似Struts2框架的一些关键功能,包括请求拦截、XML配置解析、动态代理以及日志拦截。 首先,让我们了解一下Struts2框架的核心特性。Struts2...
本项目“基于Struts框架的购物车系统”旨在提供一个实际的电商场景模拟,帮助学习者理解和掌握如何在实际项目中运用Struts框架。 【描述】提到的实用性意味着这个购物车系统可以用于课程设计,同时具备扩展性,可以...
总结来说,使用Servlet模拟Struts1框架主要涉及以下几个步骤: 1. 创建并解析XML配置文件,获取ActionMapping。 2. 实现请求解析,找到匹配的ActionMapping。 3. 创建ActionForm对象,封装请求参数。 4. 调用业务...
总之,模拟Struts1的过程是一个很好的学习方式,它帮助开发者理解MVC模式和框架如何协调工作,同时也能提升对Servlet的理解。实际开发中,虽然Struts1已经被Struts2和其他现代框架取代,但了解其工作原理对理解和...
Struts框架作为一款基于MVC(Model-View-Controller)设计模式的经典框架技术,在当前Web应用开发中占据着重要地位。MVC模式将应用程序分为三个核心组成部分:模型(Model)、视图(View)和控制器(Controller)。...
Struts2是一个强大的MVC(Model-View-Controller)框架,它是Apache软件基金会下的一个开源项目,被广泛用于Java Web应用程序的开发。该框架的主要目标是简化开发过程,提高代码的可维护性和可测试性。这里我们将...
实际的Struts框架在DispatcherAction的实现上还考虑了拦截器(Interceptor)、多视图(多个Forward)支持、国际化(Internationalization)等问题,模拟实现时也可以考虑这些增强功能。 通过以上步骤,你可以理解...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护、结构清晰的web应用的工具。本教学示范代码是针对Struts2自定义框架的实践操作,旨在帮助...
这个小项目显然是为了帮助开发者理解和实践Struts框架的核心概念和技术。在本文中,我们将深入探讨Struts框架的基本原理、主要组成部分以及如何通过模拟项目来学习它。 **1. Struts框架概述** Struts是一个基于MVC...
Struts1框架是Java Web开发中的一个经典框架,由Apache软件基金会维护,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用的开发。在本项目中,仅使用了Struts1来实现一个未连接数据库的简单登录功能...
在"模拟Struts"这个项目中,你可能已经尝试实现了Struts框架的核心功能,让我们深入探讨一下Struts的关键知识点。 1. **MVC设计模式**:MVC是一种将业务逻辑、数据和用户界面分离的设计模式。在Struts中,模型...
Struts框架是Java Web开发中一个非常重要的MVC(Model-View-Controller)框架,它为构建基于J2EE的应用程序提供了一种可扩展且结构化的解决方案。在使用Struts框架进行开发时,确保拥有正确的Jar包是至关重要的,...
在提供的文件列表中,"hotel"可能是模拟的一个示例项目或者模块,展示了如何在仿struts框架下开发酒店预订系统。这可能包括了酒店相关的Action类、视图JSP页面、以及对应的配置信息。通过分析和运行这个示例,我们...
在"模拟Struts功能--最后的一些实体bean以及源码下载"这个主题中,我们可以深入探讨Struts框架的核心概念、实体Bean的作用以及如何通过源码学习Struts的工作原理。 首先,让我们了解一下Struts框架的基础。Struts...