You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by John Najarian <j-...@earthlink.net> on 2004/09/05 17:23:49 UTC

Trouble getting examples to work

I'm trying some of the examples from the

http://java.sun.com/developer/technicalArticles/javaserverpages/JSP20/ site.

 

Trying the 1 below the error message I get:

Anyone have any ideas?  Thanks

 


HTTP Status 500 - 

  _____  


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://jakarta.apache.org/tomcat/jsp2-example-taglib %>
 
<HEAD>
<TITLE>Functions</TITLE>
</HEAD>
 
<BODY>
 
<H3>Add Numbers</H3>
<P>
<FORM action= cannot be resolved in either web.xml or the jar files deployed
with this application
 
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.
java:50)
 
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409
)
 
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:118
)
 
org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibrary
InfoImpl.java:316)
 
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java
:147)
 
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)
        org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)
        org.apache.jasper.compiler.Parser.parseElements(Parser.java:1539)
        org.apache.jasper.compiler.Parser.parse(Parser.java:126)
 
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:22
0)
 
org.apache.jasper.compiler.ParserController.parse(ParserController.java:101)
        org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:203)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
 
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5
11)
 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:2
95)
 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache
Tomcat/5.0.27 logs.

 

 

Figure 2: Handling forms 


Developing and Using Functions


The expression language allows you to define functions that can be invoked
in an expression. Functions must be programmed as a public static method in
a public class. Once the function is developed, its signature is mapped in a
Tag Library Descriptor (TLD). 

To illustrate the use of functions, I use a simple example to add two
numbers. First we write the Java code for the method to add two numbers.
Code Sample 3 shows a static method that accepts two Strings, parses them to
integers, and returns their sum. 

Code Sample 3: Compute.java 


package jsp2.examples.el;
 
import java.util.*;
 
public class Compute {
   public static int add(String x, String y) {
      int a = 0;
      int b = 0;
      try {
        a = Integer.parseInt(x);
        b = Integer.parseInt(y);
      }catch(Exception e) {} 
      return a + b;
   }
}





Once this is successfully compiled using javac, the next step is to map the
function's signature in the tag library. Code Sample 4 shows how to map the
add function to the class containing the implementation of the function and
the signature of the function. I will tell you where to add this later. 

Code Sample 4: Function Descriptor 


    <function>
        <description>add x and y</description>
        <name>add</name>
        <function-class>jsp2.examples.el.Compute
            </function-class>
        <function-signature>int
            add(java.lang.String,java.lang.String)
                </function-signature>
    </function>





Now, we can write the JSP page that uses the function. Code Sample 5 shows a
form with two fields. The user enters two numbers and when the "Add Numbers"
button is clicked, the function is called to add the numbers. The result is
displayed on the same page. 

Code Sample 5: math.jsp 


<%@ taglib prefix="my" 
    uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %>
 
<HEAD>
<TITLE>Functions</TITLE>
</HEAD>
 
<BODY>
 
<H3>Add Numbers</H3>
<P>
<FORM action="/developer/technicalArticles/javaserverpages/JSP20/math.jsp"
method="GET">
   X = <input type="text" name="x" value="${param["x"]}">
   <BR>
   Y = <input type="text" name="y" value="${param["y"]}">
   <input type="submit" value="Add Numbers">
</FORM>
 
<P>
The sum is: ${my:add(param["x"],param["y"])}
 
</BODY>
</HTML>





To run this example: 

1.	Copy Compute.java and save it at:
C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\classes\jsp2\examples\el
2.	Compile Compute.java using javac
3.	Edit the file
C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\jsp2\jsp2-example-taglib.tld and
append the snippet of code in Code Sample 4 after the last </function> in
the file and before </taglib>
4.	Copy math.jsp to c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial
5.	Request the jsp file math.jsp from a web browser

If all goes well, you should see something similar to Figure 3. 



 


RE: Trouble getting examples to work

Posted by John Najarian <j-...@earthlink.net>.
I figured out the uri was incorrect.  Sorry to have bothered everyone with
an oversight.

 

Also, the line in math.jsp was incorrect

<FORM action="/developer/technicalArticles/javaserverpages/JSP20/math.jsp"
method="GET">

and should have been

<FORM action="/jsp-examples/jsp2-tutorial/math.jsp" method="GET">

 

-----Original Message-----
From: John Najarian [mailto:j-najarian@earthlink.net] 
Sent: Sunday, September 05, 2004 8:24 AM
To: 'Tomcat Users List'
Subject: Trouble getting examples to work

 

I'm trying some of the examples from the

http://java.sun.com/developer/technicalArticles/javaserverpages/JSP20/ site.

 

Trying the 1 below the error message I get:

Anyone have any ideas?  Thanks

 


HTTP Status 500 - 

  _____  


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://jakarta.apache.org/tomcat/jsp2-example-taglib %>
 
<HEAD>
<TITLE>Functions</TITLE>
</HEAD>
 
<BODY>
 
<H3>Add Numbers</H3>
<P>
<FORM action= cannot be resolved in either web.xml or the jar files deployed
with this application
 
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.
java:50)
 
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409
)
 
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:118
)
 
org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibrary
InfoImpl.java:316)
 
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java
:147)
 
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)
        org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)
        org.apache.jasper.compiler.Parser.parseElements(Parser.java:1539)
        org.apache.jasper.compiler.Parser.parse(Parser.java:126)
 
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:22
0)
 
org.apache.jasper.compiler.ParserController.parse(ParserController.java:101)
        org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:203)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
 
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5
11)
 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:2
95)
 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache
Tomcat/5.0.27 logs.

 

 

Figure 2: Handling forms 


Developing and Using Functions


The expression language allows you to define functions that can be invoked
in an expression. Functions must be programmed as a public static method in
a public class. Once the function is developed, its signature is mapped in a
Tag Library Descriptor (TLD). 

To illustrate the use of functions, I use a simple example to add two
numbers. First we write the Java code for the method to add two numbers.
Code Sample 3 shows a static method that accepts two Strings, parses them to
integers, and returns their sum. 

Code Sample 3: Compute.java 


package jsp2.examples.el;
 
import java.util.*;
 
public class Compute {
   public static int add(String x, String y) {
      int a = 0;
      int b = 0;
      try {
        a = Integer.parseInt(x);
        b = Integer.parseInt(y);
      }catch(Exception e) {} 
      return a + b;
   }
}

 

Once this is successfully compiled using javac, the next step is to map the
function's signature in the tag library. Code Sample 4 shows how to map the
add function to the class containing the implementation of the function and
the signature of the function. I will tell you where to add this later. 

Code Sample 4: Function Descriptor 


    <function>
        <description>add x and y</description>
        <name>add</name>
        <function-class>jsp2.examples.el.Compute
            </function-class>
        <function-signature>int
            add(java.lang.String,java.lang.String)
                </function-signature>
    </function>

 

Now, we can write the JSP page that uses the function. Code Sample 5 shows a
form with two fields. The user enters two numbers and when the "Add Numbers"
button is clicked, the function is called to add the numbers. The result is
displayed on the same page. 

Code Sample 5: math.jsp 


<%@ taglib prefix="my" 
    uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %>
 
<HEAD>
<TITLE>Functions</TITLE>
</HEAD>
 
<BODY>
 
<H3>Add Numbers</H3>
<P>
<FORM action="/developer/technicalArticles/javaserverpages/JSP20/math.jsp"
method="GET">
   X = <input type="text" name="x" value="${param["x"]}">
   <BR>
   Y = <input type="text" name="y" value="${param["y"]}">
   <input type="submit" value="Add Numbers">
</FORM>
 
<P>
The sum is: ${my:add(param["x"],param["y"])}
 
</BODY>
</HTML>

 

To run this example: 

1.      Copy Compute.java and save it at:
C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\classes\jsp2\examples\el

2.      Compile Compute.java using javac

3.      Edit the file
C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\jsp2\jsp2-example-taglib.tld and
append the snippet of code in Code Sample 4 after the last </function> in
the file and before </taglib>

4.      Copy math.jsp to c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial

5.      Request the jsp file math.jsp from a web browser

If all goes well, you should see something similar to Figure 3.