第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

加了validate()方法后沒辦法登錄,報404錯

為什么加了validate()方法后沒辦法登錄?報錯:HTTP Status 404 - /imooc_sh/users/Users_login.jsp

正在回答

9 回答

默認validate()

輸出的錯誤信息會返回一個input 值。

所以struts.xml文件中需要定義一個結(jié)果為 input 的結(jié)果


解決方法1:就是加一條名為input的result


? ? <action name="*_*" class="action.{1}Action" method="{2}">

? ? <result name="login_success">/users/Users_login_success.jsp</result>

? ? <<result name="login_failure">/users/Users_login.jsp</result>

? ? <result name="logout_success">/users/Users_login.jsp</result>

? ? <result name="input">/users/Users_login.jsp</result>

? ? </action>


解決方法2: 將UsersAction中 login() 中?登陸失敗的返回值改為input ?還有對應(yīng)struts.xml文件中的result name也改為input ?

if(udao.usersLogin(user))

{

//在session中保存登陸成功的用戶名

session.setAttribute("loginUserName", user.getUsername());

System.err.println("成功");

return "login_success";

}

else

{

System.err.println(user.getUsername());

System.err.println(user.getPassword());

System.err.println(user.getUid());

// return "login_failure";

return "input"; ? //將登陸失敗的返回值改為input

}


? ? <action name="*_*" class="action.{1}Action" method="{2}">

? ? <result name="login_success">/users/Users_login_success.jsp</result>

? ? <result name="input">/users/Users_login.jsp</result><!-- 這條result的 name改為input-->

? ? <result name="logout_success">/users/Users_login.jsp</result>

? ? </action>


2 回復(fù) 有任何疑惑可以回復(fù)我~

同 Could not find action or result: /immoc_sh/users/Users_login.action

No result defined for action action.UsersAction and result input


0 回復(fù) 有任何疑惑可以回復(fù)我~

老師設(shè)下重重陷阱來考驗我們解決問題的能力啊

0 回復(fù) 有任何疑惑可以回復(fù)我~

真的解決了,我就說按照老師一步步配的怎么有問題呢。。。

0 回復(fù) 有任何疑惑可以回復(fù)我~

在做登錄驗證的時候老是報錯

Could not find action or result: /immoc_sh/users/Users_login.action

No result defined for action action.UsersAction and result input

是不是老師忘配置了

0 回復(fù) 有任何疑惑可以回復(fù)我~

你可以直接在login方法中判斷,在addFieldError()方法后需要return INPUT,在Struts2.xml中需要配置一個返回視圖,返回登錄頁面,如果你不寫return INPUT;,那么你可以重寫繼承ActionSupport的validate()方法,就是老師的案例,不需要return INPUT,也不需要在Struts2.xml中配置INPUT視圖.

public String login(){

//當為true,即用戶名與密碼正確,返回登錄成功界面.

if(service.userLogin(user)){

this.session.setAttribute("loginUserName", user.getUsername());

return "login_success";

}

//如果提交的用戶名為空,則提供客戶端錯誤信息,前臺頁面中獲取該屬性.

else if(user.getUsername().trim()==null){

this.addFieldError("usernameError", "用戶名不能為空!");

return INPUT;

}

//如果提交的密碼長度少于6,則提供客戶端錯誤信息,前臺頁面中獲取該屬性.

else if(user.getPassword().length()<6){

this.addFieldError("passwordError","密碼長度不能少于6!");

return INPUT;

}

//如果填寫的用戶名與密碼不匹配,則返回登錄頁面.

else{

this.addFieldError("notAllowed","請輸入正確的用戶名與密碼!");

? ?return "login_failure";

? ? }

}


struts2.xml中:

<action name="*_*" class="com.own.action.{1}Action" method="{2}">

<interceptor-ref name="userStack"/>

<result name="login_success">/jsp/user/login_success.jsp</result>

<result name="login_failure">/jsp/user/login.jsp</result>

<result name="logout_success">/jsp/user/login.jsp</result>

<result name="INPUT">/jsp/user/login.jsp</result>

</action>

或者使用老師的方式,重寫validate()方法:

public void validate(){

//如果提交的用戶名為空,則提供客戶端錯誤信息,前臺頁面中獲取該屬性.

?if(user.getUsername().trim()==null){

this.addFieldError("usernameError", "用戶名不能為空!");

}

//如果提交的密碼長度少于6,則提供客戶端錯誤信息,前臺頁面中獲取該屬性.

else if(user.getPassword().length()<6){

this.addFieldError("passwordError","密碼長度不能少于6!");

return INPUT;

}

}

全部手打,希望你能理解.

9 回復(fù) 有任何疑惑可以回復(fù)我~
#1

莊學爸

說錯了,使用老師的方法,也需要在Struts2.xml中配置INPUT視圖
2016-04-16 回復(fù) 有任何疑惑可以回復(fù)我~
#2

java家洼 回復(fù) 莊學爸

那為什么老師沒有配置input視圖,也沒有報錯呢?
2016-05-28 回復(fù) 有任何疑惑可以回復(fù)我~
#3

qq_難分真與假_03225671

最后老師的那個。void 方法不能返回值吧?
2016-12-21 回復(fù) 有任何疑惑可以回復(fù)我~
#4

莊學爸 回復(fù) java家洼

肯定配置了 你下載看看源碼就知道
2016-12-21 回復(fù) 有任何疑惑可以回復(fù)我~
#5

車車啊

改了好久都沒用,終于按你的改好了,必須點贊
2017-05-25 回復(fù) 有任何疑惑可以回復(fù)我~
查看2條回復(fù)

使用默認的validate()需要在struts.xml配置?

<result name="input">/users/Users_login.jsp</result>才能返回登錄頁面去顯示錯誤信息。


21 回復(fù) 有任何疑惑可以回復(fù)我~
#1

xb7420

請問為啥要這樣做呢,新手求解答?
2016-04-14 回復(fù) 有任何疑惑可以回復(fù)我~
#2

zhouwh

按這個方法解決問題了,但是不知道為什么要這樣
2016-09-11 回復(fù) 有任何疑惑可以回復(fù)我~

使用struts tages 需要在web.xml文件配置過濾器

這樣:

?<filter>
??<filter-name>struts</filter-name>
??<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
?</filter>
?<filter-mapping>
??<filter-name>struts</filter-name>
??<url-pattern>/*</url-pattern>
?</filter-mapping>

而不是這樣:

<filter>
??<filter-name>struts2</filter-name>
??<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
?</filter>
?<filter-mapping>
??<filter-name>struts2</filter-name>
??<url-pattern>*.action</url-pattern>
?</filter-mapping>


1 回復(fù) 有任何疑惑可以回復(fù)我~

404 未找到頁面,url路徑的問題,看看namespace ?action 和你xml配置的一不一樣,有可能是"/"多寫了 。使用默認的JSP頁面的時候 basepath 會在后面制動加上一個反斜線 。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

加了validate()方法后沒辦法登錄,報404錯

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號