7.15学习struts2总结

//接口Action里面
public interface Action{
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN ="login";

public String execute() throws Exception;
}
//得到session
ActionContext.getContect.getSession.put("userName","芙蓉姐姐");
页面获得session里面的数据${sessionScope.userName};
当action设置了某个属性值后,struts2会把这些属性值封装到一个叫struts.valueStack的请求属性里面。
我们可以通过ValueStack vs = request.getAttribute("struts.valueStack");获取输出的全部信息
vs.findValue("属性名");得到输出信息里面的属性名的值。
//struts标签
<%@ taglib prefix ="s" uri="/struts_tags";%>//引入struts2标签库
<s:if><s:else>这点感觉比jstl强,jstl没有else,只能不停的<c:if>
<s:iterator>主要用于迭代输出某个集合元素的每个元素,相当于jstl里面的<c:ForEach>
ActionSuppport 实现了Action接口和Validatable接口(里面的validate方法可以校验数据)
//数据验证 重写validate方法
要进行数据校验,需要在action中重写validate方法.该方法在execute之前执行
public void validate(){
//用户名为空
if(userName =="" || userName.trim().equals("")){
addFieldErroe("userName","user.required");
}
}
在执行了validate方法以后Action的fieldErrors中已经包含了数据校验错误,请求将会被转发到input逻辑视图处,所以要重写validate方法做校验,一定要配input的视图
同时,我们不需要在页面上输出这个验证信息,前提是必须使用struts2的标签。
//struts2的标签
自定义标签
这个需要自己联系一下。。。。。。325页
struts2标签库没有分类只有一个标签库<s:XX>都定义在/struts—tags的命名空间下
struts2标签库也可以分为;
1、用户界面标签库  表单标签库和非表单标签库
2、非用户界面标签库 控制标签库和数据访问标签库
3、AJAX支持标签库

#parameters['foo'] 或者 #parameters.foo 可以用来访问HttpSevletRequest 的getParameter("foo")的返回值
#request['foo'] 或者 #request.foo 可以用来访问HttpSevletRequest 的getAttribute("foo")的返回值
#session['foo'] 或者 #session.foo 可以用来访问HttpSession 的getAttribute("foo")的返回值
#application['foo'] 或者 #application.foo 可以用来访问ServletContext 的getAttribute"foo")的返回值
<s:if test="'foo' in {'foo','bar'}"></s:if>指定集合包含foo元素
<s:if test="'foo' not in {'foo','bar'}"></s:if>指定集合不包含foo元素

还可以通过某个规则来取得集合元素:person.relatives.{? #this.male== 'male'}--取得person中所有性别为male的relative的集合
? 表示符合规则的全部集合$符合规则的最后一个^符合规则的第一个

你可能感兴趣的:(Ajax,struts)