【发布时间】:2015-09-12 00:32:28
【问题描述】:
我正在尝试制作一个 rolodex 样式的 JSP。我正在使用带有 JSP 的 java 类,并且不允许使用 servlet 或其他任何东西。我无法保留添加的条目。当我进入我的添加条目页面并添加一个人时,计数会增加一个。然后,如果我转到“主页”页面,它会从我为调试设置的任何内容开始。此外,如果我尝试添加第二个人,则计数不会再次上升。
这是发生的事情的流程:
从 4 人开始 --> 添加第 1 人 --> 计数为 5 人--> 点击主页链接--> 人数为 4 人
从 4 人开始 --> 添加第 1 人 --> 计数为 5 人 --> 添加 2d 人 --> 计数为 5 人
这是我拥有的 java 类:
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>
这是一项作业,但该作业已上交并评分。我现在只是想提高我的理解。有时我希望发生一些不起作用的事情。如果有人告诉我我需要某种数据库来保存信息,我不会感到惊讶。 如果有人能指出我的错误在哪里或告诉我为什么它不会留下来,我将非常感激。
【问题讨论】:
-
您如何运行/部署您的应用程序?