我是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
}
}
任何人都可以帮我吗?感谢
答案 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);
}