表单确认
• 客户端确认
– 减少服务器负载
– 缩短用户等待时
– 兼容性难
客户端 确认经常用到 javascript
基本的javascript 程序结构
javascript 中的变量类型 只有 var
document 是javascript 内部对象 代表了当前的文档本身
<script type="text/javascript"> function validate() { //var username = document.getElementById("username1"); var username = document.getElementsByName("username")[0]; //Elements 返回给定元素的一个列表 ,id是唯一的,name 是可以一样的 if(username.value.length == 0) { alert("username can't be blank!"); return false; } return true; } </script>
如何调用 javascript
javascript 是基于事件的解释语言
首先注册事件 如 <form onsubmit = "return validate()" action="validateServlet">
表明当提交表单操作被触发时候,调用该函数,并且根据该函数的值(true or false)判断时候提交表单
作为动态语言 当 变量 赋什么值 就是什么的类型
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <script type="text/javascript"> function selectAll() { var allMails = document.getElementsByName("allMails")[0]; var mails = document.getElementsByName("email"); if(allMails.checked) { for(var i = 0; i < mails.length; i++) { mails[i].checked = true; } } else { for(var i = 0; i < mails.length; i++) { mails[i].checked = false; } } var nodes = document.getElementsByTagName("input"); for(var i = 0; i < nodes.length; i++) { alert(nodes[i].type); } } </script>
</head> <body> 全选<input type="checkbox" onclick="selectAll()" name="allMails"><br><br><br> <input type="checkbox" name="email"><br> <input type="checkbox" name="email"><br> <input type="checkbox" name="email"><br> <input type="radio"><br> <input type="text"> <input type="password"> <input type="file"> </body> </html>
• 服务器端确认
– 统一确认
– 兼容性强
– 服务器负载重
• JSP通过request内置对象获取表单信
息
• 用不同的方法获取不同种类的信息
• 获取参数的主要方法:
– getParameter() 获取参数的值
– getParameterNames() 获取参数的名
称
– getParameterValues() 获取多个值
输出:
• 使用内置对象out
out.println(content)
• 使用“=”
<%= content% >
public class ValidateServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String username = req.getParameter("username");
String password = req.getParameter("password");
String repassword = req.getParameter("repassword");
List<String> list = new ArrayList<String>();
//把错误信息放到一个list里面
if(null == username || "".equals(username))
{
list.add("username can't be blank!");
}
if(password == null || password.length() < 6 || password.length() > 10)
{
list.add("length of password should be between 6 and 10");
}
if(repassword == null || repassword.length() < 6 || repassword.length() > 10)
{
list.add("length of repassword should be between 6 and 10");
}
if(password != null && repassword != null && !password.equals(repassword))
{
list.add("password and repassword not the same");
}
if(list.isEmpty())
{
req.setAttribute("username", username);
req.setAttribute("password", password);
req.getRequestDispatcher("success.jsp").forward(req, resp);
}
else
{
req.setAttribute("error", list);
req.getRequestDispatcher("error.jsp").forward(req, resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doGet(req, resp);
}
}
当客户端传到服务器端时 采用的是 iso—8859-1的编码格式 服务器端 采用的是utf-8中文不处理的话会出现乱码
所以要进行处理
address = new String(address.getBytes("iso-8859-1"), "utf-8");
将表示地址的中文 转化为utf-8的编码格式