正如标题所说,我试图在JSP中使用servlet中创建的相同对象。该对象是一个模型(称为" customer"它包含值/数据。我在servlet中设置值并在JSP中获取/打印它们。
我尝试在JSP中创建一个新对象,但该值变为null。
目前,客户类中的变量和get方法是静态的。这有效,但我不希望它们是静态的。 为此,我必须获取servlet中的现有对象并在JSP中重用它。
在有人说我应该读书之前,相信我,我有。我只是不理解它,我希望有人帮助我。请。
就我而言:
的Servlet
String firstName = request.getParameter("förnamn");
Customer control = new Customer ();
control.setFirstName(firstName);
HttpSession session = request.getSession();
session.setAttribute("förnamn", firstName);
request.setAttribute("control", control);
RequestDispatcher view = request.getRequestDispatcher("result.jsp");
view.forward(request, response);
这是客户类:
private static String firstName;
public static String getFirstName() {
return firstName;
}
public static void setFirstName(String firstName) {
Customer.firstName = firstName;
}
这是我的JSP:
<%@ 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>Your information in JSP Format:</title>
<%@ page import="Abdi.Customer" %>
<%HttpSessionListenerTest http = new HttpSessionListenerTest();%>
</head>
<body>
<ul>
<li><p><b>Last Name:</b>
<%= Customer.getFirstName() // i want to print it, without using static methods%>
</p></li>
</ul>
答案 0 :(得分:0)
您的Customer类存在问题。您已将所有实例变量设为私有静态,并访问它们的公共静态方法。在您的情况下,无论您使用新Customer()创建多少客户对象,都只有一个firstName变量。静态意味着每个类定义一个
将Customer类中的变量设置为私有,并使用公共setter / getter来改变状态。完成后,您可以在请求/会话/应用程序范围内将它们作为属性添加到servlet中,转发到JSP并使用Expresssion Language(EL)或JSTL访问它们。停止使用scriptlet,它们是90年代。
在你的Servlet中,
String firstName = request.getParameter("förnamn");
Customer customer = new Customer ();
customer.setFirstName(firstName);
HttpSession session = request.getSession();
session.setAttribute("customer", customer);
---转发到JSP ----
在您的JSP中,只需使用EL
${customer.firstName}
一般来说,${yourAttributeName.yourPropertyNameFromPOJO}
请注意,我没有提到我的fName属性的范围。它将搜索以Page - &gt;开头的所有有效范围。请求 - &gt;会话 - &gt;应用
如果使用$未解析这些值,则EL将关闭。您可以在页面指令中使用isELIgnored属性启用它,如此
<%@ page language="java" isELIgnored="false" %>