拦截器拦截非法访问

Action部分,BaseAction未给出,JdbcUtils未给出

package erchou;

import java.util.List;

import org.apache.struts2.ServletActionContext;

public class HelloAction extends BaseAction{
	private Admin admin;
	
    public Admin getAdmin() {
		return admin;
	}

	public void setAdmin(Admin admin) {
		this.admin = admin;
	}


	public String login(){
		Admin ad = null;
		try {
			ad = JdbcUtils.isAdmin(admin);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if(ad!=null){
			session.put("info", admin);
			return "success";
		}
    	return "wrong";
    }
	
	public String showList() {
		try {
			List list = JdbcUtils.getAdmin();
			
			requset.put("admins", list);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "showList";
	}
}

拦截器部分

package erchou;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class UserInterceptor extends AbstractInterceptor{
	public String intercept(ActionInvocation invocation) throws Exception {
		ActionProxy proxy = invocation.getProxy();
		String methodName = proxy.getMethod();
		ActionContext ac = invocation.getInvocationContext();
		if(!"login".equals(methodName)){
			Object object = ac.getSession().get("info");
			if(object==null){
				return "wrong";
			}else{
				return invocation.invoke();
			}
		}
		return invocation.invoke();
	}

}

主要配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
   <package name="xxxx" extends="struts-default">
        <interceptors>
           <interceptor name="loginCheck" class="erchou.UserInterceptor"></interceptor>
           <interceptor-stack name="myStack">
             <interceptor-ref name="defaultStack"></interceptor-ref>
             <interceptor-ref name="loginCheck"></interceptor-ref>
           </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="myStack"></default-interceptor-ref>
        <action name="login" class="erchou.HelloAction" method="login">
          <result name="wrong">/index.jsp </result>
          <result name="success" type="redirectAction">list</result>
          <result name = "showList">/showList.jsp</result>
        </action>
        <action name="list"  class="erchou.HelloAction" method="showList">
          <result name = "showList">/showList.jsp</result>
          <result name="wrong">/index.jsp </result>
        </action>
   </package>
</struts>

猜你喜欢

转载自blog.csdn.net/erchouchou/article/details/80867731