- 浏览: 915096 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
先来整体的了解一下Struts的工作流程.
在实现一个基于Struts的运用之前我们首先是做环境设置,Struts正常工作需要至少两个
配置文件web.xml,struts-config.xml.
web.xml告诉App Server所有以.do结尾的请求最终提交给ActionServlet去处理。
2就规定ActionServlet是在App Server启动的时候
创建的并且一直存在。
ActionServlet在创建的时候会做如下的工作:
保存一些后面需要使用的实例在Attribute(内存)里面。
根据web.xml的配置解析struts-config.xml文件。
根据struts-config.xml的配置生成ActionMapping实例并且保存。
ActionServlet在生命周期就一直等待Http 请求
每一个.do结尾的Http 请求都由ActionServlet先截获然后根据请求路径得到具体调用那
一个Action去处理,在这之前生成、处理ActionForm。具体知道那一个Action去处理请求
后调用Action的execute()/perform()处理完成,返回。
=================================具体步骤细节============================
Struts配置过程:
1、配置struts
* 拷贝struts lib下的所有jar到WEB-INF/lib下
* 修改web.xml文件,配置ActionServlet
* 提供struts-config.xml文件
2、创建登录项目
* 创建jsp页面(login.jsp,login_success.jsp,login_error.jsp)
* 创建LoginActionForm.java
* 创建LoginAction.java
* 配置struts-config.xml文件
基于Struts的第一个项目执行流程分析:
login.jsp
method="post" action="login.do"
XML配置
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
struts-config.xml文件
<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.struts.LoginActionForm"/>
</form-beans>
<action-mappings>
<action
path="/login"
type="com.struts.LoginAction"
name="loginForm"
scope="request"
validate="false" >
<forward name="success" path="/login_success.jsp"/>
<forward name="error" path="/login_error.jsp"/>
</action>
</action-mappings>
</struts-config>
submit 提交
调用
ActionServlet.doPost();
调用 ActionServlet.process();
调用 RequestProcessor.process();
该方法中主要的操作:
1.执行 String path = processPath(request, response);//拿到URL HTTP://localhost:****/.../login.jsp中“/login” path="/login"
2. 执行 ActionMapping mapping = processMapping(request, response, path); //获取到struts-config.xml中<action>标签中数据并存放在ActionMapping对象中
3.执行 ActionForm form = processActionForm(request, response, mapping); //处理ActionFrom,对应LoginActionForm,即 new LoginActionForm对象
4.执行 processPopulate(request, response, form, mapping);//收集web页面表单数据 并将数据设置到from中
5. 执行 Action action = processActionCreate(request, response, mapping);//创建Action 即 new LoginAction对象
6. 执行 ActionForward forward =processActionPerform(request, response,action, form, mapping);//调用Action execute()
7.执行 processForwardConfig(request, response, forward);//转向
结束
RequestProcessor.process();方法中的具体实现
1.String path=processPath(request, response);
//拿到URL HTTP://localhost:****/.../login.jsp中“/login” 即:path="/login"
2.ActionMapping mapping = processMapping(request, response, path);
//获取到struts-config.xml中<action>标签中数据并存放在ActionMapping对象中
<action
path="/login"
type="com.struts.LoginAction"
name="loginForm"
scope="request"
validate="false" >
<forward name="success" path="/login_success.jsp"/>
<forward name="error" path="/login_error.jsp"/>
</action>
2.1.processMapping方法中通过 (ActionConfig)actionConfigs.get(path)
(注:path=“/login” 、 ActionMapping extends ActionConfig) 拿到ActionMapping对象
actionConfigs是一个HashMap 里面存放的key=path value= 实例化好的ActionMapping对象,
ActionMapping 是一个javaBean 包含...<action-mapping>中<action>参数信息name,type...
3. ActionForm form = processActionForm(request, response, mapping);
处理ActionFrom:
processActionForm方法中执行ActionForm instance =
RequestUtils.createActionForm(request, mapping, moduleConfig, servlet);
在createActionForm中执行String name = mapping.getName(); 拿到<action>中name="loginForm"
再执行FormBeanConfig config = moduleConfig.findFormBeanConfig(name);
看是否配置了actionform <form-beans> 没有配 return;配了就执行
findFormBeanConfig 方法中执行formBeans.get(name));拿到<form-beans>中相对应的配置信息
formBeans是一个HashMap 里面存放的key=name("loginForm")
value= 实例化好的FormBeanConfig对象, FormBeanConfig对应 <form-beans>中<form-bean>参数
再执行ActionForm instance = lookupActionForm(request, attribute, mapping.
getScope());查看scope域中是否有实例化好的ActionFrom,找到就返回,没找到就在session中 查找,找到就返回,再找不到就进行创建 同时将设置到scope中 返回
4.processPopulate(request, response, form, mapping);
收集表单数据并将数据设置到from中
processPopulate中调用RequestUtils.populate(form, mapping.getPrefix(), mapping.getSuffix(),request);收集数据
RequestUtils.populate方法中执行names = request.getParameterNames();拿到参数名username,password
将对应的值存放在HashMap properties中properties.put(stripped, parameterValue);
将值通过BenanUtiles 中的方法设置到form
BeanUtils.populate(bean, properties);(bean==form)
5. Action action = processActionCreate(request, response, mapping);
创建Action,对应该项目则是创建LoginAction
6. ActionForward forward =processActionPerform(request, response,action, form, mapping);
通过该方法执行Action中 execute()方法 并返回配置信息里的forward参数存放于ActionForward对象中
7.processForwardConfig(request, response, forward);
处理转向转向
String forwardPath = forward.getPath();//通过forward对象拿到转向路径
进行转向处理
结束
发表评论
-
struts1 vs struts2
2012-06-07 10:55 1061struts1 2001年6月发布str ... -
struts中通过action跳转到外网(框架页面)
2010-04-26 16:26 2302HttpSession session = arg2.getS ... -
struts中利用ExceptionHandler处理异常
2010-02-03 18:14 698在Struts1.X的版本中加入了对异常的处理 ... -
Struts+spring, 多模块Struts配置文件
2010-01-13 10:41 11731. web.xml ... <init-param&g ... -
struts1.2多模块开发
2010-01-13 10:24 1466一、多个配置文件的支持和模块的支持支持多个配置文件,是指你能够 ... -
struts1.2与spring整合手记
2010-01-12 16:51 1058相关文章: spring入门编程问题集锦 ... -
Struts action mapping (controller的inputforward属性)
2010-01-12 16:22 31301. Full action 这可以说是Struts ac ... -
Struts1.2 控制流程----面试时可用
2010-01-12 15:34 1081有的同学问我如何向面 ... -
深入Struts1.1(下)
2010-01-12 15:21 989在Struts 1.1中,除了DynaActionForm以外 ... -
深入Struts1.1(中)
2010-01-12 15:19 756ActionServlet 我们首先来 ... -
深入Struts 1.1(上)
2010-01-12 15:18 908作为基于MVC模式的Web应 ... -
一步一步学习 Struts
2009-11-05 16:22 816专栏: 一步一步跟我学Struts2 (17) 如何学习S ... -
Struts2 OGNL
2009-11-05 15:27 1261众所周知,Strut 2的Action类通过属性可以获得所有相 ... -
struts2验证信息重复出现解决方案
2009-10-17 10:33 1271今天遇到一个很蠢的问题,所以写下来给自己留个教训。 ... -
STRUTS2.0影射REST风格地址
2009-10-14 14:40 1061[摘要]: 介绍如何改写Struts2的Restful2Act ... -
strust2标签实践总结
2009-10-06 00:42 14391:输出action中属性值,在jsp页面中显示用:<s ... -
关于Spring , Struts结合学习
2009-09-30 13:28 875关于Spring , Struts结合学习。 一、前言 刚 ...
相关推荐
1. **MVC模式**:MVC是软件设计中的一个经典模式,Struts1.x实现了这一模式,将业务逻辑(Model)、用户界面(View)和控制流程(Controller)分离,提高了代码的可重用性和可维护性。Model处理数据,View负责显示,...
Struts1.x的工作流程较为固定,每个Action的执行都遵循一个预定的流程,从请求到达、调用Action到返回结果,整个过程相对单一。而Struts2.x则为每个Action提供了一个独立的工作流程,可以针对不同的Action配置不同的...
### Struts1.x 技术课程讲解 #### 一、Struts1.x 概述 ...通过以上内容的学习,学员将能够掌握 Struts1.x 的核心概念、工作原理及开发流程,进而能够独立开发基于 Struts1.x 的企业级 Web 应用程序。
在Struts1.x中,Controller由ActionServlet实现,它处理HTTP请求,并通过配置文件(struts-config.xml)调度Action类来执行特定的业务逻辑。 接下来,我们将逐步了解如何创建一个简单的Struts1.x应用: 1. **搭建...
这样,Struts1.x处理用户界面和业务流程,而Hibernate则专注于数据存储,两者结合提供了灵活且高效的开发解决方案。 **常见应用场景:** 这两个框架常用于构建企业级Web应用,如电商平台、CRM系统、内容管理系统等...
**Struts2.x与Struts1.x对比**:相较于Struts1.x,Struts2.x具有更多的优势,如不再强制要求ActionForm,配置文件更简洁,处理流程更加清晰。具体而言,请求首先被过滤器捕获,然后根据`struts.xml`文件的配置调用...
在Struts1.x中,JDBC(Java Database Connectivity)是常用于与数据库交互的技术,它允许开发者通过Java代码来执行SQL语句,实现数据的增删改查操作。下面将详细探讨Struts1.x框架结合JDBC进行数据库操作的知识点。 ...
Struts1.x是Apache软件基金会旗下Jakarta项目的一个核心组件,它是一款开源的MVC(Model-View-Controller)框架,用于构建企业级Java Web应用程序。这个框架在2000年代初非常流行,因其规范化的开发流程和强大的功能...
Struts1.x是Apache软件基金会开发的一个开源框架,主要用于构建基于Java的企业级Web应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理业务逻辑、视图展示...
Struts1.x是Apache软件基金会的开源项目,主要负责处理HTTP请求,管理业务逻辑和控制流程。它通过ActionForm来封装用户请求的数据,Action类处理这些数据并调用服务层方法,最后通过Result(ActionForward)决定...
《Struts2.0中文帮助手册.chm》将详细介绍Struts2的API、配置和使用技巧,而《Struts1.2.pdf》则可能包含了Struts1.x的框架原理、开发流程以及案例分析。通过学习这两本书,开发者可以深入理解这两个版本的Struts...
**Struts 1.x 框架详解** `Struts 1.x` 是 Apache 软件基金会(ASF)下的一个开源项目,是 Java Servlet 和 JavaServer Pages(JSP)平台上的一个MVC(Model-View-Controller)框架,主要用于构建企业级Web应用程序...
虽然在现代开发中,Struts1.x已经逐渐被Spring MVC等更现代的框架取代,但了解和理解其验证框架仍然有助于理解Web开发中的验证逻辑和流程。通过上述内容,你可以对Struts1.x的验证框架有一个基本的认识,并能着手...
Struts1.x提供了一套异常处理机制,可以捕获和处理Action执行过程中的异常,统一返回错误页面,增强程序的健壮性。 总结,Struts1.x作为早期流行的Java Web框架,它的设计思想和实现方式对后来的框架有着深远影响。...
通过这个实例,学习者可以了解Struts1.x的生命周期、请求处理流程以及如何将前端和后端有效地结合在一起。此外,还会涉及到异常处理、国际化、验证规则等进阶主题。这是一个非常好的起点,对于想要掌握Java Web开发...
Struts2.x提供了丰富的拦截器(Interceptor),这些拦截器可以对Action执行前后的流程进行定制,比如日志记录、权限验证、数据校验等。拦截器链使得业务逻辑的处理更加灵活和模块化。 配置方面,Struts2.x使用XML...
Struts1.x是一个非常经典的Java Web开发框架,它在企业级应用中被广泛使用。而Struts1.x的令牌机制(Token)则是防止重复提交、跨页请求攻击的重要手段。在此,我们将深入探讨Struts1.x令牌的使用方法及其背后的原理...
Struts1.x是一个非常经典的Java Web开发框架,它在2000年代初期极大地推动了MVC(模型-视图-控制器)模式在Web应用程序中的应用。本示例主要探讨Struts1.x的标签库使用,这个标签库是Struts框架提供的一套JSP标签,...
Struts1.x框架的处理流程大致如下: 1. 用户在视图(如JSP页面)中提交请求。 2. 请求到达ActionServlet,ActionServlet根据struts-config.xml配置找到对应的Action类。 3. Action类执行业务逻辑,与模型组件交互。 ...