struts2——action,result学习

Action标签中可以使用method属性来指定执行哪个方法,也可以在URL弟子中动态指定(动态调用DMI——使用”!”来调用方法)

Action通配符:name=”名+*”  method中写{1},其中1代表name中第几个星。

Action有3中传递参数方法:一般使用model或者modelDriven来接收
1. URL传参。!方法?参数=值
2. URL model传参。!方法?对象.属性=?
像注册用户需要有确认密码属性时建个model类
Vo(value object) 值对象
Do(data object) 数据对象
Dto(date transfer object) 数据传输对象
3. URL modelDriven传参。实现ModelDriven接口,泛型调用相应model

小技巧:多个按钮提交同一个form表单
<form name="f" action="" method="post">
用户名:<input type="text" name="name"/>
密码:<input type="text" name="password"/>
<input type="button" value="submit1" onclick="javascript:document.f.action='login/login1';document.f.submit();" />
<input type="button" value="submit2" onclick="javascript:document.f.action='login/login2';document.f.submit();" />
<input type="button" value="submit3" onclick="javascript:document.f.action='login/login3';document.f.submit();" />
<input type="button" value="submit4" onclick="javascript:document.f.action='login/login4';document.f.submit();" />
</form>


获取request,session,application,HttpServletRequest,HttpSession,HttpContext对象四种:
//了解
1. 写在构造方法或者execute()方法中,都是map类型。
request = (Map)ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();
//只用这种
2.使用泛型map<String,Object>实现3个接口requsetAware,sessionAware,applicationAware三个接口。意思你实现这些接口代表你就应该知道request的存在。就是传给你了,可以直接使用。
//了解
3.继承ActionSupport类,是http类型。
private HttpServletRequest request;
	private HttpSession session;
	private ServletContext application;
	
	public LoginAction3() {
		request = ServletActionContext.getRequest();
		session = request.getSession();
		application = session.getServletContext();
	}

//了解
4. 继承ActionSupport类,实现ServletRequestAware接口。注入接收。
Include包含一个struts.xml文档。<include file="login.xml" />
采用解耦方式:ServletActionContext.getRequest()。
Result配置
常用类型:
1. dispatcher类型,默认类型。使用dispatcher类型其实就是由转发来完成页面的跳转。只能跳转到页面。后面的结果路径不能跳到action。
2. redirect只能跳转到视图,不能是action。
3. chain可以跳转到action。
4. 客户端跳转用redirectAction。

猜你喜欢

转载自yangmeng.iteye.com/blog/1508077