博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
表单的验证:客户端验证和服务器端验证
阅读量:7292 次
发布时间:2019-06-30

本文共 3263 字,大约阅读时间需要 10 分钟。

 

表单的验证:客户端验证和服务器端验证

 

表单的确认

客户端确认:

  减少服务器负载

  缩短用户等待时间

  兼容性难

服务器端确认:

  统一确认

  兼容性强

  服务器负载重

 

客户端验证例子

  首先建立一个表单,在其提交时用JavaScript方法进行验证,若该方法返回true,则进行表单的提交,若返回false,则表单不提交。

 

username:
password:
re-password:

 

  其中用于验证的JavaScript方法如下:

  在验证有误的时候,弹出对话框提示,并且返回false,不提交表单。

  完整的login.jsp如下(在客户端验证的时候可以先不管转向的Servlet):

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>                  
username:
password:
re-password:

 

  但是客户端的验证是不可靠的,用户可以查看源代码,找到表单action的Servlet,然后转向这个地址,将参数用?连接在地址之后,这时候参数是没有经过客户端校验的

 

服务器端验证例子

  从表单中获得参数:JSP通过request内置对象获取表单信息,用不同的方法获取不同种类的信息。

  服务器端验证程序,先将客户端验证部分去掉,即去掉 表单中的:οnsubmit="return validate()"

  那么用户在表单中提交的数据将直接传到服务器端,服务器端Servlet对其进行验证:

  方式如下:有错误时将错误信息放在一个String类型的List中,最后判断这个List是否为空,如果为空,转向验证成功页面;如果List不为空,则转向失败页面,显示错误信息。

 

package com.shengqishiwind.servlet;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;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
list = new ArrayList
(); if(null == username || "".equals(username)) { list.add("username can't be blank!"); } if(null == password || password.length()<6 || password.length()>10) { list.add("password should be between 6 and 10"); } if(null == repassword || repassword.length()<6 || repassword.length()>10) { list.add("repassword should be between 6 and 10"); } if(null != password && null != repassword && !password.equals(repassword)) { list.add("password and repassword don't match!"); } //有两种结果:验证通过和不通过 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); }}

 

 

  成功页面JSP body部分:

    username:<%= request.getAttribute("username") %>
password:<%= request.getAttribute("password") %>

 

  失败页面:

    

login failed

<% List
list = (List
)request.getAttribute("error"); for(String str: list) { out.println(str+"
"); } %>

转载地址:http://eerjm.baihongyu.com/

你可能感兴趣的文章
cocos2d-x的action
查看>>
window环境下安装和卸载服务【转】
查看>>
搭建go开发环境
查看>>
HDU-1241Oil Deposits
查看>>
2017年05月10日记一次微项目投产 | 安卓版微信内置浏览器不能解析gzip压缩过的mp4视频的问题...
查看>>
Java基础类库简介
查看>>
微信端解决a标签链接 失效的问题
查看>>
[2]递归的四条基本法则
查看>>
数组与指针的区别
查看>>
C# versus C++ versus Java performance comparison
查看>>
hdu3625 ( 第一类斯特灵数 )
查看>>
根据第三方库spire.pdf使用指定打印机打印pdf文件
查看>>
利用PHPMailer 来完成PHP的邮件发送
查看>>
PHP计算百度地图两个GPS坐标之间距离的方法
查看>>
PHP实现大转盘抽奖算法
查看>>
CART:分类与回归树
查看>>
thinkphp <volist>标签中 <if> 判断的写法
查看>>
(二十七)JSP标签之核心标签
查看>>
Open vSwitch intro
查看>>
js中有关类、对象的增强函数
查看>>