Struts 整理

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方法:

Struts 整理_第1张图片

       实体Bean作为formBean的属性

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

Struts 整理_第2张图片

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

使用步骤:

1:

Struts 整理_第3张图片

Struts 整理_第4张图片


扩展RequestProcessor(类似于过滤器)

 

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


Struts 整理_第5张图片

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



你可能感兴趣的:(bean,session,struts,properties,action,Path)