我有一個登錄頁面和一個登錄操作。當用戶登錄操作返回「成功」結果。並且它必須轉到另一個行動。但我得到以下錯誤:struts2結果所請求的資源不可用
HTTP Status 404 - /ESA/protected/admin/list
description The requested resource is not available.
這是我的struts.xml文件:
<action name="login" class="ir.imrasta.esa.ui.action.UserAction" method="login">
<result name="success">protected/admin/list</result>
<result name="failed">/login.jsp?login=failed</result>
</action>
<action name="/protected/admin/list" class="ir.imrasta.esa.ui.action.ManagerAction" method="list">
<result name="success">/protected/admin/list.jsp</result>
</action>
看到<result name="success">/protected/admin/list</result>
在上面的代碼。如果我改變它與一個JSP頁面,它工作正常。
更新2013年7月20日:
的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Educational System Application</display-name>
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>ir.imrasta.esa.ui.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/protected/*</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>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
的struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="languages" />
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"/>
<exception-mapping result="error" exception="ir.imrasta.esa.bll.exceptions.DataSourceException"/>
<exception-mapping result="error" exception="ir.imrasta.esa.bll.exceptions.DecryptionException"/>
</global-exception-mappings>
<action name="index">
<result>/index.jsp</result>
</action>
<action name="login" class="ir.imrasta.esa.ui.action.UserAction" method="login">
<result name="success">protected/admin/list</result>
<result name="failed">/login.jsp?login=failed</result>
</action>
<action name="/protected/admin/list" class="ir.imrasta.esa.ui.action.ManagerAction" method="list">
<result name="success">/protected/admin/home.jsp</result>
</action>
</package>
<!-- Add packages here -->
</struts>
loginFilter:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
HttpServletRequest req=(HttpServletRequest) request;
HttpSession session=req.getSession();
User user=(User)session.getAttribute(Constants.SESSION_USER);
if (user!=null){
chain.doFilter(request, response);
}else{
RequestDispatcher dispatcher=req.getRequestDispatcher("/login.jsp");
dispatcher.forward(request, response);
}
}
你應該發佈'web.xml',項目結構,而不難給你正確的答案。 –
我更新了我的帖子。這夠了嗎? –
不,現在您必須發佈'LoginFilter'的源代碼或將其從Web配置中移除並重新提出問題。 –