Action的深入分析及ActionMapping的测试

当发出action请求时,Action被初始化,不是在读取配置信息时初始化,且每个Action只被初始化一次。

Action是线程不安全的,因为所有的请求共享一个action实例。

实现Action的安全性编程:

1.注意不要使用实例变量或静态变量共享只是针对某个请求的数据。

2.注意资源操作的同步性。

应用:统计action的请求次数

public class TestAction extends Action {

	private Integer count=0;
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		synchronized (count){
			count++;
		}
		
		PrintWriter out=response.getWriter();
		out.print("count=="+count);
		
		return null;
	}

ActionMapping的测试

<action-mappings>		
		<action path="/testAction" type="demo.TestAction" name="addStudentForm2">
			<forward name="addStudentSuccess2" path="/addStudentSuccess2.jsp"></forward>
			<forward name="addStudentFailure2" path="/addStudentFailure2.jsp"></forward>
		</action>
	</action-mappings>


public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String name=mapping.getName();
		String path=mapping.getPath();
		String type=mapping.getType();
		System.out.println("name="+name+"  path="+path+"  type="+type);
		String [] forwardsName=mapping.findForwards();
		for(String forwardName:forwardsName){
			ActionForward forward=mapping.findForward(forwardName);
			String forwardPath=forward.getPath();
			System.out.println("forward name="+forwardName+" path="+forwardPath);
		}<span style="font-family: Arial, Helvetica, sans-serif;">}</span>

name=addStudentForm2  path=/testAction  type=demo.TestAction
forward name=addStudentFailure2 path=/addStudentFailure2.jsp
forward name=addStudentSuccess2 path=/addStudentSuccess2.jsp

你可能感兴趣的:(Action的深入分析及ActionMapping的测试)