Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Не получается создать элементарную JSP страницу


Автор: 4epT 23.8.2010, 20:32
Добрый вечер! Написал по книге элементарную страницу:

Код

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<jsp:useBean id="date" class="java.util.Date" />


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <c:out value="Date: ${date}" />
    </body>
</html>


При выборе веб сервера выбрал Tomcat 6.0.

При запуске такой веб странице выдает вот такое:
Код

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
    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.generateTLDLocation(TagLibraryInfoImpl.java:315)
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:148)
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:386)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:449)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1396)
    org.apache.jasper.compiler.Parser.parse(Parser.java:130)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:185)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.




объясните пожалуйста что я не так делаю?) только начал изучать JSP

Автор: dobrolub 23.8.2010, 20:40
http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi

возьми оттуда binary 1.1.2 zip, раз-зипуй и скопируй файлы jakarta-taglibs-standard-1.1.2/lib/*.jar в папку WEB-INF/lib/ твоего приложения.


Автор: 4epT 23.8.2010, 21:03
Цитата(dobrolub @ 23.8.2010,  20:40)
http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi

возьми оттуда binary 1.1.2 zip, раз-зипуй и скопируй файлы jakarta-taglibs-standard-1.1.2/lib/*.jar в папку WEB-INF/lib/ твоего приложения.

а можешь объяснить в чем именно была ошибка? чего не хватало?

не помогло(

теперь вот такое

Код

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /index.jsp(22,8) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
    org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1209)
    org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:846)
    org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
    org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
    org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
    org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
    org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1763)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.


Автор: lazycat 23.8.2010, 22:03
Цитата(4epT @  23.8.2010,  20:32 Найти цитируемый пост)
объясните пожалуйста что я не так делаю?) только начал изучать JSP 


Я бы советовал на время отложить директивы и действия и попрактиковаться сначала с выражениями, скриптлетами и декларациями.

Автор: dobrolub 23.8.2010, 22:11
ах, другая ошибка теперь. Ты ведь код jsp поменял, кинь сюда новый.

Автор: 4epT 23.8.2010, 22:21
Цитата(dobrolub @ 23.8.2010,  22:11)
ах, другая ошибка теперь. Ты ведь код jsp поменял, кинь сюда новый.

jsp код не менял:
Код

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<jsp:useBean id="date" class="java.util.Date" />


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <c:out value="Date: ${date}" />
    </body>
</html>


Добавлено через 35 секунд
Цитата(lazycat @ 23.8.2010,  22:03)
Цитата(4epT @  23.8.2010,  20:32 Найти цитируемый пост)
объясните пожалуйста что я не так делаю?) только начал изучать JSP 


Я бы советовал на время отложить директивы и действия и попрактиковаться сначала с выражениями, скриптлетами и декларациями.

а что это такое?

Добавлено через 14 минут и 59 секунд
lazycat, прочитал про скриплеты и декларации. Спасибо большое, действительно лучше с этого начать =) Буду читать дальше ...

P.S. если можешь подкинь статей или курсов по JSP ... русскоязычных желательно =)

Автор: dobrolub 23.8.2010, 22:49
замени <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

на <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

посмотри на разницу для декларации тага out в jakarta-taglibs-standard-1.1.2/tld/c.tld и c-1.0.tld

Автор: 4epT 24.8.2010, 09:53
Цитата(dobrolub @ 23.8.2010,  22:49)
замени <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

на <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

посмотри на разницу для декларации тага out в jakarta-taglibs-standard-1.1.2/tld/c.tld и c-1.0.tld

Да, все заработало .... спасибо!
Но вот разницу я так и не понял. можешь объяснить?)

Автор: dobrolub 24.8.2010, 18:50
тут ты имеешь дело с двумя версиями библиотеки. В версии 1 ( ту которую ты использовал) нельзя использовать expressions (${foo}).

Когда ты поменял uri на ../jsp/jstl/core ты подключил вторую версию. Версия 2 уже принимает такие значения, надо смотреть в тлд <attribute>
        <name>value</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue> <------ сюда, (первая версия) во второй уже будет стоятъ true
    </attribute>

Автор: 4epT 24.8.2010, 20:35
Цитата(dobrolub @ 24.8.2010,  18:50)
тут ты имеешь дело с двумя версиями библиотеки. В версии 1 ( ту которую ты использовал) нельзя использовать expressions (${foo}).

Когда ты поменял uri на ../jsp/jstl/core ты подключил вторую версию. Версия 2 уже принимает такие значения, надо смотреть в тлд <attribute>
        <name>value</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue> <------ сюда, (первая версия) во второй уже будет стоятъ true
    </attribute>

Спасибо) Понял =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)