-
案例目标
用户填写表单信息,提交后查询数据库,查看用户名是否被使用,若未被使用,则在数据库增加该用户的记录,否则,则在页面上显示红色的字 "用户名xxx已经被使用",同事表单内仍保留着用户的输入信息
-
创建newCustomer.jsp提供给用户输入信息,并实现在页面上显示红色的字 "用户名xxx已经被使用",同事表单内仍保留着用户的输入信息的功能
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String msg = (String)request.getAttribute("message");
if( msg != null ){
%>
<h3><font color="red"><%= msg %></font></h3>
<%
}
%>
<form action="add.do" method="post">
<table>
<tr>
<td>名称:</td>
<td><input type="text" name="name" value="<%= request.getParameter("name")==null ? "":request.getParameter("name") %>"/></td>
</tr>
<tr>
<td>地址:</td>
<td><input type="text" name="address" value="<%= request.getParameter("address")==null ? "":request.getParameter("address") %>"/></td>
</tr>
<tr>
<td>手机号:</td>
<td><input type="text" name="phone" value="<%= request.getParameter("phone")==null ? "":request.getParameter("phone") %>"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>
-
编写add函数
private void add(HttpServletRequest request, HttpServletResponse response){
System.out.println("{ CustomerServlet }[ add ]");
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//1.获取表单参数
String newCustomerName = request.getParameter("name");
String newCustomerAddress = request.getParameter("address");
String newCustomerPhone = request.getParameter("phone");
Customer customer = new Customer(newCustomerName, newCustomerAddress, newCustomerPhone);
//2查询数据库判断名称是否已经被占用,根据不同的信息进行不同的处理
long newCustomerNameCountInDB = customerDAOJdbcImp.getCountSameWithName(newCustomerName);
if(newCustomerNameCountInDB==0) {
//若名称未被占用
//Customer customer = new Customer(0, newCustomerName, newCustomerAddress, newCustomerPhone);
customerDAOJdbcImp.save(customer);
//为了防止出现表单的重复提交,用户创建成功后重定向到success.jsp
try {
response.sendRedirect("success.jsp");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
System.out.println("newCustomerNameCountInDB!=0");
//若名称被占用,就跳转至newCustomer.jsp
String message = "名称" + newCustomerName + "已被使用!请重新创建";
request.setAttribute("message", message);
try {
request.getRequestDispatcher("/newCustomer.jsp").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}