java - JSP用JSP打印数组

标签 java arrays jsp

我正在尝试制作一个 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>

这是一项作业,但该作业已上交并评分。我现在只是想提高我的理解力。有时我希望发生一些行不通的事情。如果有人告诉我我需要某种数据库来保存信息,我不会感到惊讶。 如果有人能指出我的错误在哪里,或者告诉我为什么它不会保留,我将非常感激。

最佳答案

在您的方法 getCardFromRequest 中,您从 getSession().getAttribute("Card") 获取卡片对象,但是当您更新它并将其放回到您放置的 session 时它像这样返回 getSession().setAttribute("card", card) 您应该像这样调用 setAttribute setAttribute("Card", card) 这样您就可以放置和检索相同的内容 session 中的对象

关于java - JSP用JSP打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32533956/

相关文章:

c - 我如何摆脱最后一个逗号?

c++ - 使用 nlohmann/json 将 JSON 转换为数组

java - 调用servlet将JSON格式的数据写入服务器中的URL

java - 如何将 ArrayList 项目添加到我的 ListView

java - 在 jUnit 中使用时间

java - 当我们有坐标列表时如何在 JTS 中创建多边形?

python - 有效地找到由 numpy 数组的索引分割的子数组的 cumsum

java - 将 msgpack 添加为 spring mvc + boot 的内容协商

mysql - 选择另一个选择框时填充选择框

java - 如何在jsp中对逻辑进行单元测试?