综合实验

18 篇文章 0 订阅

目的

  1. 强化对脚本语言javascript的理解与运用
  2. 能基本达到较为熟练的使用javascript进行页面的简单验证
  3. 熟悉服务器端验证的方法
  4. 比较客户端验证与服务器端验证的区别

要求

在这里插入图片描述
• 要求(客户端验证):
• 用户名与密码输入不能为空
• 用户名与密码的长度均须在4—10之间
• 性别必须选择(页面初始化时没有选择其中任何一个选项)
• 兴趣的选择数量在1—3之间(最少选择一个,最多选择三个)
• 说明为必填项
• 用户填写不符合要求的需要弹出警告对话框
• 以上要求用javascript验证
• 服务器端验证
• 要求与前相同
• 必须采用Servlet进行验证(简单的MVC)
• 验证用户的所有输入,完全符合要求的转到显示用户填写信息结果页面
• 如果存在不符合要求的地方则Servlet转到一个jsp页面,页面内容为用户信息中不符合要求的信息
• 对于服务器端验证不做具体要求,只要实现功能即可,无论采用什么方法都可以,但是必须用Servlet来实现,不可以使用jsp

用JavaScript对复杂表单进行客户端验证

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>form</title>

<script type="text/javascript">
    function validate(){
    	var username = document.getElementsByName("username")[0];
    	var password = document.getElementsByName("password")[0];
    	var gender = document.getElementsByName("gender");
    	var interest = document.getElementsByName("interest");
    	var comment = document.getElementsByName("comment")[0];
    	
    	if(username.value.length < 1){
    		alert("用户名不能为空!");
    		return false;
    	}
    	
    	if(password.value.length < 1){
    		alert("密码不能为空!");
    		return false;
    	}
    	
    	if(username.value.length < 4 || username.value.length > 10){
    		alert("用户名长度应该介于4到10之间");
    		return false;
    	}
    	
    	if(password.value.length < 4 || password.value.length > 10){
    		alert("密码长度应该介于4到10之间");
    		return false;
    	}
    	
    	if(!gender[0].checked && !gender[1].checked){
    		alert("性别必须要选择");
    		return false;
    	}
    	
    	var n = 0;
    	
    	for(var i = 0; i < interest.length; i++){
    		if(interest[i].checked){
    			n++;
    		}
    	}
    	
    	if(n < 1){
    		alert("兴趣至少选择一个!");
    		return false;
    	}
    	if(n > 3){
    		alert("兴趣最多选择三个!");
    		return false;
    	}
    	
    	if(comment.value.length < 1){
    		alert("说明必须要填写!");
    		return false;
    	}
    }
</script>

</head>
<body>

<form action="#" onsubmit="return validate();">
用户名:<input type="text" name="username">
<br>
密码:<input type="password" name="password">
<br>
性别:男<input type="radio" name="gender" value="男">&nbsp;&nbsp;<input type="radio" name="gender" value="女">
<br>
兴趣:足球:<input type="checkbox" name="interest" value="足球">&nbsp;&nbsp;
           篮球:<input type="checkbox" name="interest" value="篮球">&nbsp;&nbsp;
           排球:<input type="checkbox" name="interest" value="排球">&nbsp;&nbsp;
           羽毛球:<input type="checkbox" name="interest" value="羽毛球">&nbsp;&nbsp;
<br>
地址:
<select>
    <option value="上海">上海</option>
    <option value="北京">北京</option>
    <option value="天津">天津</option>
</select>
<br>
说明:
<br>
<textarea name="comment" rows="10" cols="40"></textarea>
<br>
<input type="submit" value="确认">&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" value="重置">
</form>

</body>
</html>

在这里插入图片描述

用Servlet对复杂表单进行服务器端验证

package learn.servlet;

import java.util.*;
import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ProcessServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		process(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		process(request, response);
	}

	protected void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String gender = request.getParameter("gender");
		String[] interest = request.getParameterValues("interest");
		String address = request.getParameter("address");
		String comment = request.getParameter("comment");
		//存放错误信息
		List<String> list = new ArrayList<String>();
		//验证用户名
		if(null == username || "".equals(username)){
			list.add("用户名不能为空!");
		}
		else if (username.length() < 4) {
			list.add("用户名过短!");
		}
		else if (username.length() > 10) {
			list.add("用户名过长!");
		}
		//验证密码
		if(null == password || "".equals(password)){
			list.add("密码不能为空!");
		}
		else if (password.length() < 4) {
			list.add("密码过短!");
		}
		else if (password.length() > 10) {
			list.add("密码过长!");
		}
		//验证性别
		if(null == gender){
			list.add("性别没有选择");
		}
		//验证兴趣
		if(null == interest){
			list.add("兴趣至少选择一个");
		}
		else if (interest.length > 3) {
			list.add("兴趣最多选择三个!");
		}
		//验证说明
		if(null == comment || "".equals(comment)){
			list.add("说明没有填写");
		}
		
		if(list.isEmpty()){
			request.setAttribute("username", username);
			request.setAttribute("password", password);
			request.setAttribute("gender", gender);
			request.setAttribute("interest", interest);
			request.setAttribute("address", address);
			request.setAttribute("comment", comment);
			
			request.getRequestDispatcher("loginSuccess.jsp").forward(request, response);
		}
		else {
			request.setAttribute("error", list);
			
			request.getRequestDispatcher("loginFailure.jsp").forward(request, response);
		}
		
		
	}
}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
用户名:<%= request.getParameter("username") %>
<br>
密码:<%= request.getParameter("password") %>
<br>
性别:<%= request.getParameter("gender") %>
<br>
兴趣:<% String[] interest = (String[])request.getAttribute("interest"); 
       
       for(String str : interest){
    	   out.println(str + "&nbsp;&nbsp;");
       }
    %>
<br>
地址:<%= request.getParameter("address") %>
<br>
说明:<%= request.getParameter("comment") %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
错误信息如下:<br><br><br>

<% List<String> list = (List<String>)request.getAttribute("error");%>
<ul>
  <%for(String str : list){%>
       <li><font color="#ff0000"><%= str %></font></li>
   <%}%>
</ul> 
</body>
</html>

结果是:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值