日期:2014-05-16 浏览次数:20428 次
request对象是HttpServletRequest接口的一个实例,而HttpServletRequest的父接口是ServletRequest,但是目前ServletRequest只有HttpServletRequest一个接口,如果以后出现了新的协议,只要让新的协议继承ServletRequest即可
request对象功能:
1、接收表单参数:request.getParameter();
此时要注意接收参数是可能会产生乱码,因为所有的静态WEB的执行流程是先从服务器取得一个页面,之后通过此页面把内容进行提交,提交给服务器后,服务器在将处理的结果返回给客户端进行显示,故如果要想直接输入内容,就要把编码设置为和服务器内容的编码一直,可以使用ServletRequest接口中提供的setCharacterEncoding()方法进行统一的编码设置,即在接收页面上使用request.setCharacterEncoding("GBK");进行统一编码后在进行表单值的接收
2、表单的提交方式:get 和post
get提交的表单在地址栏中会将全部的参数显示出来,这样一来是不安全,而来时如果提交过多的内容将会产生错误,因为URL地址栏最大只能储存4k~5k的内容,所以过大会造成无法提交
post提交表单在地址栏中不会显示提交参数等内容,这样的提交比较安全,而且不会受到内容多少的限制,但是如果内容过大将会超出http的超时时间限制
3、使用地址重写的方式提交参数
格式:Xxx.jsp?参数名称=参数值&参数名称=参数值&参数名称=参数值
<h1><a href="url_override_do.jsp?name=hello&school=sichuan univercity">地址重写参数提交</a></h1>
接收时采用:
<% request.setCharacterEncoding("GBK");//处理中文乱码问题 String rename=request.getParameter("name"); String reschool=request.getParameter("school"); %> <h1>姓名:<%=rename %></h1> <h1>日期:<%=reschool %></h1>
使用此种方式提交时,在提交后的页面上右击页面属性时依然可以看到url地址中带有参数的地址
4、隐藏域传递参数
在表单中有一种叫做隐藏域的对象,此对象中的内容会随表单的提交一起提交给jsp页面
<form action="input.jsp" method="post"> <input type="hidden" name="school" value="四川农业大学网络教育学院"> <input type="submit" value="提交隐藏域对象"> </form>
处理页面
<% request.setCharacterEncoding("GBK"); //按照中文接收 String reschool =new String( request.getParameter("school").getBytes("GBK"));//转码 %> <h1>参数内容为:<%=reschool %></h1>
5、接收多个参数
在表单中有复选框按钮,可以用来多选,但是复选框的name属性都是一样的,那么在表单的处理页面要使用request.getParameterValues()函数进行接收
看如下代码:
表单页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>复选框表单的提交</title> <meta http-equiv="content-type" content="text/html; charset=GBK"> </head> <body> <form action="check_input.jsp" method="post"> <table> <tr> <td>姓名:</td> <td><input type="text" name="name"></td> </tr> <tr> <td>兴趣:</td> <td> <input type="checkbox" name="inst" value="游泳">游泳 <input type="checkbox" name="inst" value="上网">上网 <input type="checkbox" name="inst" value="电影">电影 <input type="checkbox" name="inst" value="音乐">音乐 </td> </tr> </table> <input type="submit" value="提交"> </form> </body> </html>
处理页面:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ page contentType="text/html; charset=GBK" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>使用地址重写的方式提交参数</title&g