JSTL 1.2 —The absolut uri: http://java.sun.com/jsp/jstl/core cannot be resolved

来源:互联网 发布:陕西师范网络教育官网 编辑:程序博客网 时间:2024/05/22 04:50
 


            最近做的一个ATM机项目,想使用jstl标签库来做一个重定向,来保证页面的安全性

index.jsp页面如下

<%@ page language="java" pageEncoding="utf-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">      </head>    <body>     <c:redirect url="redirect"></c:redirect>  </body></html>


web.xml如下:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <servlet>    <servlet-name>XFireServlet</servlet-name>    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>    <load-on-startup>0</load-on-startup>  </servlet>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>RedirectServlet</servlet-name>    <servlet-class>cn.com.jlau.lj.web.RedirectServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>XFireServlet</servlet-name>    <url-pattern>/services/*</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>RedirectServlet</servlet-name>    <url-pattern>/redirect</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>

RedirectServlet如下:

package cn.com.jlau.lj.web;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class RedirectServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);}}


报错为500,

<pre class="html" name="code">严重: Servlet.service() for servlet [jsp] in context with path [/ccb1] threw exception [The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application] with root causeorg.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this applicationat org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:56)at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:410)at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:117)at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:311)at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:152)at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410)at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475)at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1427)at org.apache.jasper.compiler.Parser.parse(Parser.java:138)at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)at org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1805)at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)at java.lang.Thread.run(Thread.java:619)


处理这类异常的一般方法:

1.检查servlet 版本在web.xml中 <?xml version ="2.5">

2.检查JSTL的版本是否支持这个servlet版本 2.5 -->1.2JSTL  或者 2.4-->1.1JSTL

3.你的servlet容器必须要有相应的库,或者你必须手动添加到你的应用程序。如:JSTL 1.2 需要添加JSTL 1.2 jar 到 lib目录下

 

发现我的servlet版本过低,而我的JSTL 1.2的,因此需要手动添加jar到lib下,才能运行!
 

1 1