1.request对象定义
当用户请求一个JSP页面时,JSP页面所在的Web服务器会将用户的请求信息封装到内置对象request中。
request对象主要用于接收客户端通过HTTP传送给服务器端的数据,可以通过其方法对数据进行操作。
2.request对象的常用方法
(1)getParameter(String name):用于获得客户端传送给服务器端的参数值。获取表单提交的信息,以字符串形式返回客户端传来的某一个请求参数的值,该参数名由name指定。当传递给此方法的参数没有实际参数与之对应时,返回null;
(2)getParameterValues(String name):用于获得指定参数的所有值。返回客户端传送给服务器端的所有参数名,结果集是一个Enumeration实例。当传递给此方法的参数名没有实际参数与之对应时,返回null;
(3)setAttribute(String name,java.lang.Object obj):用于设置参数值;
(4)removeAttribute(String name):用于删除请求中的一个属性。
(5)getServerName():用于获取服务器的端口号;
(6)getRequestURL():用于获取客服端的地址;
(7)getRemoteAddr():用于获取客户端的IP地址;
3.request对象应用实例
(1)request.jsp页面中输入数据并单击“提交”按钮后,跳转到requestHandle.jsp页面
<%@ 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>request对象应用实例1</title> </head> <body> <form action="requestHandle.jsp" method="get"> 请输入数据:<input type="text" name="name"/> <input type="submit" name="submit" value="submit"/> </form> </body> </html>
对应的图片为:
在requestHandle.jsp页面对提交的数据进行处理,并将数据输出到该页面中
<%@ 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>数据处理页面</title> </head> <body> <%--getParameter(String name)获取客户端传送到服务器端的参数值 --%> <% String name=request.getParameter("name"); String buttom=request.getParameter("submit"); %> 获取到客户端提交得文本和按钮信息如下: <hr> 文本框输入的信息:<%=name %> <br> 按钮信息:<%=buttom %> <hr> </body> </html>
对应的结果图片为
(2)request1.jsp页面是输出单选题页面,题目答完后单击“考试完成”按钮,跳转到requestHandle1.jsp页面
<%@ 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>request单选题页面</title> </head> <body> <form action="requestHandle1.jsp" method="get"> 1.response对象的setHeader(String name,String value)方法的作用是( )。<br> <input type="radio" name="1" value="A"> 添加HTTP文件头<br> <input type="radio" name="1" value="B"> 设定指定名字的HTTP文件头的值<br> <input type="radio" name="1" value="C"> 判断指定名字的HTTP文件头是否存在<br> <input type="radio" name="1" value="D"> 向客户端发生错误信息<br> 2.设置session的有效时间(也叫超时时间)的方法是( )。<br> <input type="radio" name="2" value="A"> setMaxInactiveInterval(int interval)<br> <input type="radio" name="2" value="B"> getAttributeName()<br> <input type="radio" name="2" value="C"> set AttributeName(String name,Java.lang.Object value)<br> <input type="radio" name="2" value="D"> getLastAccessedTime()<br> 3.能清除缓冲区中的数据,并把数据输出到客户端是out对象中的方法是( )。<br> <input type="radio" name="3" value="A"> out.newLine()<br> <input type="radio" name="3" value="B"> out.clear()<br> <input type="radio" name="3" value="C"> out.flush()<br> <input type="radio" name="3" value="D"> out.clearBuffer()<br> 4.pagerContext对象的findAttribute()方法的作用是( )。<br> <input type="radio" name="4" value="A"> 用来设置默认页面的范围或指定范围之中的已命名对象<br> <input type="radio" name="4" value="B"> 用来删除默认页面的范围或指定范围之中已命名的对象<br> <input type="radio" name="4" value="C"> 按照页面请求、会话以及应用程序范围的顺序实现对某个已命名属性的搜索<br> <input type="radio" name="4" value="D"> 以字符串的形式返回一个对异常的描述<br> <input type="submit" value="考试完成"> </form> </body> </html>
对应的图片为
requestHandle1.jsp对提交的数据进行处理,并将数据即本次成绩输出到页面中
<%@ 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>考试成绩</title> </head> <body> <h3>您本次测试的成绩是:</h3> <% float grade=0; String str1=request.getParameter("1"); String str2=request.getParameter("2"); String str3=request.getParameter("3"); String str4=request.getParameter("4"); if(str1==null) str1=""; if(str2==null) str2=""; if(str3==null) str3=""; if(str4==null) str4=""; if(str1.equals("B")) grade++; if(str2.equals("A")) grade++; if(str3.equals("D")) grade++; if(str4.equals("C")) grade++; out.print((int)(grade/4*100)+"分"); %> </body> </html>
对应的结果图片为
(3)最后写一个对初学者较为复杂的数据处理页面
首先实现数据的输入
<%@ 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>request对象应用实例3</title> </head> <body> <form action="requestHandle2.jsp" method="get"> <p>文本内容<input type="text" name="text"></p> <p>整数类型<input type="text" name="integer"></p> <p> 1.<input type="checkbox" name="checkbox1" value="1"> 2.<input type="checkbox" name="checkbox2" value="2"> </p> <p> 下拉列表: <select name="select"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> </select> </p> <p><input type="submit" name="submit" value="提交"> </form> </body> </html>
对应的图片为
最后进行数据处理与输出的页面
<%@ page import="java.util.Vector" %> <%@ 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> <% String strText,strInteger,strCheckbox1,strCheckbox2; String strSelect,errOut; String[] strOut=new String[5]; Integer intInteger; int errsCount; Vector errs=new Vector(); strText=request.getParameter("text"); //得到并处理名为text的文本输入 if(strText.length()==0){ //向错误信息库中添加信息 errs.addElement(new String("文本内容没有值输入")); } strInteger=request.getParameter("integer"); //得到名为integer的输入并转化为integer,同时检查是否为数值 try{ intInteger=Integer.valueOf(strInteger); /* Integer. valueOf()可以将基本类型int转换为包装类型Integer, 或者将String转换成Integer,String如果为Null或“”都会报错*/ }catch(NumberFormatException e){ errs.addElement(new String("整数类型需要输入数字!")); //向错误信息库中添加信息 intInteger=new Integer(0); } strCheckbox1=request.getParameter("checkbox1"); strCheckbox2=request.getParameter("checkbox2"); //得到checkbox的输入 if(strCheckbox1==null){ strCheckbox1="没有被选中"; }else{ strCheckbox1="被选中"; } if(strCheckbox2==null){ strCheckbox2="没有被选中"; }else{ strCheckbox2="被选中"; } //得到select的输入 strSelect=request.getParameter("select"); strOut[0]="文本内容的值是"+strText; strOut[1]="<br>整数类型的值是:"+intInteger; strOut[2]="<br>复选框1"+strCheckbox1; strOut[3]="<br>复选框2"+strCheckbox2; strOut[4]="<br>下拉列表的值是:"+strSelect+"<br>"; //输出结果 errsCount=errs.size(); errOut=new String(""); //输出错误; for(int i=0;i<errsCount;i++){ errOut=errs.elementAt(i).toString(); errOut+="<br>"; } out.println("数据处理结果<br>"); for(String arr:strOut) out.println(arr); //输出结果 if(errsCount!=0){ out.println("错误原因<br>"); out.println(errOut); } %> </body> </html>
对应的结果图片为