为了账号安全,请及时绑定邮箱和手机立即绑定

为什么输入密码正确才能访问如果直接访问action 出现错误,密码输错也会报错

public class LoginAction extends ActionSupport implements SessionAware{
private String username;
private String password;
 private Map<String,Object> session;
 /*
  * 该方法是获取session对象
  * (non-Javadoc)
  * @see org.apache.struts2.interceptor.SessionAware#setSession(java.util.Map)
  */
@Override
public void setSession(Map<String, Object> session) {
// TODO Auto-generated method stub
this.session=session;
}
         public String login(){
           if("admin".equals(username) && "123".equals(password)){
           	session.put("username",username);
           	return SUCCESS;
           }
           else{
           	session.put("usernameerror","用户名输入不正确");
           	return ERROR;
           }
         }
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;
}

         
}
<?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>
    <package name="default" namespace="/" extends="struts-default">
    <interceptors>
    <interceptor name="LoginInteceptor" class="com.inteceptor.LoginInteceptor"></interceptor>
    </interceptors>
    <action name="auth">
<result>/WEB-INF/page/user.jsp</result>
<result name="login">/index.jsp</result>
<!-- 引用自定义的拦截器 -->
<interceptor-ref name="LoginInteceptor"></interceptor-ref>

</action>

      <action name="LoginAction" method="login" class="com.action.LoginAction">
      
      <result>/WEB-INF/source/user.jsp</result>
      <result name="ERROR">/index2.jsp</result>
      
      </action>
    </package>
</struts>
public class LoginInteceptor extends AbstractInterceptor {

	

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		//获取用户上下文
		ActionContext context=ActionContext.getContext();
		Map<String,Object> session=context.getSession();
		if(session.get("username")!=null){
			String result=invocation.invoke();
			System.out.println(result);
			return result;
		}
		else{
			return "login";
		}
		
	}

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


正在回答

2 回答

 <interceptors>

    <interceptor name="LoginInteceptor" class="com.inteceptor.LoginInteceptor"></interceptor>

    </interceptors>

改成

<interceptors>

<interceptor name="LoginInteceptor" class="com.inteceptor.LoginInteceptor"></interceptor>

<interceptor-stack name="my">

<interceptor-ref name="defaultStack"></interceptor-ref>

<interceptor-ref name="LoginInteceptor"></interceptor-ref>

</interceptor-stack>

</interceptors>


<interceptor-ref name="LoginInteceptor"></interceptor-ref>改成

<interceptor-ref name="my"></interceptor-ref>

0 回复 有任何疑惑可以回复我~
#1

丶子非鱼 提问者

没有就会这样吗
2017-05-16 回复 有任何疑惑可以回复我~

是不是自定义拦截器栈时没有引用defaultStack?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么输入密码正确才能访问如果直接访问action 出现错误,密码输错也会报错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信