0
votes

I have a problem with calling Java method from .jsp file. I converted my project into Maven but still have the same problem.

My .jsp file is in /db-reagencii/WebContent/reagents/reagents.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="cz.dbReagents.web.reagentsWeb.ReagentsWeb"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Reagencie</title>
</head>
<body>
    <jsp:include page="../WEB-INF/menu/menu.jsp"/>
    Reagents

    <jsp:useBean id="podnikyWeb" class="cz.dbReagents.web.reagentsWeb.ReagentsWeb" scope="request"/>

</body>
</html>

and i want call method from this class

package cz.dbReagents.web.reagentsWeb;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;

import cz.dbReagents.dto.reagents.Reagents;


public class ReagentsWeb implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public Collection<Reagents> getReagents(){  
        ArrayList<Reagents> result = new ArrayList<Reagents>();
        result.add(new Reagents("testovaci reagencie",11));
        System.out.print(result.get(0).getName());
        return result;  
    }
}

and this class

package cz.dbReagents.dto.reagents;

import java.io.Serializable;

public class Reagents implements Serializable{

    private static final long serialVersionUID = 1L;


    private String name;
    private int sum;

    public Reagents(){

    }

    public Reagents(String name, int sum){
        this.name = name;
        this.sum = sum;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSum() {
        return sum;
    }

    public void setSum(int sum) {
        this.sum = sum;
    }
}

but when I tried to load page a got this error

VI 11, 2015 8:47:28 ODP. org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [jsp] in context with path [/db-reagencii] threw exception [/reagents/reagents.jsp (line: 17, column: 1) The value for the useBean class attribute cz.dbReagents.web.reagentsWeb.ReagentsWeb is invalid.] with root cause org.apache.jasper.JasperException: /reagents/reagents.jsp (line: 17, column: 1) The value for the useBean class attribute cz.dbReagents.web.reagentsWeb.ReagentsWeb is invalid. at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42) at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443) at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:149) at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1242) at org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1196) at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2392) at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2444) at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2450) at org.apache.jasper.compiler.Node$Root.accept(Node.java:474) at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2392) at org.apache.jasper.compiler.Generator.generate(Generator.java:3529) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:251) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:374) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:354) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:341) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)

Is there a chance that I have bad configured server?

I have web.xml in /db-reagencii/WebContent/WEB-INF/web.xml and contains this:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
   <display-name>Databáze Reagencií</display-name>
   <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>

</web-app>

I am using Tomcat 7.0.

This is my first web application in Java so I am sure that there is some stupid mistake but I can't find it.

Thanks for any advice :)

My error with scriplet.

VI 11, 2015 11:09:00 ODP. org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [jsp] in context with path [/db-reagencii] threw exception [Unable to compile class for JSP:

An error occurred at line: [14] in the generated java file: [/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.java] Only a type can be imported. cz.dbReagents.web.reagentsWeb.ReagentsWebHandler resolves to a package

An error occurred at line: [15] in the generated java file: [/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.java] Only a type can be imported. cz.dbReagents.dto.reagents.Reagents resolves to a package

An error occurred at line: 18 in the jsp file: /reagents/reagents.jsp ReagentsWebHandler cannot be resolved to a type 15: 16: Reagents 17: 18: <% ReagentsWebHandler r = new ReagentsWebHandler(); %> 19: 20: 21:

An error occurred at line: 18 in the jsp file: /reagents/reagents.jsp ReagentsWebHandler cannot be resolved to a type 15: 16: Reagents 17: 18: <% ReagentsWebHandler r = new ReagentsWebHandler(); %> 19: 20: 21:

Stacktrace:] with root cause org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: [14] in the generated java file: [/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.java] Only a type can be imported. cz.dbReagents.web.reagentsWeb.ReagentsWebHandler resolves to a package

An error occurred at line: [15] in the generated java file: [/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.java] Only a type can be imported. cz.dbReagents.dto.reagents.Reagents resolves to a package

An error occurred at line: 18 in the jsp file: /reagents/reagents.jsp ReagentsWebHandler cannot be resolved to a type 15: 16: Reagents 17: 18: <% ReagentsWebHandler r = new ReagentsWebHandler(); %> 19: 20: 21:

An error occurred at line: 18 in the jsp file: /reagents/reagents.jsp ReagentsWebHandler cannot be resolved to a type 15: 16: Reagents 17: 18: <% ReagentsWebHandler r = new ReagentsWebHandler(); %> 19: 20: 21:

Stacktrace: at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:485) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:379) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:354) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:341) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)

I got this error when I put only this lines into ragents.jsp

<%@ page import="cz.dbReagents.web.reagentsWeb.ReagentsWebHandler " %> <h1>Hello World</h1>

VI 11, 2015 11:14:05 ODP. org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [jsp] in context with path [/db-reagencii] threw exception [Unable to compile class for JSP:

An error occurred at line: [14] in the generated java file: [/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.java] Only a type can be imported. cz.dbReagents.web.reagentsWeb.ReagentsWebHandler resolves to a package

Stacktrace:] with root cause org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: [14] in the generated java file: [/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.java] Only a type can be imported. cz.dbReagents.web.reagentsWeb.ReagentsWebHandler resolves to a package

Stacktrace: at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:485) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:379) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:354) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:341) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)

When I deploy war files into tomcat i got this error

VI 11, 2015 11:50:18 ODP. org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextInitialized() VI 11, 2015 11:50:18 ODP. org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextInitialized() VI 11, 2015 11:50:18 ODP. org.apache.catalina.core.ApplicationContext log INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@68ccc170') VI 11, 2015 11:50:45 ODP. org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [jsp] in context with path [/db-reagencii] threw exception [Unable to compile class for JSP:

An error occurred at line: [14] in the generated java file: [/home/michal/apps/apache-tomcat-7.0.62/work/Catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.java] Only a type can be imported. cz.dbReagents.web.reagentsWeb.ReagentsWebHandler resolves to a package

Stacktrace:] with root cause org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: [14] in the generated java file: [/home/michal/apps/apache-tomcat-7.0.62/work/Catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.java] Only a type can be imported. cz.dbReagents.web.reagentsWeb.ReagentsWebHandler resolves to a package

Stacktrace: at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:485) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:379) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:354) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:341) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)

2
@GriffeyDog This is not the same as writing Java in JSP. Its actually great that a "jsp:useBean" concept is being used here. - Mecon

2 Answers

1
votes

you have an extra space before "page" in the JSP Import directive:

<%@page import="cz.dbReagents.web.reagentsWeb.ReagentsWeb"%>

It should be:

<%@ page import="cz.dbReagents.web.reagentsWeb.ReagentsWeb"%>

0
votes

I really hate using java sentences in JSP but if you want to do it this way, just modify your ReagentsWeb this way:

public class ReagentsWeb {

    public Collection<Reagents> reagents;

    public ReagentsWeb(){
        reagents = this.getReagents();
    }

    public Collection<Reagents> getReagents(){  
        ArrayList<Reagents> result = new ArrayList<Reagents>();
        result.add(new Reagents("testovaci reagencie",11));
        return result;  
    }

}

In your JSP do this:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="cz.dbReagents.web.reagentsWeb.ReagentsWeb"%>    
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Reagencie</title>
</head>
<body>
    <jsp:include page="../WEB-INF/menu/menu.jsp"/>
    Reagents

    <%
        for(Reagent r : reagents){
            out.println(r.getName());
        }
    %>

</body>
</html>