使用servlet将名称放在同一HTML文件的列表中

时间:2015-11-22 14:29:47

标签: java html list servlets

我使用带有文本字段的html页面,您必须输入您的姓名,然后单击登录按钮。 在同一页面上是一个包含所有名称的列表。 现在我必须通过单击servlet的登录按钮来发送名称。 servlet必须将名称添加到播放器列表中。

servlet已经收到输入的名称,但是它会在新的HTML页面上发布。如何更改代码,以便将名称添加到同一HTML页面上的播放器列表中,而不是在新页面上?

@WebServlet("/Playerlist")
public class Playerlist extends HttpServlet {
private static final long serialVersionUID = 1L;


public Playerlist() {
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String name = request.getParameter("name");
    PrintWriter out = response.getWriter();

    out.println("<html><Body>Hallo" + name + "</body></html>");
    out.flush();

}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
}

文本字段:

<div id= "loginFormular" >
                <form action="Playerlist" method="get" >
                    <label>
                        Name:
                        <input class="textbox" id="loginbox" type="text" name="name" size="30" maxlength="30">
                    </label>
                    <br>
                    <input id=buttonLogin class="loginbutton" type="submit" value="Login" name="loginname" />

                    <input id=startButton class="loginbutton" type="submit" value="Start" onclick="showQuestion()" />
                </form>
             </div>

Playerlist:

<div class="highscore" style="float:right">
            <h4>
            <span class="glyphicon glyphicon-star" aria-hidden="true"></span>
            <span>Highscore</span>
            </h4>
            <hr/>
            <table id="highscoreTable" class="table table-hover">
            <thead>
                <tr>
                    <td>Player</td>
                    <td>Score</td>
                </tr>
            </thead>
            <tbody id="tablePlayerlistBody">
           </tbody>
           </table>
        </div>

我知道有更好的方法而不是使用servlet,但我必须这样做。

1 个答案:

答案 0 :(得分:1)

您的页面对于您想要执行的操作而言过于静态。我假设你这样做是为了练习。

你在做什么

  • 从静态页面提交您的姓名。
  • 在servlet端获取提交的名称。
  • 向客户发送新内容。

而你需要做的是

  • 使用文本字段和列表创建动态页面(JSP)。
  • 将字段值提交给servlet。
  • 接收该值并将其保留在服务器端。在服务器端维护某种类型的列表并将其添加到它并在任一servlet上下文中设置它。
  • 使用请求调度程序重定向到同一页面,然后迭代服务器端维护的值列表。

如下所示。

<强>的Servlet

String name = request.getParameter("name");
serverSideList.add(name );

<强> JSP

<table id="highscoreTable" class="table table-hover">
  <thead>
    <tr>
      <td>Player</td>
      <td>Score</td>
    </tr>
  </thead>
  <tbody id="tablePlayerlistBody">
    <% for(int i=0 ; i< serverSideList.size(); i++){ %>
      <tr>
        <td>
          <%=serverSideList.get(i)%>
        </td>
        <td>Some Score</td>
      </tr>
      <%}%>
  </tbody>
</table>

坚持你可以做两件事。

  • 简单:在“应用程序上下文”中维护服务器端列表
  • 标准:在数据库中保留玩家详细信息。

如果您有任何问题,请随时询问。