簡體   English   中英

在JSP中的servlet中使用已創建的對象/將對象從servlet轉發到JSP

[英]Use a created object in servlet in JSP/forward object from servlet to JSP

如標題所示,我試圖使用在JSP的servlet中創建的相同對象。 該對象是一個模型(稱為“客戶”),用於保存值/數據。我正在servlet中設置值,並在我的JSP中獲取/打印它們。

我嘗試在JSP中創建一個新對象,但是該值變為null。

目前,customer類中的變量和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>

您的客戶類別存在問題。 您已將所有實例變量設為私有靜態,並可以訪問它們的公共靜態方法。 在您的情況下,無論您使用new Customer()創建了多少個客戶對象,都將只有一個firstName變量。 靜態表示每個類定義一個

將客戶類中的變量設為私有,並使用公共設置器/獲取器來改變狀態。 完成此操作后,您可以簡單地將它們作為屬性添加到請求/會話/應用程序范圍中的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屬性的范圍。 它將搜索從頁面->請求->會話->應用程序開始的所有有效范圍

如果使用$不能解析這些值,則EL關閉。 您可以像這樣在頁面指令中使用isELIgnored屬性啟用它

<%@ page language="java" isELIgnored="false" %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM