1.如何写Action类?
1)public String execute(){}
2) public String methodName(){}
3) extends ActionSupport
2.Action的方法,怎么样跟请求对应?
1)什么都不指定,默认调用Action的execute
2)在struts.xml action的method属性指定
3)在url中用!号指定 login!add.action (login为action名,add为action中的一个方法名)
4)用submit标签的method属性指定方法名称
5)在action用,用通配符自己适配、
3.Action中怎么获取作用域通讯对象
1)IOC
Struts2 (Action对象)
HttpServletRequest (Tomcat)
步骤:实现接口SessionAware,重写setSession()方法,在login中调用session.put("key","value");
- public class LoginAction extends ActionSupport implements SessionAware,
- ServletRequestAware {
- private String userName;
- private String password;
- private String message;
- private Map session = null;
- private HttpServletRequest request = null;
- /**
- * Action中如何获取作用域通讯对象 s1)IOC Struts2 (Action对象)
- * 步骤:实现接口SessionAware,重写setSession()方法,在login中调用session.put("key","value");
- * HttpServletRequest (Tomcat)
- * 实现接口ServletRequestAware接口,重写setServletRequest()方法 2)非IOC
- *
- */
- public String login() {
- String result = "success";
- message = "登录成功";
- System.out.println(userName + " " + password);
- if (userName == null || userName.equals("")) {
- result = "fail";
- message = "登录失败";
- } else {
- // 获取session
- // 在session中放一个用户登陆成功标记
- session.put("LOGIN_FLAG", userName);
- // 非IOC
- Map s1 = ActionContext.getContext().getSession();
- HttpServletRequest req = ServletActionContext.getRequest();
- }
- return result;
- }
- // 重写了SessionAware接口中的setSession方法
-
- public void setSession(Map<String, Object> arg0) {
- this.session = arg0;
- }
struts2将session用map为了:实现容器的解耦(测试时只需要在JUnit测试,只需要在Map中看有无值,否则需要在tomcat下测试)
2)非IOC
HttpServletRequest req = ServletActionContext.getRequest();
阅读(7161) | 评论(0) | 转发(0) |