当前位置: 首页 > 知识库问答 >
问题:

从JSP文件调用Java方法

公良英资
2023-03-14

我在从.jsp文件调用Java方法时遇到问题。我将我的项目转换为Maven,但仍然存在同样的问题。

我的.jsp文件位于/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>

并且我想从这个类中调用方法

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;  
    }
}

而这个类

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;
    }
}

但当我尝试加载a页时,出现了这个错误

VI 11,2015年8:47:28 ODP。StandardWrapperValve调用严重:路径为[/db-ReagenCII]的上下文中servlet[jsp]的servlet.service()引发异常[/reagents/Reagents.jsp(行:17,列:1)useBean类属性cz.dbreagents.web.Reagentsweb.ReagentsWeb的值无效。]对于根原因org.apache.jasper.jasperException:/reagents/reagents.jsp(行:17,列:1),useBean类属性cz.dbreagents.web.reagentsweb.reagentsweb的值无效。在org.apache.jasper.compiler.defaulterrorhandler.java:42)在org.apache.jasper.compiler.errordispatcher.dispatch(errordispatcher.java:443)在org.apache.jasper.compiler.errordispatcher.jsperror(errordispatcher.java:149)在org.apache.jasper.compiler.generator.jsper.generator.jisitor.visit(generator.java:1242)在.apache.jasper.compiler.compile(compiler.java:341)在org.apache.jasper.jspcompilationcontext.compile(jspcompilationcontext.java:662)在org.apache.jasper.servlet.jspserver.service(jspservletrapper.java:364)在org.apache.jasper.server.jspserver.service(jspservlet.java:395)在org.apache.jasper.server.jspserver.service(jspservlet.java:339)在talina.core.StandardContextValve.Invoke(StandardContextValve.Java:122)在org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.Java:505)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:170)在org.apache.catalina.valves.ErrorReportValve.invoke(StandardHostValve.Java:103)在VA:615)在org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)在java.lang.thread.run(thread.java:745)

是否有可能配置错误的服务器?

我在/db-reagencii/webcontent/web-inf/web.xml中有web.xml并包含以下内容:

<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>

我正在使用Tomcat7.0。

这是我在Java的第一个web应用程序,所以我肯定有一些愚蠢的错误,但我找不到它。

谢谢您的任何建议:)

我对Scriplet的错误。

VI 11,2015年11:09:00 ODP。StandardWrapperValve调用Severe:路径为[/db-ReagenCII]的上下文中servlet[jsp]的servlet.service()引发异常[无法为jsp编译类:

在生成的Java文件[/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.]的第[14]行处出错。只能导入一个类型。cz.dbreagents.web.ReagentsWeb.ReagentsWebHandler解析为包

在生成的Java文件[/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.]的第[15]行处出错。只能导入一个类型。cz.dbreagents.dto.reagents.reagents解析为包

jsp文件:/Reagents/Reagents中第18行出错。jsp ReagentsWebHandler无法解析为类型15:16:Reagents17:18:<%ReagentsWebHandler r=new ReagentsWebHandler();%>19:20:21:

jsp文件:/Reagents/Reagents中第18行出错。jsp ReagentsWebHandler无法解析为类型15:16:Reagents17:18:<%ReagentsWebHandler r=new ReagentsWebHandler();%>19:20:21:

StackTrace:]根本原因为org.apache.jasper.JasperException:无法为JSP编译类:

在生成的Java文件[/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.]的第[14]行处出错。只能导入一个类型。cz.dbreagents.web.ReagentsWeb.ReagentsWebHandler解析为包

在生成的Java文件[/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.]的第[15]行处出错。只能导入一个类型。cz.dbreagents.dto.reagents.reagents解析为包

jsp文件:/Reagents/Reagents中第18行出错。jsp ReagentsWebHandler无法解析为类型15:16:Reagents17:18:<%ReagentsWebHandler r=new ReagentsWebHandler();%>19:20:21:

jsp文件:/Reagents/Reagents中第18行出错。jsp ReagentsWebHandler无法解析为类型15:16:Reagents17:18:<%ReagentsWebHandler r=new ReagentsWebHandler();%>19:20:21:

stacktrace:在org.apache.jasper.compiler.defaulterrorhandler.java.javaerror(defaulterrorhandler.java:103)在org.apache.jasper.compiler.jdtcompiler.javaerror(errordispatcher.java:366)在org.apache.jasper.compiler.jdtcompiler.generateClass(jdtcompiler.java:485)在org.apache.jasper.compiler.compile(compiler.java:379)在plicationfilterchain.java:208)在org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52)在org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241)在org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)在cthttp11processor.processor(abstracthttp11processor.:1079)在org.apache.coyote.abstractprotocol.Java:620)在org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.Java:316)在Java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.1145)在

当我只将这一行放入ragents.jsp中时,我得到了这个错误。

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

VI 11,2015年11:14:05 ODP。StandardWrapperValve调用Severe:路径为[/db-ReagenCII]的上下文中servlet[jsp]的servlet.service()引发异常[无法为jsp编译类:

在生成的Java文件[/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.]的第[14]行处出错。只能导入一个类型。cz.dbreagents.web.ReagentsWeb.ReagentsWebHandler解析为包

StackTrace:]根本原因为org.apache.jasper.JasperException:无法为JSP编译类:

在生成的Java文件[/home/michal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.]的第[14]行处出错。只能导入一个类型。cz.dbreagents.web.ReagentsWeb.ReagentsWebHandler解析为包

stacktrace:在org.apache.jasper.compiler.defaulterrorhandler.java.javaerror(defaulterrorhandler.java:103)在org.apache.jasper.compiler.jdtcompiler.javaerror(errordispatcher.java:366)在org.apache.jasper.compiler.jdtcompiler.generateClass(jdtcompiler.java:485)在org.apache.jasper.compiler.compile(compiler.java:379)在plicationfilterchain.java:208)在org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52)在org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241)在org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)在cthttp11processor.processor(abstracthttp11processor.:1079)在org.apache.coyote.abstractprotocol.Java:620)在org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.Java:318)在Java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.1145)在

当我将war文件部署到tomcat中时,我遇到了以下错误

VI 11,2015年11:50:18 ODP。ApplicationContext日志信息:ContextListener:contextInitialized()VI 11,2015 11:50:18 ODP.ApplicationContext日志信息:SessionListener:contextInitialized()VI 11,2015 11:50:18 ODP.ApplicationContext日志信息:ContextListener:attributeAdded(“org.apache.jasper.compiler.TLDLocationScache”,“org.apache.jasper.compiler.TLDLocationScache@68CCC170')VI 11,2015 11:50:45 ODP.StandardWrapperValve调用Severe:路径为[/db-ReagenCII]的上下文中servlet[jsp]的servlet.service()引发异常[无法为jsp编译类:

在生成的Java文件[/home/michal/apps/apache-tomcat-7.0.62/work/catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.]的第[14]行处出错,只能导入一个类型。cz.dbreagents.web.ReagentsWeb.ReagentsWebHandler解析为包

StackTrace:]根本原因为org.apache.jasper.JasperException:无法为JSP编译类:

在生成的Java文件[/home/michal/apps/apache-tomcat-7.0.62/work/catalina/localhost/db-reagencii/org/apache/jsp/reagents/reagents_jsp.]的第[14]行处出错,只能导入一个类型。cz.dbreagents.web.ReagentsWeb.ReagentsWebHandler解析为包

stacktrace:在org.apache.jasper.compiler.defaulterrorhandler.java.javaerror(defaulterrorhandler.java:103)在org.apache.jasper.compiler.jdtcompiler.javaerror(errordispatcher.java:366)在org.apache.jasper.compiler.jdtcompiler.generateClass(jdtcompiler.java:485)在org.apache.jasper.compiler.compile(compiler.java:379)在plicationfilterchain.java:208)在org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52)在org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241)在org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)在cthttp11processor.processor(abstracthttp11processor.:1079)在org.apache.coyote.abstractprotocol.Java:620)在org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.Java:318)在Java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.1145)在

共有2个答案

黎浩然
2023-03-14

我真的很讨厌在JSP中使用Java语句,但如果您想这样做,只需这样修改您的ReagentsWeb:

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;  
    }

}

在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

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

</body>
</html>
卫飞鹏
2023-03-14

在JSP Import指令中的“page”前面有一个额外的空格:

<%@page import=“cz.dbreagents.web.reagentsweb.reagentsweb”%>

应该是:

<%@page import=“cz.dbreagents.web.reagentsweb.reagentsweb”%>

 类似资料:
  • 问题内容: 是否可以在不使用HTML表单的情况下从JSP文件调用servlet? 例如,在页面加载期间在HTML表中显示数据库的结果。 问题答案: 你可以使用doGet()servlet 的方法来预处理请求并将请求转发到JSP。然后只需在链接和浏览器地址栏中指向servlet URL而不是JSP URL。 例如 请注意,JSP文件放置在/WEB-INF文件夹内,以防止用户无需调用servlet即可

  • 我试图实现一个基本的struts应用程序,其中我试图将一个字符串值从java文件传递给jsp。但是我在jsp页面中得到一个空值。我已经为此工作了2-3天,但我还没有弄清楚这个问题。请帮帮我 网状物xml struts配置。xml 看法jsp 第一jsp myAction.java 如何检查值是否从java文件传递到jsp?提前感谢您的帮助。

  • 谁能告诉我,除了RequestDispatcher之外,是否还有其他方法可以从我的servlet调用jsp页面?因为我试了很多都没有成功。 我的servlet工作正常,从JSP中恢复了所有数据。我所需要的只是在用户正确输入用户名和密码时被重定向到另一个页面。 我要为其重定向的jsp

  • 我已经做了相当多的研究,从我所看到的来看,我一切都是正确的。我试图在JSP文件中调用一个Java类。每次运行时,我都会出现以下错误:

  • 问题内容: 如何从外壳脚本内部执行Java方法? 问题答案: 您只能调用该方法。设计您的方法,使其调用所需的方法。 当我说 调用 方法时,您不会显式调用它。调用它是Java程序的唯一入口点。 如果您的班级看起来像: 您可以使用以下命令行在您可以找到的目录中调用from (如果您位于下面显示的结构的目录中): 如果要从其他目录(请参见下面的目录结构)执行此操作,则必须设置类路径。 为了清楚起见,请采

  • 我有一个用kotlin编写的库,我想在Java程序中使用它,但我不知道如何正确调用异步方法。 在Java中,我必须向函数传递什么参数?IntelliJ说我需要这样的东西: