通過login.action訪問,并輸入了正確的用戶名和密碼也被攔截了
struts中只有名為athu的action引用了攔截器,
<?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="athu" class="com.zzy.interceptor.AthuInterceptor"></interceptor>
?? ?<interceptor-stack name="myStack">
?? ?<interceptor-ref name="athu"></interceptor-ref>
?? ?<interceptor-ref name="defaultStack"></interceptor-ref>
?? ?</interceptor-stack>
?? ?</interceptors>
?? ??? ?<action name="athu">
?? ??? ?<result name="success">/WEB-INF/pages/manager.jsp</result>
?? ??? ?<result name="login">/login.jsp</result>
?? ??? ?<interceptor-ref name="myStack"></interceptor-ref>
?? ??? ?</action>
?? ??? ?<action name="login" class="com.zzy.action.UserAction" method="login">
?? ??? ?<result name="success">/WEB-INF/pages/manager.jsp</result>
?? ??? ?<result name="login">/login.jsp</result>
?? ??? ?</action>
?? ?</package>
</struts>
public String login(){
?? ?
?? ?if("admin".equals(username)&&"admin".equals(password)){
?? ??? ?session.put("username",username);
?? ??? ?return ?? ?SUCCESS;
?? ?}else{
?? ??? ?session.put("login_error", "用戶名或密碼不正確");
?? ??? ?return "login";
?? ?}
?? ?}
public String intercept(ActionInvocation invocation) throws Exception {
?? ??? ?ActionContext actionContext=ActionContext.getContext();
?? ??? ?Map<String, Object> session=actionContext.getSession();
?? ??? ?if(session.get("username")!=null){
?? ??? ??? ?String result=invocation.invoke();
?? ??? ??? ?return result;
?? ??? ?}else{
?? ??? ??? ?return "login";
?? ??? ?}
?? ??? ?
?? ?}
2017-03-04
如果您那些基本配置,已經(jīng)Action類中的set/get方法都正確的話.我實在看不出您的代碼有那些錯誤!
幾點建議,你可以調(diào)下試試:1:把你配的攔截器放在跳轉(zhuǎn)上面,即?
?<interceptor-ref name="myStack"></interceptor-ref>
<result name="login">/login.jsp</result>
2:? ?return 建議加引號 SUCCESS;雖然hibernate內(nèi)置有返回對象了,但是保險點.? ? ? ??
2017-03-05
問題已解決,是因為login.jsp頁面的input元素忘記寫name屬性l,我也是在換域模型方法傳參數(shù)想在name的屬性加上對象名才發(fā)現(xiàn)根本沒有name屬性的,哎,最近注重邏輯代碼的編寫,竟然犯了這種低級錯誤,真是汗顏啊
2017-03-05
public String login(){
?? ??? ?System.out.println(username);
?? ??? ?System.out.println(password);
?? ?if("admin".equals(username)&&"admin".equals(password)){
?? ??? ?session.put("username",username);
?? ??? ?System.out.println(session.get("username"));
?? ??? ?return ?? ?"success";
?? ?}else{
?? ??? ?session.put("login_error", "用戶名或密碼不正確");
?? ??? ?System.out.println(session.get("login_error"));
?? ??? ?return "login";?? ?
?? ?}
這是我的調(diào)試過程,輸出結(jié)果竟然是這樣的
null
null
用戶名或密碼不正確
為什么沒有獲得用戶名和密碼呢,我set和get方法都有啊
2017-03-05
哎,我也不知道出什么問題了,你的辦法我也都試過了,好像就是判斷不對,把else{
?? ??? ?session.put("login_error", "用戶名或密碼不正確");
?? ??? ?return "login";
?? ?}的返回值改成 SUCCESS它又能正常跳轉(zhuǎn)到manager.jsp頁面啊,當然了,通過athu.action也不能跳轉(zhuǎn)成功,說明就是判斷不成功,session里沒有username屬性,難道編譯器出問題了。。。