20170712
1、/Struts2_1100_SimpleDataValiation
注意点:
一:加载web工程,第一个访问web.xml文件;如果存在filter和filter-mapping,看url-parttern,为/ *;
二:然后去/Struts2_1100_SimpleDataValiation/src/struts.xml文件中查看是否存在namespace为”/”(namespace的默认为”“)的action;
存在则访问,不存在则访问web.xml文件中的welcome-file-list;
三:struts.xml文件的访问方式为:namespace+action;根据result决定访问哪一个结果,result可不写,默认为SUCCESS(“success”);
四:struts.xml文件的访问class可根据属性决定,会访问action层(C:controller);
五:该层有三种实现方式:
第一种:任意一个类,存在execute()方法
第二种:implement Action 接口,并且@override execute() 方法;
第三种:extend ActionSupport类,重写该方法; 第三种最常用。
六:在struts.xml文件中,可自定义访问的方法:,并可相应的extend ActionSupport类之后写方法;
七:最长用的访问多个方法的是:DMI模式- - >动态调用。无需配置method,直接在JSP页面:通过”!”+method()
<a href="user/userAdd?user.name=123&user.age=50">路径说明</a> <br> 静态
<a href="user/user!add?user.name=arvin&user.age=25">第二个</a> 动态,
传参数:?user.name=arvin&user.age=25即可。href后面是绝对路径:需进行如下配置:
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
并在head中添加:
<base href="<%=basePath%>">
八:Action类可通过DemainModel(域模型)的方式,减少耦合性:建立模型类User
public class UserAction extends ActionSupport {
private User user;
public String add() {
System.out.println(user.getAge());
System.out.println(user.getName());
if (user.getName() == null || !(user.getName() == "admin")) {
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");
System.out.println(ERROR);
return "error";
}
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
在进行数据校验,需要this.addFieldError(“name”, “name is error”) 方法;
九:在相应JSP页面,进行参数显示:首先,配置struts标签:/META-INF/struts-tags.tld文件中可看到
<%@taglib uri=”/struts-tags” prefix=”s” %>
然后在body中:
<s:fielderror fieldName="name" theme="simple"/> struts固定模式
<br />
<s:property value="errors.name[0]"/> 自定以显示,errors的存储方式是Map,key是name,value是value,故errors.name是数组,去第0个元素
<s:debug></s:debug> 显示debug,debug是stack模式。
十:进行分析时,观察链接,然后去找。