日期:2014-05-16  浏览次数:20374 次

【JSP】表单提交与表单验证

几点小结:

(1)使用form表单提交数据,提交后的数据将会在另一个jsp页面进行处理。也可以实现不跳转,同时使用ajax进行局部更新,这里暂不进行说明。

(2)提交表单前需要进行数据验证时,响应在form中onsubmit事件,数据合法则返回true,然后实现页面跳转;数据不合要求则返回false,页面便不会跳转。

(3)要考虑中文参数的传递。由于浏览器,web服务器,数据库等的默认编码不一致,很容易出现中文乱码(参考:解决jsp中文乱码,修改mysql编码)。


以下是一个简单的表单提交与表单验证的例子。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>

<!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>表单提交</title>
	</head>
	<body>
		<p align="center"><b>表单提交</b><br></p>
		<center>
			<div align="left">
				<table height="60" border="0" align="left">
					<tr>
						<td>
							<form name="channelform" action="addChannel.jsp"
							 onsubmit="return validate_channel_info(this);" method="post">
								名字: 
								<input type="text" name="channelname" />
								<br />
								ID: 
								<input type="text" name="channelid" />
								<br />
								<input type="submit" value="提交">									
							</form>
						</td>
					</tr>
				</table>				
				
				
				<script type="text/javascript">
					function validate_channel_info(channelform)
					{
						if(channelform.channelname.value=="")
						{
							alert("请输入正确的名字");
							return false;
						}
						else if(!isNumber(channelform.channelid.value))
						{
							alert("请输入合法ID");
							return false;
						}
						return true;
					} 
					
					function isNumber(str)          // 判断是否为非负整数
					{
						var rx = /^[0-9]+$/;
						return rx.test(str);
					}
					
				</script>
			</div>
		</center>
	</body>
	
</html>