public class LoginAction extends ActionSupport { public String execute() { } }
在页面中添加如下代码
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
或者
在head标签中添加base标签
例如连接中这样写...../ userAction!execute
通配符调用action *可以是任何字符
!!使用通配符 可是使配置文件比较简单
例如:
public class UserAction extends ActionSupport { private User user; //private UserDTO userDTO; public String add() { System.out.println("name=" + user.getName()); System.out.println("age=" + user.getAge()); return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
在jsp页面中
当页面传递的参数与域模型,实体模型的属性不一一对应时,应当使用vo/do/dto模型接收页面传递的参数,处理之后根据这些模型生成实体类对象.
这里的vo/do/dto 只起到了数据传递的作用
action类中实现 public
源代码:
public class UserAction extends ActionSupport implements ModelDriven
public String add() {
if(name == null || !name.equals("admin")) {
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");
return ERROR;
}
return SUCCESS;
}
错误页面:
User Add Error!
public class LoginAction3 extends ActionSupport { private HttpServletRequest request; private HttpSession session; private ServletContext application; public LoginAction3() { request = ServletActionContext.getRequest(); session = request.getSession(); application = session.getServletContext(); } public String execute() { request.setAttribute("r1", "r1"); session.setAttribute("s1", "s1"); application.setAttribute("a1", "a1"); return SUCCESS; } }
1.实现action的最常用方式:从ActionSupport继承
2.DMI动态方法调用
3.通配符配置*_* {1}_{2}
4.接收参数的方法(!!一般使用action属性或者DomainModel来接收)
5.简单参数验证 addFieldErrro()方法
**一般不使用Struts2的UI标签,无法灵活处理错误信息
6.访问wed元素
7.包含文件配置 xml中 included 属性
8。默认action处理 struts.xml
*
即当无法找到对应的action时,执行actinName1这个action
Result的种类及使用:
前两个最常用!!
struts.xml
1.默认为dispatcher
2.redirect
以上两种常用
3.chain
4.redirectAction
global-results | extends
多个action共享一个result时,使用global-results ,当希望共享其他package里的global-results时,使用extends继承那个包
动态结果集,了解即可
在action设置一个属性,保存具体的result的值location,跳转的路径.然后在配置文件中使用${将该属性得到}
a)客户端传递才需要
b)${}表达式不是el,${}从valuestack中取值
1.通用标签:
a>property
b>set
i.默认为action scope,会将值放入 request 和 ActionContext中
ii.page,request,session,application
c>bean
d>include(对中文文件支持有问题,不建议使用,如需包含,改用jsp包含)
e>param
f>debug
2.控制标签
a>if elseif else
b>iterator
i.collections map enumeration iterator array
c>subset
3.UI标签
a>theme
i.simple xhtml(默认) css xhtml ajax
4.AJAX标签
a>补充
5.$#%的区别
a>$用于i18n 和 struts配置文件
b>#取得ActionContext的值
c>%将原来的文本属性解析为ognl,对于本来就是ognl的属性不起作用
i.参考