gpt4 book ai didi

带 jsp 的 Javabean :useBean. 它们如何工作?我不明白

转载 作者:行者123 更新时间:2023-12-01 05:53:10 25 4
gpt4 key购买 nike

我必须使用 java bean 从 jsp 文件中获取 2 个数字和一个操作。提交数字后,将它们从该 Java Bean 传送到 servlet 并返回它们的结果。问题是 java bean 字段永远不会用文本框中写入的数字来完成。所以,我有index.jsp的主体:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Calculator</h1>
<FORM METHOD="POST" action="Controller">
N1: <input type ="text" name="nr1" value="0">
op: <input type ="text" name="op" value="+">
N2: <input type ="text" name="nr2" value="0">
<INPUT class ="button" TYPE="submit" NAME="actiune" VALUE="Calculate"/>
</FORM>
<jsp:useBean id="binOp" class="beans.BinaryOperation" scope="session"/>
<jsp:setProperty name="binOp" property="*"/>
</body>

servlet 的 processRequest 方法 Controller.java,放置在 servlet 包中:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);
BinaryOperation binOp = (BinaryOperation) session.getAttribute("binOp");

try {
if (!binOp.isComplete()) {
System.out.println(binOp.getNr1() + binOp.getNr2() + binOp.getOp());
response.sendRedirect("index.jsp");
} else {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Controller</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Bean in controller " + binOp.getNr1() + "__" + binOp.getOp() + "__" + binOp.getNr2() + "</h1>");
out.println(binOp.toString());
out.println("</body>");
out.println("</html>");
}



} finally {
out.close();
}
}

并将 bean BinaryOperation 放置在包 beans 中:

package beans;


public class BinaryOperation {

private String nr1;
private String op;
private String nr2;

public void setNr1(String nr1) {
this.nr1 = nr1;
}

public void setOp(String op) {
this.op = op;
}

public void setNr2(String nr2) {
this.nr2 = nr2;
}

public String getNr1() {
return nr1;
}

public String getOp() {
return op;
}

public String getNr2() {
return nr2;
}

public boolean isComplete() {
return !(((nr1 == null) || (nr1.length() == 0))
|| ((op == null) || (op.length() == 0))
|| ((nr2 == null) || (nr2.length() == 0)));
}
}

在 Apache 日志中,我有 if 语句的下一个输出(请参阅 servlet - System.out.println(binOp.getNr1() + binOp.getNr2() + binOp.getOp());):空空空

我的错误在哪里?

最佳答案

bean 只是一个 Java 类,用于通过 getter 和 setter 保存属性。它没有任何魔法属性,也不会填充自身。它只是一种对象,就像一种模式。这就是他们的工作方式。您必须使用适当的 setSmth 方法手动填充所需的属性。

关于带 jsp 的 Javabean :useBean. 它们如何工作?我不明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com