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&#61;"user/userAdd?user.name&#61;123&user.age&#61;50">路径说明a> <br> 静态
<a href&#61;"user/user!add?user.name&#61;arvin&user.age&#61;25">第二个a> 动态&#xff0c;
传参数&#xff1a;?user.name&#61;arvin&user.age&#61;25即可。href后面是绝对路径&#xff1a;需进行如下配置&#xff1a;
<%String path &#61; request.getContextPath();String basePath &#61; request.getScheme()&#43;"://"&#43;request.getServerName()&#43;":"&#43;request.getServerPort()&#43;path&#43;"/";%>
并在head中添加&#xff1a;
<base href&#61;"<%&#61;basePath%>">
八&#xff1a;Action类可通过DemainModel(域模型)的方式&#xff0c;减少耦合性&#xff1a;建立模型类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() &#61;&#61; null || !(user.getName() &#61;&#61; "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 &#61; user;}}
在进行数据校验&#xff0c;需要this.addFieldError(“name”, “name is error”) 方法&#xff1b;
九&#xff1a;在相应JSP页面&#xff0c;进行参数显示&#xff1a;首先&#xff0c;配置struts标签&#xff1a;/META-INF/struts-tags.tld文件中可看到
<%&#64;taglib uri&#61;”/struts-tags” prefix&#61;”s” %>
然后在body中&#xff1a;
<s:fielderror fieldName&#61;"name" theme&#61;"simple"/> struts固定模式
<br />
<s:property value&#61;"errors.name[0]"/> 自定以显示&#xff0c;errors的存储方式是Map&#xff0c;key是name&#xff0c;value是value&#xff0c;故errors.name是数组&#xff0c;去第0个元素
<s:debug>s:debug> 显示debug&#xff0c;debug是stack模式。
十&#xff1a;进行分析时&#xff0c;观察链接&#xff0c;然后去找。