【问题标题】:Put name into a list on the same HTML file with servlet将名称放入与 servlet 相同的 HTML 文件的列表中
【发布时间】:2015-11-22 14:29:46
【问题描述】:

我使用带有文本字段的 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>

播放列表:

<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,但我必须这样做。

【问题讨论】:

  • 可以发html页面吗
  • 我用 HTML 部分编辑了起始帖子
  • 您的 serlvet 的 url-pattern 是 /Playerlist ,您的表单使用的是 Playerlist
  • 你的意思是因为“/”吗?这不会改变任何事情。它仍然在新的 HTML 页面上发布输入的名称。
  • 你的页面太静态了,无法做你想做的事情。

标签: java html list servlets


【解决方案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>

为了持久化,你可以做两件事。

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

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

【讨论】:

  • 感谢您的帮助。我今天自己让它工作,它与你的回答类似。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多