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。