struts2学习笔记十(第10讲.Struts2的核心 拦截器)
Struts2的核心 拦截器
一、修改RegisterAction.java类,在validate方法中添加一条错误信息语句this.addFieldError("username", "aaaaaaaaaaaaaaa");:
package com.test.action;import java.util.Calendar;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class RegisterAction extends ActionSupport {private String username;private String password;private String repassword;private int age;private Date birthday;private Date graduation;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getRepassword() {return repassword;}public void setRepassword(String repassword) {this.repassword = repassword;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public Date getGraduation() {return graduation;}public void setGraduation(Date graduation) {this.graduation = graduation;}@Overridepublic String execute() throws Exception {return SUCCESS;}//public String abc() throws Exception {////System.out.println("abc() method invoked");//return SUCCESS;//}////public void validateAbc(){////System.out.println("validateAbc() invoked");//}@Overridepublic void validate() {System.out.println("validate~~~~~~~~~~~~~~");this.addFieldError("username", "aaaaaaaaaaaaaaa");//if(null == username || username.length() < 6 || username.length() > 10){//this.addActionError("username invalid");//}//if(null == password || password.length() <6 || password.length() > 10){//this.addActionError("password invalid");//}//else if(null == repassword || repassword.length() < 6 || repassword.length() > 10){//this.addActionError("repassword invalid");//}//else if(!password.equals(repassword)){//this.addFieldError("password", "two passwords not the same");//}//if(age <= 0 || age > 150){//this.addActionError("age should be between 1 and 150");//}////if(null != birthday && null != graduation){//Calendar c1 = Calendar.getInstance();//c1.setTime(birthday);////Calendar c2 = Calendar.getInstance();//c2.setTime(graduation);////if(!c1.before(c2)){//this.addActionError("birthday should be before graduation");//}//}}}
package com.interceptor;public class Target implements TargetInterface{public void doSomething(){System.out.println("do something");}}
package com.interceptor;public interface TargetInterface {public void doSomething();}
package com.interceptor;public class Intercepoter {public void before(){System.out.println("before");}public void after(){System.out.println("after");}}
package com.interceptor;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class MyHandler implements InvocationHandler {private Object object;private Interceptor interceptor = new Interceptor();public void setObject(Object object){this.object=object;}public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {Object result = null;interceptor.before();result = method.invoke(object, args);interceptor.after();return result;}}
package com.interceptor;import java.lang.reflect.Proxy;public class MyProxy {public Object getProxy(Object object){MyHandler myHandler = new MyHandler();myHandler.setObject(object);return Proxy.newProxyInstance(Target.class.getClassLoader(), object.getClass().getInterfaces(), myHandler);}}
package com.interceptor;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class MyHandler implements InvocationHandler {private Object object;private Interceptor interceptor = new Interceptor();public void setObject(Object object){this.object=object;}public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {Object result = null;interceptor.before();result = method.invoke(object, args);interceptor.after();return result;}}