首页 > 代码库 > JSP数据交互习题错误总结
JSP数据交互习题错误总结
1:如果注册完页面有中文字符需要在提交后的页面显示注册信息,切记先把接受到的request的编码方式改为中文:request.setCharacterEncoding("utf-8");
不然会出现乱码
2:提交表单的时候,错误的把事件绑定到了submit按钮上了,应该绑定到表单标签,获取表单信息!
因为跳转后的页面需要显示上个注册页面的信息,用request.getParameter(String name);这个方法的作用是获取上个请求页面的所有提交的表单信息, 这个方法只能获取有name属性的标签值。 radio单选框最终选的是一个值,虽然性别选项的name值都是gender,但是我们最终获取的是一个选项,所以还可以用request.getParameter()方法。 checkbox复选框里因为可以选多个值所以要用request.getParameterValues()方法获取一个数组(复选框的所有name值要一致,复选框一定要设置value属性值要不然取到的值全是on,因为取不到框外的值,value和框外值要一致),然后遍历数组取值。
还有一个下拉框<select name="choice"><option>1</option> <option>1</option> <option>1</option></select>这里因为最终也是只取一个下拉框选项所以最终也只取一个值用request.getParameter(),但是option标签里没有name属性,不能乱加,只能在select标签里给一个name属性,取到选中值! 如:
MyEclipse创建的项目
***********************
1:index.jsp
*****************
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://www.mamicode.com/">
<title>My JSP ‘index.jsp‘ starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="http://www.mamicode.com/styles.css">
-->
<script src="http://www.mamicode.com/js/jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
function mycheck(){
var inputs=$("#year").val();
var reg=/^(19[5-9][0-9])|20[0-1][0-4]$/;
if(inputs==""){
alert("年份不能为空");
//$("#year").val(2014);
return false;
}
else if(!reg.test(inputs)){
//$("#year").val(2014);
alert("必须输入1950-2014之内的正整数");
return false;
}
return true;
}
$(function(){
$("#year").css("width","80px");
//年份正则表达式
$("#year").blur(function(){
mycheck();
})
$("#tijiao").submit(function(){
return mycheck();
})
//自动改变月份日分
$("#one").change(function(){
var $num=$("#one option:selected").text();
if($num==1|$num==3|$num==5|$num==7|$num==9|$num==10|$num==12){
var str="";
for(var i=1;i<=31;i++){
str+="<option>"+i+"</option>";
}
$("#two").html(str);
}else if($num=="请选择"){
$("#two").html("请选择");
}else if($num==2){
var sts="";
for(var i=1;i<=28;i++){
sts+="<option>"+i+"<option>";
}
$("#two").html(sts);
}else{
var strs="";
for(var i=1;i<=30;i++){
strs+="<option>"+i+"<option>";
}
$("#two").html(strs);
}
})
})
</script>
</head>
<body>
<form id="tijiao" action="welcome.jsp" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="txtname"/>只能输入字母或数字,4-16个字符</td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="txtpwd"/>密码长度6-12位</td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="txtrepwd"/></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="gender" value="http://www.mamicode.com/男" checked="checked"/>男
<input type="radio" name="gender" value="http://www.mamicode.com/女"/>女
</td>
</tr>
<tr>
<td>电子邮件地址:</td>
<td><input type="text" name="txtemail"/>输入正确的Email地址</td>
</tr>
<tr>
<td>出生日期:</td>
<td>
<input id="year" type="text" name="txtyear"/>年
<select name=‘month‘ id="one">
<option >请选择</option>
<%
for(int i=1;i<=12;i++){
out.print("<option id=‘+i+‘>"+i+"</option>");
}
%>
</select>月
<select name="day" id="two">
<option>请选择</option>
</select>日
</td>
</tr>
<tr>
<td><input type="submit" id="txtagree" value="http://www.mamicode.com/同意以下协议条款并提交"/></td>
<td><textarea rows="10" cols="30" >一、总则
速度加快萨拉宽带阿斯顿has机会打撒时间大时代阿斯顿阿大使馆的哈市国家打扫打扫打扫过的爱上大事大家</textarea></td>
</tr>
</table>
</form>
</body>
</html>
2.welcome.jsp
********************
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://www.mamicode.com/">
<title>My JSP ‘welcome.jsp‘ starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="http://www.mamicode.com/styles.css">
-->
</head>
<body>
欢迎观临,您的注册信息为:
<table>
<tr>
<td>用户名:</td>
<%request.setCharacterEncoding("utf-8"); %>
<td><%=request.getParameter("txtname") %></td>
</tr>
<tr>
<td>密码:</td>
<td><%=request.getParameter("txtpwd") %></td>
</tr>
<tr>
<td>性别:</td>
<td><%=request.getParameter("gender") %></td>
</tr>
<tr>
<td>电子邮件地址:</td>
<td><%=request.getParameter("txtemail") %></td>
</tr>
<tr>
<td>出生日期:</td>
<td><%=request.getParameter("txtyear")+"年"+request.getParameter("month")+"月"+request.getParameter("day")+"日"
%>
</td>
</tr>
</table>
</body>
</html>