1. 程式人生 > >j2ee中,url直接進入jsp頁面,提示File "/struts-tags" not found

j2ee中,url直接進入jsp頁面,提示File "/struts-tags" not found

rg.apache.jasper.JasperException: File "/struts-tags" not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:160)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:431)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:494)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1444)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:154)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

經過多方查詢,因為本地是正常的,根目錄的Jsp也是正常的,只有子目錄會出現這個錯誤,基本排除jar包的問題。

可能是tomcat的配置問題。

在tomcat server.xml檔案中配置:

原配置:

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

修改後:

<Host name="localhost" appBase=""
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

<Context path="/" docBase="/usr/local/tomcat/webapps/ROOT

" reloadable="true"
caseSensitive="false" debug="0"></Context>
</Host>

因為專案放在ROOT裡,所有直接用ROOT,如果是webapps的其他專案,應該是/usr/local/tomcat/webapps/專案名

經過修改,成功轉向。

同時,也解決了jsp頁面下載txt的報錯,即java.lang.IllegalStateException: getOutputStream() has already been called for //this response
雖然網上很多說這個報錯是因為沒有加一下兩句out.clear();  out = pageContext.pushBody();  引起的,但在排除程式碼級的原因後,也很有可能是tomcat的配置問題。如果新增前面兩句仍是報錯,可能嘗試上面的tomcat配置修改方法。

除了上面的問題, 這個方法還能解決包括找不到 jstl 的錯誤。

親身試驗撰寫,希望能給自己和遇到相同問題的朋友一點幫助!