課程
/后端開發(fā)
/Java
/使用Struts2+Hibernate開發(fā)學生信息管理功能
為什么加了validate()方法后沒辦法登錄?報錯:HTTP Status 404 - /imooc_sh/users/Users_login.jsp
2015-12-29
源自:使用Struts2+Hibernate開發(fā)學生信息管理功能 2-8
正在回答
默認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
? ? <result name="input">/users/Users_login.jsp</result><!-- 這條result的 name改為input-->
同 Could not find action or result: /immoc_sh/users/Users_login.action
No result defined for action action.UsersAction and result input
老師設(shè)下重重陷阱來考驗我們解決問題的能力啊
真的解決了,我就說按照老師一步步配的怎么有問題呢。。。
在做登錄驗證的時候老是報錯
Could not find action or result: /immoc_sh/users/Users_login.action
是不是老師忘配置了
你可以直接在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());
//如果提交的用戶名為空,則提供客戶端錯誤信息,前臺頁面中獲取該屬性.
else if(user.getUsername().trim()==null){
this.addFieldError("usernameError", "用戶名不能為空!");
return INPUT;
//如果提交的密碼長度少于6,則提供客戶端錯誤信息,前臺頁面中獲取該屬性.
else if(user.getPassword().length()<6){
this.addFieldError("passwordError","密碼長度不能少于6!");
//如果填寫的用戶名與密碼不匹配,則返回登錄頁面.
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){
全部手打,希望你能理解.
莊學爸
java家洼 回復(fù) 莊學爸
qq_難分真與假_03225671
莊學爸 回復(fù) java家洼
車車啊
使用默認的validate()需要在struts.xml配置?
<result name="input">/users/Users_login.jsp</result>才能返回登錄頁面去顯示錯誤信息。
xb7420
zhouwh
使用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>
404 未找到頁面,url路徑的問題,看看namespace ?action 和你xml配置的一不一樣,有可能是"/"多寫了 。使用默認的JSP頁面的時候 basepath 會在后面制動加上一個反斜線 。
舉報
Strust2+Hibernate整合開發(fā)案例,Java Web開發(fā)技能更上一層樓
2 回答加入驗證方法后, 輸入不合法的會報錯,
2 回答登錄報404,請問是什么原因?
3 回答validate 生效后,出錯
2 回答登錄后500錯誤
1 回答登錄界面無法跳轉(zhuǎn)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-09-17
默認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>
2016-09-17
同 Could not find action or result: /immoc_sh/users/Users_login.action
No result defined for action action.UsersAction and result input
2016-08-15
老師設(shè)下重重陷阱來考驗我們解決問題的能力啊
2016-07-17
真的解決了,我就說按照老師一步步配的怎么有問題呢。。。
2016-07-10
在做登錄驗證的時候老是報錯
Could not find action or result: /immoc_sh/users/Users_login.action
No result defined for action action.UsersAction and result input
是不是老師忘配置了
2016-04-16
你可以直接在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;
}
}
全部手打,希望你能理解.
2016-01-24
使用默認的validate()需要在struts.xml配置?
<result name="input">/users/Users_login.jsp</result>才能返回登錄頁面去顯示錯誤信息。
2016-01-03
使用struts tages 需要在web.xml文件配置過濾器
這樣:
而不是這樣:
2016-01-03
404 未找到頁面,url路徑的問題,看看namespace ?action 和你xml配置的一不一樣,有可能是"/"多寫了 。使用默認的JSP頁面的時候 basepath 會在后面制動加上一個反斜線 。