- 浏览: 702313 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (362)
- java基础 (33)
- html/css+div/javascript (17)
- Ajax/XML/JSON/XSL (7)
- JQuery (11)
- Extjs (1)
- JSP/Servlet (19)
- MVC模式 (4)
- struts 1 (17)
- Struts 2.3.4 (17)
- Spring 3.2 (26)
- Springmvc (3)
- Hibernate 4.1 (21)
- ibatis (6)
- Velocity模板语言 (2)
- Rose框架 (5)
- EJB (1)
- JUnit测试 (2)
- 数据库DB (24)
- 重构 / 设计模式 (3)
- 开发工具IDE (37)
- 数据结构与算法设计 (3)
- Android (12)
- Linux (4)
- bug集合 (29)
- 缓存技术(redis) (3)
- Lucene全文索引 (15)
- maven3.0.5 (4)
- 小工具集合 (18)
- 面试题 (5)
- 闲聊 (11)
- 其他 (4)
- 接口API (2)
- work (2)
- Flex (0)
- JMS (1)
- 开源项目集合 (1)
- 技术博客 (1)
- 分类04 (0)
- 分类05555 (0)
最新评论
-
小小小羊:
好屌...
java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$Refle -
liubinli2005:
这个可以脱底spring。单独使用吗?
DAO层:jade -
cangbaotu:
我觉得对于开发者来说,能脚本化编写爬虫是一件挺开心的事情( ̄▽ ...
网页爬取 -
asjava:
很好的文章, 但每段代码清单都重复了一次.
spring 事务 -
xia635317478:
jethypc 写道验证码的session无法传过去啊 还是我 ...
登陆验证码(struts2实现)
struts1.x 和 struts2.x向Action里填充jsp参数原理
一、struts1.x原理:
由上图可以看出,struts1.x是基于单例模式,所有XXaction.do都是在ActionServlet这个实例进行控制,最后实际的Action处理类是Struts应用中真正干活的组件,它解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。当同时有多人访问同一action时,此时线程是不安全的!
struts2.x则不一样,每个XXaction.action会调用各自的action实例并自己控制跳转,而不会像struts1.x将结果(jsp或另一个action)返回给actionServlet,所以相互不影响,所有是线程安全的!
1.启动Tomcat服务器,加载web.xml --> 加载struts-config.xml
实例化所有的XXaction、beanForm、result、jsp放入内存中。
key -----> value
XXaction beanform/result/jsp
2.用户请求url: http://IP:port/context/*.do
(1)url中*.do经过拦截:
由ActionServlet拦截处理(核心)--->去内存中通过key去寻找value(beanform),检索和用户请求匹配的ActionMapping实例,如果不存在与之对应的Action(可能是jsp/html请求)就返回请求路径无效信息,如果存在,则进入下一步。
(2)将参数填充到beanForm里面去:
如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;
(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;
(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法; (6)Action的execute()方法:
action对象调用Service.save(beanform)--->DAO---->DB --->
返回到Action类的list<User> users = UserService.findAll(); --->
再通过request.setAttributes("users",users) ;
返回给ActionServlet一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;
(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;
(8)用户:在Jsp页面通过
<% List<User> list = request.getAttributes("users") ; %>
1.web.xml文件 <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <taglib> <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri> </taglib> 2.struts-cofig.xml文件 主要配置: data-sources global-execptions form-beans global-forwards action-mappings controller message-resources plug-in <!-- Action配置 Path:在浏览器的URL中输入的字符(必须的) Type:连结到本映射的Action的全称(可选的) Name:与本操作关联的Action Bean在<form-bean/>中定义name名(可选的) Scope:指定ActionForm Bean的作用域(session和request),缺省为session。(可选的) Input:当Bean发生t误时返回的控制。(可选的) ClassName:指定一个调用这个Action类的ActionMapping类的全名。缺省用 org.apache.struts.action.ActionMapping,(可选的) Forward:指定处理相应请求所对应的JSP页面。(可选的) Include:如果没有forward的时候,它起forward的作用。(可选的) Validate :若为true,则会调用ActionForm的validate()方法,否则不调用,缺省为true。(可选的) --> <form-beans> <form-bean name="LoginForm" type="com.lenovo.loginForm" /> </form-beans> <action-mappings> <action path="/login" type="mail.login.LoginAction" name="LoginForm" scope="request" validate="true"> <forward name="success" path="/index.jsp"></forward> <forward name="error" path="/Error.jsp"></forward> <forward name="input" path="/login.jsp"></forward> </action> </action-mappings>
参考:http://hi.baidu.com/mnlnzecvwcimosr/item/f7b7b23eec2571fd97f88d15
http://blog.sina.com.cn/s/blog_4bd19a250100ttpl.html
二、struts2.x原理
1.启动Tomcat服务器,加载web.xml --->
加载spring配置文件,applicationContext.xml ---> 把DBResource(Hibernate.cfg.xml)、sessionFactory、HibernateTemplate(Daoimpl)、Service --->
加载struts.xml ---> 将Action加载到内存中
key -----> value
XXaction result/jsp
但是参数不像struts1.x一样,通过key映射beanForm,而是在struts2.x的Action类构造函数(参数1,实体2,实体3,.....),这些参数、bean实体有set get方法。
2.用户请求url: http://IP:port/context/*.action
url中*.action经过拦截:web.xml的FilterDispatcher拦截过滤,通过struts.xml匹配相应的action,当
访问的参数 <input type="text" name="code"/>
或bean实体 <input type="text" name="admin.name"/>
<input type="text" name="admin.password"/>
有相应的set()方法,就把jsp里面的参数填充到Action对象的属性里面去
----> action对象调用Service.save(beanform)--->DAO---->DB --->
返回到Action类的list<User> users = UserService.findAll(); --->
users有getUsers()方法时,就把users保存在一次服务器跳转中request--->
在jsp页面通过<s:iterator value="users"></s:iterator>循环输出
- Struts1工作原理浅析.rar (1.6 MB)
- 下载次数: 0
发表评论
-
Spring分别与Struts1.x 和Struts2.x集成方法
2012-11-16 14:05 1532Spring分别与Struts1.x 和Struts2.x集成 ... -
S1SH整合
2012-11-12 18:10 909struts1_spring_Hibernate整合 ... -
Struts1之Titles框架 Demo
2012-11-09 14:19 1648Struts1之Titles框架 Demo 1.strut ... -
spring将service注入到Action中(s1和s2)
2012-11-09 11:53 2028spring将service注入到Action中 spri ... -
BeanUtils.copyProperties
2012-11-08 17:23 1027BeanUtils.copyProperties与Proper ... -
struts1.x action小结
2012-11-08 13:46 756Struts1之Action小结 <!-- 正 ... -
<action parameter="method" />
2012-11-06 09:22 1427<action parameter="meth ... -
MessageResources
2012-11-06 09:22 1254MessageResources struts1.x配 ... -
Struts1 之 Titles组件
2012-11-05 09:56 1103Struts1之Tiles框架 1.在struts-con ... -
Struts1 之 Validator组件
2012-11-05 10:37 1088Struts1 之 Validator框架 struts1. ... -
struts1 之 ContextLoader组件
2012-11-05 10:36 829把action交给spring管理 参考链接: 1.htt ... -
Struts1.x 标签集合
2012-11-03 21:29 1204Struts1.x 标签集合 <%@ tagli ... -
spring实例化struts1或者struts2.x的action
2012-11-01 17:35 1223spring实例化struts1或者struts2.x的act ... -
struts1 和 struts2中Action什么时候实例化
2012-11-01 17:19 1669struts1 和 struts2中Action什 ... -
Struts1和Struts2的区别
2012-10-23 22:46 981Struts1和Struts2的区别 s1 ... -
struts1处理原理
2012-10-07 23:00 1077struts1处理原理 ActionServle ...
相关推荐
综上所述,Struts2.x相对于Struts1.x在多个方面进行了改进和优化,包括但不限于Action的实现方式、工作流程、数据绑定、视图技术以及验证机制,这些改进共同构成了Struts2.x相较于Struts1.x的优势,使其成为现代Web...
Struts1.x_action 是一个与Apache Struts 1.x框架相关的资源包,它包含了用于构建基于Java的企业级Web应用程序的组件。Struts是MVC(Model-View-Controller)设计模式的一个实现,它使得开发者可以更有效地管理和...
`Struts 1.x` 是 Apache 软件基金会(ASF)下的一个开源项目,是 Java Servlet 和 JavaServer Pages(JSP)平台上的一个MVC(Model-View-Controller)框架,主要用于构建企业级Web应用程序。这个框架在2002年发布,...
### Struts 1.x 在MVC架构中的角色与工作流程详解 #### Struts 概述与MVC设计模式实现 Struts是Apache软件基金会赞助的一个开源项目,它为基于Java的Web应用程序提供了一种实现MVC(Model-View-Controller)设计...
学校图书管理系统是一个典型的信息化应用,它使用了Struts1.x框架和MySQL数据库来实现对图书信息、借阅记录等数据的管理和操作。Struts1.x是Apache组织开发的一个MVC(Model-View-Controller)框架,它在Java Web...
Struts1.x面试题大全.pdf Struts 是一个基于 Java 语言的 MVC 框架,广泛应用于 Web 应用程序开发中。下面是 Struts 的一些重要知识点: Struts 的优点 1. 业界标准:Struts 是一个广泛应用的开源软件,有很多...
Struts2.x是一个非常流行的Java Web框架,它用于构建企业级的MVC(Model-View-Controller)应用程序。在这个框架中,开发人员可以方便地管理请求、处理业务逻辑以及渲染视图。而百度UEditor是一款功能强大的富文本...
Struts2是一个强大的Java web应用程序框架,用于构建和部署企业级的应用程序。它基于MVC(Model-View-Controller)设计模式,旨在简化开发过程,...通过学习和实践,开发者可以深入理解Struts2的工作原理和最佳实践。
Struts1是一款经典的Java Web开发框架,由Apache软件基金会开发并维护。它的核心设计目标是提供一个可扩展的架构,使开发者能够...了解并掌握Struts1的工作原理和机制,对于理解现代Web框架的设计思路有着重要的作用。
虽然现在更多的开发者转向了Struts2或其他更现代的框架,但理解Struts1.x的工作原理对于深入理解MVC模式和Web应用架构仍然是非常有价值的。通过深入学习,你可以更好地理解如何组织代码、管理用户交互,并提高你的...
本文将深入探讨Struts1的基本原理,帮助理解其架构设计和工作流程。 **1. MVC架构** MVC模式是软件工程中一种用于分离业务逻辑、数据和用户界面的设计模式。在Struts1中,Model代表应用程序的数据和业务逻辑,View...
在`myStruts`这个压缩包中,可能包含模拟Struts1流程所需的代码和配置文件,如ActionServlet的实现、Action类、ActionForm类、struts-config.xml以及展示结果的JSP页面。通过对这些文件的分析和实践,你可以更深入地...
3. **请求解析**: ActionServlet根据请求URL查找Struts-config.xml配置文件,找到对应的ActionMapping,然后创建一个ActionForm对象,将请求参数填充到ActionForm中。 4. **业务逻辑处理**: ActionServlet实例化并...
根据提供的文件信息,我们可以深入探讨Struts框架的工作原理及其组件之间的交互方式。Struts是一个用于构建企业级Java Web应用程序的开源MVC(Model-View-Controller)框架,它简化了Web应用的开发过程,并提供了...
1. **MVC模式**:Struts遵循MVC设计模式,将业务逻辑、数据模型和用户界面分离,使得代码更加可维护和可扩展。模型负责处理业务逻辑,视图负责展示数据,控制器则协调模型和视图的交互。 2. **Action类**:在Struts...
JSP页面上通过参数传递当前页码,由Struts2处理后返回相应的数据。 4. **jQuery与Ajax** jQuery是一个JavaScript库,简化了DOM操作和Ajax请求。在本案例中,我们可以使用jQuery的Ajax方法向服务器发送异步请求,...
Struts 是一个经典的Java Web应用程序框架,由Apache软件基金会维护。它的主要目的是通过实现MVC(Model-View-Controller)模式...对于初学者而言,理解这个框架的基本原理和组件间的交互关系是学习Struts的关键步骤。
4. **Preparation Phase**:在找到Action Mapping后,Struts2会进行预处理,包括填充Action实例的属性(如果请求参数与Action属性匹配),以及执行拦截器(Interceptor)。拦截器是Struts2的一个强大特性,允许在...