struts2中直接訪問沒問題但是跳轉時報404錯誤的問題
阿新 • • 發佈:2019-02-03
index.jsp頁面: <jsp:forward page="student.action"></jsp:forward> 在struts.xml配置如下: <package name="struts2" extends="struts-dafult"> <action name="student" class="action.ShowAction"> <result name="studentInfo">/studentInfo.jsp</result> </action> </package> 在執行時出現404錯誤(找不到 student.action )
問題原因:
struts2攔截器把forward這個請求攔截了。
解決方法一:
修改web.xml檔案
<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> 修改為: <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> <span style="font-size:18px;color:#ff0000;">
<dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher> //增加對<jsp:include page="xxx.action"/>及其<s:include value="xxx.action"/>支援 </span> </filter-mapping>
解決方法二:
用javascript解決,讓請求執行到頁面時,接著執行如下的程式碼,發現頁面需要過載,然後就重新發送請求REQUEST,這樣當然就會被過濾器所截獲到了。
<script language="javascript">location.replace(URL)</script>
解決方法三:
利用html meta,等於也是讓頁面等待零秒重新整理頁面,重新發送請求,達到目的。
<meta http-equiv="refresh" content="0;URL=xxx.action">