如何在JSP页面中重新加载页面时更改标签的文本?

时间:2013-07-02 07:59:50

标签: java jsp java-ee servlets label

我是servlets的新手。我有一个servlet,我在其中更新数据库。单击提交按钮后,我想显示一条消息,告知更新是否成功。为此,我打算放一个标签,但标签标签没有像价值,可见等属性。我怎么能这样做?这是我的servlet代码:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    //System.out.println("editservlet");

    try
    {
        connect();
        int result=-1;
        PreparedStatement checkDB = (PreparedStatement) con.prepareStatement(
        "UPDATE users set username=?,password=?,name=?,surname=?,phone=?,address=?," +
        "email=? where username=?");
        checkDB.setString(8,request.getParameter("tUserName"));
        checkDB.setString(1,request.getParameter("tUserName"));
        checkDB.setString(2,request.getParameter("tPassword"));
        checkDB.setString(3,request.getParameter("tName"));
        checkDB.setString(4,request.getParameter("tSurName"));
        checkDB.setString(5,request.getParameter("tPhone"));
        checkDB.setString(6,request.getParameter("tAddress"));
        checkDB.setString(7,request.getParameter("tEmail"));
        result= checkDB.executeUpdate();
                    if(result>0)
            //SHOW THE MESSAGE THAT TELLS UPDATE SUCCESFUL

    }
    catch(Exception e)
    {
        e.printStackTrace();
                    //SHOW THE MESSAGE THAT UPDATE UNSUCCESFUL
    }


}

任何人都可以帮我吗?感谢

2 个答案:

答案 0 :(得分:2)

避免从servlet打印出HTML。它被弃用了。

创建一个JSP页面,例如 SignupStatus.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<html>
 <head>
  <title>Signup Status</title>
 </head>
 <body>
  <p>Hi <b>${username}<b>,<br />
    Your signup ${statusMsg}
  </p>
 </body>
</html>

然后将 servlet 更改为

protected void service(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

  // request attributes to be sent to JSP
  String username = null;
  StringBuilder statusMsg = new StringBuilder();

    try
    {
        connect();
        int result=-1;
        PreparedStatement checkDB = (PreparedStatement) con.prepareStatement(
        "UPDATE users set username=?,password=?,name=?,surname=?,phone=?," +
        "address=?,email=? where username=?");

        // set username value
        username = request.getParameter("tUserName");

        // set username as request attribute
        request.setAttribute("username", username);

        checkDB.setString(8,username);
        checkDB.setString(1,username);

        checkDB.setString(2,request.getParameter("tPassword"));
        checkDB.setString(3,request.getParameter("tName"));
        checkDB.setString(4,request.getParameter("tSurName"));
        checkDB.setString(5,request.getParameter("tPhone"));
        checkDB.setString(6,request.getParameter("tAddress"));
        checkDB.setString(7,request.getParameter("tEmail"));
        result= checkDB.executeUpdate();

        if(result>0)
            statusMsg.append("was successful!"); // set a success message

    }
    catch(Exception e)
    {
        e.printStackTrace();
        // set a failure message along with error details
        statusMsg.append("failed with the error: ").append(e.getMessage());
    }

    // set status message as request attribute
    request.setAttribute("statusMsg", statusMsg.toString());

    // forward request (along with its attributes) to the status JSP
    RequestDispatcher rd = response.getRequestDispatcher("SignupStatus.jsp");
    rd.forward(request, response);
}

答案 1 :(得分:0)

好的。这是做你想做的事情的坏方法。在DB操作之后,正确且简单的方法是forward到JSP页面,在request中将某些属性设置为成功或失败,并在JSP中显示它们。

您目前的方法,您可以这样做:

protected void service(HttpServletRequest request,
                       HttpServletResponse response) 
throws ServletException, IOException {
   String message = "";
   try
   {
      // DB related code
      message = "Successful";

   }
   catch(Exception e)
   {
      e.printStackTrace();
      message = "Failure";
   }
   response.getWriter().println(message);
}
相关问题