Struts 整理

本文详细介绍了Struts框架的工作原理及运行流程,包括解析请求路径、获取ActionMapping、加载formBean、创建Action实例以及执行业务逻辑的过程。此外,还讨论了如何利用Struts简化表单验证和数据填充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts配置文件节点说明:


通过源代码了解struts运行路径:

1:解析请求路径得到path

Path=request.getServletPath();

2:根据path得到一个ActionMapping

封装一个action节点的所有信息,包括子节点信息,如:forwoard

3:得到formBean

a.在scope指向的范围内寻找,名字以attribute为准:

ActionForm actionForm = null; HttpSesseion session = null ; if(“request”.equals(scope)){ actionForm = (ActionForm)request.getAttribute(“attribute”); }else{ Session = request.getSession(); actionForm = (ActionForm)session.getAttribute(“attribute”); } return actionForm;

b.如果找到返回,没有找到创建,为了效率把formBean放到scope所指向的范围内;

if(“request”.equeals(mapping.getScope())){ request.setAttribute(mapping.getAttribute(),actionForm); }else{ session = request.getSession(); session.setAttribute(mapping.getAttribute(),actionForm); }

c.调用formBean的reset方法(重置),因为此formBean可能是从request或session范围中取出的,还保留上次业务逻辑的数据

d.根据请求参数给formBean赋值

a)Enumeration name =request.getParametersName();得到客户端请求参数名的集合;

b)循环每个名称并求parmeterValue= request.getParameterValues(“name”);

c)BeanUtils.populate(bean,properties);给formBean赋值。

4.得到ActionBean

Action action = null ; Synchronized(action){ action = (Action)action.get(className); if(action != null){ if(log.isTraceEnabled()){ log.trace(“returnint existint action instance”); } rturn action; } ation.setServlet(this.servlet); actions.put(className,action); }

5.调用actionBean的exectue方法,返回ActionForward对象

6.请求转发或者重定向到指定的新页面


formBean验证用户名和密码不为空(与js在客户端验证有别):重写validate方法:

实体Bean作为formBean的属性

1.用struts时,当formBean中有多个字段,为了减小冗余 将用到类:BeanUtils,这样就可以将一系列的set方法 删掉了 如:

Struts-DispatchAction(为了解决action数目过多的问题)

使用步骤:

1:


扩展RequestProcessor(类似于过滤器)

1.继承至RequestProcessor类,重写prcessPreprocess方法(方法返回true则继续运行(创 建actionMapping,formBean等…))


1.配置一个controller节点(下面的配置(控制器、资源文件、插件)位置不能调换)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值