一。定义 表单
表单有如下 性质
可以输入一些 内容 ,叫表单元素
一般都有一个按钮负责提交
单击提交 后,表单元素中的内容 会提交 给服务器
表单元素放在<form></form>之间
如下 :
<form>
请输入号码:<input name="account" type ="text"><br>
请输入密码 : <input name= "password" type= "password"><br>
<input type ="submit" value="登录">
</form>
表单中的内容 会提交 给服务 器,如何确定提交给服务 器端的那个页面呢?可以 用 action属性来确定 。
改上面 的
<form action ="page.jsp">
那么 page.jsp 中如何 得到提交 过来 的内容 呢。用的是request对象 。
二。单一表单元素数据 的获取
单一 表单指的是表单元素送给服务 器时,只是一个变量。
(1)获得文本框中的数据
实际 中可以根据传递的值 查询数据 库。
如果输入 的是中文,不能正常显示 ,后面不规则讲怎么办。下面的都是英文的。
我们可以 看到,提交 的内容 在浏览器的地址上都可以看到,因为默认是 get ,不安全,怎么办呢,方法是在表单中,将属性method 改成 post .
get 和post 是提交 请求的 两种方法。
(2)获得密码框中的数据
<input name ="password" type="password"> <br>
不会显示密码 明文。
(3)获得多选文本框中的数据
<textarea name= "info" rows="5" cols="30"></textarea>
(4)获得单选按钮中的数据
请您选择性别:
<input name= "sex" type="radio" value="boy" checked> 男
<input name ="sex" type ="radio" value="girl" >女<br>
提交过去 的是value 而不是后面的汉字。
(5)获取下拉菜单中的数据
<select name ="home">
<option value = "beijing">北京</option>
<option value = "shanghai">上海</option>
<option value = "wuhan">武汉</option>
</select>
三。一些 问题
(1)用javascrept进行验证
有时候 ,要会输入 的内容 作一些 验证,比如输入 用户名不能为空,因此 ,当我们点击提交 时,不能马上提交 ,而要先验证,这里要用到javascript ,
因此 ,提交 按钮不能设定为 submit ,而应该是 button .
<body>
<script type ="text/javascript">
function validate() {
if (loginForm.account.value == "") {
alert("姓名不能为空");
return;
}
if (loginForm.password.value == "") {
alert("密码不能为空");
return;
}
loginForm.submit();
}
</script>
<form name ="loginForm" action ="target.jsp" method="post">
请输入姓名:
<input name="account" type= "text" ><br>
请输入密码:
<input name ="password" type ="password"> <br>
<input type="button" value="登录" onClick="validate()">
</form>
</body>
(2)提交过程中显示乱码
当我们把汉字提交给服务器时,服务器认为是iso-8859编码 ,而在网页上显示 的是 gb2312 编码 ,不能兼容 ,有三种方法解
1. 将其转换成 gb2312
这个 方法要对每一个字符 串进行转码,很麻烦 。
<%
String name = request.getParameter("name");
if (name!=null){
name = new String (name.getBytes("ISO-8859-1"), "gb2312");
out.println(name);
}
%>
2. 直接修改 request 的编码
这样 就不用再对每一个字符串进行转码
<%
request.setCharacterEncoding("gb2312");
String name = request.getParameter("name");
if (name!=null){
//name = new String (name.getBytes("ISO-8859-1"), "gb2312");
out.println(name);
}
%>
注意:
要在取出值前进行设置,表单的提交 方法应该是post ,且在每一个页面中都要进行设置,也比较复杂 。
3 使用过虑器
可以 对整个web 运用进行设置。