Struts登录验证(防止未登录进入)

来源:互联网 发布:网络分销系统发展趋势 编辑:程序博客网 时间:2024/05/20 18:53

整体结构目录
这里写图片描述
登录

<h2>登录页面</h2>    ${loginError }    <form action="login.action" method="post">        用户名:<input type="text" name="username" /> 密码:<input type="password"            name="password" /> <input type="submit" value="login" />    </form>

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts>    <constant name="struts.enble.DynamicMethodInvocation" value="false"></constant>    <constant name="struts.devMode" value="true"></constant>    <package name="default" namespace="/" extends="struts-default">        <!-- 注册拦截器 -->        <interceptors>            <interceptor name="auth" class="interceptor.AuthInterceptor"></interceptor>        <!-- 自定义拦截器栈 -->        <interceptor-stack name="myStack">        <interceptor-ref name="defaultStack"></interceptor-ref>        <interceptor-ref name="auth"></interceptor-ref>        </interceptor-stack>        </interceptors>        <!-- 通过此Action可以直接进入管理页面,需要判断用户是否已经登录 -->        <action name="auth">            <result>/WEB-INF/page/admin.jsp</result>            <result name="login">/login.jsp</result>            <!-- 引用自定义的拦截器栈 -->            <interceptor-ref name="myStack"></interceptor-ref>        </action>        <action name="login" class="action.LonginAction" method="login">            <result>/WEB-INF/page/admin.jsp</result>            <result name="error">/login.jsp</result>        </action>    </package></struts>    

LoginAction

package action;import java.util.Map;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionSupport;public class LonginAction extends ActionSupport implements SessionAware {    private String username;    private String password;    private Map<String, Object> session;    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;    }    @Override    public void setSession(Map<String, Object> session) {        this.session = session;    }    // 处理login请求    public String login() {        if ("admin".equals(username) && "123".equals(password)) {            session.put("loginInfo", username);            return SUCCESS;        } else {            session.put("loginError", "用户名or密码不正确");            return ERROR;        }    }}

AuthInterceptor

package interceptor;import java.util.Map;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class AuthInterceptor extends AbstractInterceptor {    @Override    public String intercept(ActionInvocation invocation) throws Exception {        ActionContext context = ActionContext.getContext();        Map<String, Object> session = context.getSession();        if (session.get("loginInfo") != null) {            String result = invocation.invoke();            return result;        } else {            return "login";        }    }}
0 0
原创粉丝点击