我想製作一個rolodex樣式的JSP。我正在使用一個帶有JSP的java類,並且不允許使用servlet或其他任何東西。我無法保留添加的條目。當我去我的添加條目頁面,並添加一個人計數增加一。然後,如果我進入「主頁」頁面,它會從我設置的任何調試開始。另外,如果我嘗試添加第二個人,則計數不會再增加。帶JSP的JSP打印數組
這裏是發生了什麼流量:
開始與4人 - >添加的第一人稱 - >數爲5人 - > 命中主頁鏈接 - >數爲4人
開始與4人 - >添加的第一人稱 - >數爲5人 - > 加2D人物 - >數爲5人
這裏是Java I類有:
package Cards;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
public class Card {
private final ArrayList<Line> entries = new ArrayList<>();
private int entrySequenceId = 0; // to give each entry a unique id
public Card() {
}
public ArrayList<Line> getEntries() {
return entries;
}
public void modifyEntry(int entryIndex, String phoneNumber) {
if (entryIndex >= 0 && entryIndex < entries.size()) {
entries.get(entryIndex).phoneNumber = phoneNumber;
}
}
public void addEntry(String name, String phoneNumber) {
entries.add(new Line(name, phoneNumber));
}
public ArrayList<Line> search(String searchText) {
searchText = searchText.toLowerCase();
ArrayList<Line> matches = new ArrayList<>();
for (Line entry : entries) {
if (entry.name.toLowerCase().contains(searchText)) {
matches.add(entry);
}
}
return matches;
}
public Line getEntry(String id) {
int entryId = Integer.valueOf(id);
for (Line line : entries) {
if (line.getEntryId() == entryId) {
return line;
}
}
return null;
}
public static Card getCardFromRequest(HttpServletRequest request) {
Card card = (Card) request.getSession().getAttribute("Card");
if (card == null) {
card = new Card();
// for debug, hard coding of some entries - 2 of the same first name 2 sets of the
//same last name 2 of the same number and 2 with speacail characters
card.entries.add(card.new Line("Luis Ramos", "4772662"));
card.entries.add(card.new Line("Allison Ramos", "4772662"));
card.entries.add(card.new Line("Meg Ryan", "1-800-999-9999"));
card.entries.add(card.new Line("Luis Ryan", "1-8"));
request.getSession().setAttribute("card", card);
}
return card;
}
public class Line {
private String name;
private String phoneNumber;
private final int entryId;
public Line(String name, String phoneNumber) {
this.name = name;
this.phoneNumber = phoneNumber;
this.entryId = Card.this.entrySequenceId++;
}
public int getEntryId() {
return entryId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
}
這裏是我添加JSP:
<%@page import="java.util.ArrayList"%>
<%@page import="Cards.Card"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Rolodex</title>
</head>
<body bgcolor="lightgray">
<%
Card card = Card.getCardFromRequest(request);
String name = request.getParameter("name");
if (name != null && name.length() != 0) {
card.addEntry(name, request.getParameter("phoneNumber"));
}
%>
<center>
<%
out.println("There are " + card.getEntries().size() + " entries.<br/>");
%>
<form action="Add.jsp">Name:<input type="text" name="name"/> <br/>Phone number:<input type="text" name="phoneNumber"/><input type="submit" value="Add"/></form>
<br/>
<a href="Index.jsp">Home</a>
</center>
</body>
</html>
這是一個然而轉讓,轉讓已上繳和分級。我現在只是想提高我的理解。有時候我想讓事情發生,但不會奏效。如果有人告訴我我需要某種數據庫來保存信息,我不會感到驚訝。 如果有人能指出我的錯誤在哪裏,或者告訴我爲什麼它不會留下,我會非常感激。
你如何運行/部署你的應用程序? – serhii