我拿起了一個新創建的maven webapp項目,並且想要用它做最簡單的mvc應用程序。我的環境中看起來像這樣:絕對的uri:http://java.sun.com/jsp/jstl/core無法解析
<artifactId>spring-core</artifactId>
<artifactId>spring-test</artifactId>
<artifactId>spring-beans</artifactId>
<artifactId>spring-context</artifactId>
<artifactId>spring-aop</artifactId>
<artifactId>spring-context-support</artifactId>
<artifactId>spring-tx</artifactId>
<artifactId>spring-orm</artifactId>
<artifactId>spring-web</artifactId>
<artifactId>spring-webmvc</artifactId>
<artifactId>spring-asm</artifactId>
<artifactId>log4j</artifactId>
<artifactId>hibernate-core</artifactId>
<artifactId>hibernate-cglib-repack</artifactId>
<artifactId>hsqldb</artifactId>
<!-- particular arears-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- -->
<spring.version>3.0.5.RELEASE</spring.version>
<hibernate.version>3.6.1.Final</hibernate.version>
<hibernate-cglig-repack.version>2.1_3</hibernate-cglig-repack.version>
<log4j.version>1.2.14</log4j.version>
<javax-servlet-api.version>2.5</javax-servlet-api.version>
<hsqldb.version>1.8.0.10</hsqldb.version>
<mysql-connector.version>5.1.6</mysql-connector.version>
<slf4j-log4j12.version>1.5.2</slf4j-log4j12.version>
<slf4j-api.version>1.5.8</slf4j-api.version>
<javaassist.version>3.7.ga</javaassist.version>
<taglibs.version>1.1.2</taglibs.version>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-beta-1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
<finalName>admin-webapp</finalName>
</build>
<profiles>
<profile>
<id>endorsed</id>
<activation>
<property>
<name>sun.boot.class.path</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<!-- javaee6 contains upgrades of APIs contained within the JDK itself.
As such these need to be placed on the bootclasspath, rather than classpath of the
compiler.
If you don't make use of these new updated API, you can delete the profile.
On non-SUN jdk, you will need to create a similar profile for your jdk, with the similar property as sun.boot.class.path in Sun's JDK.-->
<compilerArguments>
<bootclasspath>${settings.localRepository}/javax/javaee-endorsed-api/6.0/javaee-endorsed-api-6.0.jar${path.separator}${sun.boot.class.path}</bootclasspath>
</compilerArguments>
</configuration>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
<tomcat.home>${env.CATALINA_HOME}</tomcat.home>
<web.context>${project.artifactId}</web.context>
</properties>
我的ApplicationContext已就這麼簡單:
<context:component-scan base-package="com.personal.springtest.admin.webapp" />
<mvc:annotation-driven />
web.xml中那麼簡單,所以:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<servlet>
<servlet-name>iwadminservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/project-admin-webapp-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>iwadminservlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
我的控制器,就像這樣:
@Controller
public class HomeController {
@RequestMapping(value="/")
public String Home(){
System.out.print("THIS IS a demo mvc, i think i like it");
// this is temporary, will use viewresolver when everything clears up
return "/views/home.jsp";
}
}
我的看法是:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
我得到的錯誤是
org.apache.jasper.JasperException:絕對URI:http://java.sun.com/jsp/jstl/core不能在web.xml或部署該應用
的jar文件來解決
問題1:我想知道,如果它是由於我使用的版本,我想我讀過一些關於在Tomcat中支持的版本,以及Java EE版本used.don't真正得到來來往往那是解決我的問題的一種方法。我怎樣才能解決這個問題?
問題2:http://localhot:8080/同時:這個錯誤我有代碼400,因爲我沒有將其指向正確views/home.jsp
,但我也注意到,當我運行NetBeans中的應用程序,它的網址打開瀏覽器之前我期待http://localhost:8080/admin-webapp/ admin-webapp成爲我的戰爭名稱。我相信這是一個問題,並希望解決它。
Tomcat的確根本不帶JSTL。閱讀更多在我們的JSTL維基頁面:http://stackoverflow.com/questions/tagged/jstl – BalusC 2011-04-14 04:19:15
感謝您的答案,關於問題的任何想法2。它似乎與我很多 – 2011-04-14 06:53:20