Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JSTL启动静态函数?如何读取字符串?_Java_Jsp_Jstl - Fatal编程技术网

Java 如何使用JSTL启动静态函数?如何读取字符串?

Java 如何使用JSTL启动静态函数?如何读取字符串?,java,jsp,jstl,Java,Jsp,Jstl,假设我有一门课是这样的: public class MyClass { private String name; public MyClass(final String name) { this.name = name; } public static void startMe() { //do something } public static String gimmeString() {

假设我有一门课是这样的:

public class MyClass {

    private String name;

    public MyClass(final String name) {
        this.name = name;
    }

    public static void startMe() {
        //do something
    }

    public static String gimmeString() {
        //do something
        return "myString";
    }

    public MyClass getObject(final String name) {
        //do something
        return new MyClass(name);
    }
}
首先,我想知道如何使用JSTL在MyClass类中启动函数“startMe”?没什么了,只需启动这个函数。然后,如何在函数“gimmeString”中启动和显示字符串。最后(是的,看起来很有趣)我想访问函数getObject(name)并将其保存在JSTL变量中(或者我以后可以使用这个对象的东西)

我只知道我需要豆子。在那之后,我不知道如何在JSTL中使用它,我有这样的东西:

<%@ 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>Insert title here</title>
</head>
<body>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="start" scope="session" class="com.MyClass"/>
<%-- and now? <c:?? --%>
</body>
</html>

在此处插入标题

如果不使用预处理servlet或像JSF这样的MVC框架,您就无法干净地做到这一点。
仅提供获取/设置模型值的工具。没别的了。它绝对不能取代MVC的控制器部分

您可以通过在getter中引入延迟加载或在setter中引入延迟执行来解决这个问题

例如,延迟加载:

public String getString() {
    if (string == null) {
        start();
    }

    return string;
}

或者,延迟执行:

public void setString(String string) {
    if (this.string == null) {
        start();
    }

    this.string = string;
}


请记住,这是一个丑陋的黑客。您应该真正研究servlet或MVC框架。如果你还是新手,从一个简单的servlet开始。另请参见一些hello world示例。注意,当您使用servlet时,您不再需要
和配偶了

您的具体功能需求实际上还不清楚。特别是在会话范围的bean中使用公共静态方法是令人困惑的。如果您确实想在webapp启动时调用方法,请使用。或者,如果要在创建会话时调用方法,请使用


哦,你的豆子设计不正确。它应该有一个(隐式的)无参数默认构造函数。

如果不使用预处理servlet或类似JSF的MVC框架,就无法干净地完成这项工作。
仅提供获取/设置模型值的工具。没别的了。它绝对不能取代MVC的控制器部分

您可以通过在getter中引入延迟加载或在setter中引入延迟执行来解决这个问题

例如,延迟加载:

public String getString() {
    if (string == null) {
        start();
    }

    return string;
}

或者,延迟执行:

public void setString(String string) {
    if (this.string == null) {
        start();
    }

    this.string = string;
}


请记住,这是一个丑陋的黑客。您应该真正研究servlet或MVC框架。如果你还是新手,从一个简单的servlet开始。另请参见一些hello world示例。注意,当您使用servlet时,您不再需要
和配偶了

您的具体功能需求实际上还不清楚。特别是在会话范围的bean中使用公共静态方法是令人困惑的。如果您确实想在webapp启动时调用方法,请使用。或者,如果要在创建会话时调用方法,请使用

哦,你的豆子设计不正确。它应该有一个(隐式的)无参数默认构造函数