java web 表单验证

表单确认

• 客户端确认
– 减少服务器负载
– 缩短用户等待时
– 兼容性难

客户端 确认经常用到 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" οnclick="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的编码格式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值