一.request对象:该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。 1.Request对象可以使用getParameter(string s)方法获取该表单通过text提交的信息。飞飞A@sp技术乐园如: Request.getParameter(“boy”) 例:request1.jsp:
<%@ page c %> <HTML> <BODY bgcolor=green><FONT size=1> <FORM action="tree.jsp" method=post name=form> <INPUT type="text" name="boy"> <INPUT TYPE="submit" value="Enter" name="submit"> </FORM> </FONT> </BODY> </HTML>
tree.jsp:
<%@ page c %> <HTML> <BODY bgcolor=green><FONT size=1> <P>获取文本框提交的信息: <%String textContent=request.getParameter("boy"); %> <BR> <%=textContent%> <P> 获取按钮的名字: <%String buttonName=request.getParameter("submit"); %> <BR> <%=buttonName%> </FONT> </BODY> </HTML>
使用request对象获取信息要格外小心,要避免使用空对象,否则会出现NullPointerException异常,所以我们可以作以下处理. request3.jsp
<%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY bgcolor=cyan><FONT size=5> <FORM action="" method=post name=form> <INPUT type="text" name="girl"> <INPUT TYPE="submit" value="Enter" name="submit"> </FORM> <%String textContent=request.getParameter("girl"); double number=0,r=0; if(textContent==null) {textContent=""; } try{ number=Double.parseDouble(textContent); if(number>=0) {r=Math.sqrt(number) ; out.print("<BR>"+String.valueOf(number)+"的平方根:"); out.print("<BR>"+String.valueOf(r)); } else {out.print("<BR>"+"请输入一个正数"); } } catch(NumberFormatException e) {out.print("<BR>"+"请输入数字字符"); } %> </FONT> </BODY> </HTML>
2.处理汉字信息:当request对象获取客户提交的汉字字符时,会出现乱马问题,必须进行特殊处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个属组转化为字符窜对象即刻。 如: String textContent=request.getParameter("boy"); byte b[]=textContent.getBytes("ISO-8859-1"); textContent=new String(b); 例:tree2.jsp
<%@ page contentType="text/html;charset=GB2312" %> <MHML> <BODY> <P>获取文本框提交的信息: <%String textContent=request.getParameter("boy"); byte b[]=textContent.getBytes("ISO-8859-1"); textContent=new String(b); %> <BR> <%=textContent%> <P> 获取按钮的名字: <%String buttonName=request.getParameter("submit"); byte c[]=buttonName.getBytes("ISO-8859-1"); buttonName=new String(c); %> <BR> <%=buttonName%> </BODY> </HTML>
3.常用方法举例: getProtocol(), getServletPath(), getContentLength(), getMethod(), getRemoteAddr(), getRemoteHost(), getServerName(), getParameterName() 例:
<%@ page c %> <%@ page import="java.util.*" %> <MHML> <BODY bgcolor=cyan> <Font size=5> <BR>客户使用的协议是: <% String protocol=request.getProtocol(); out.println(protocol); %> <BR>获取接受客户提交信息的页面: <% String path=request.getServletPath(); out.println(path); %> <BR>接受客户提交信息的长度: <% int length=request.getContentLength(); out.println(length); %> <BR>客户提交信息的方式: <% String method=request.getMethod(); out.println(method); %> <BR>获取HTTP头文件中User-Agent的值:: <% String header1=request.getHeader("User-Agent"); out.println(header1); %> <BR>获取HTTP头文件中accept的值: <% String header2=request.getHeader("accept"); out.println(header2); %> <BR>获取HTTP头文件中Host的值: <% String header3=request.getHeader("Host"); out.println(header3); %> <BR>获取HTTP头文件中accept-encoding的值: <% String header4=request.getHeader("accept-encoding"); out.println(header4); %> <BR>获取客户的IP地址: <% String IP=request.getRemoteAddr(); out.println(IP); %> <BR>获取客户机的名称: <% String clientName=request.getRemoteHost(); out.println(clientName); %> <BR>获取服务器的名称: <% String serverName=request.getServerName(); out.println(serverName); %> <BR>获取服务器的端口号: <% int serverPort=request.getServerPort(); out.println(serverPort); %> <BR>获取客户端提交的所有参数的名字: <% Enumeration enum=request.getParameterNames(); while(enum.hasMoreElements()) {String s=(String)enum.nextElement(); out.println(s); } %> <BR>获取头名字的一个枚举: <% Enumeration enum_headed=request.getHeaderNames(); while(enum_headed.hasMoreElements()) {String s=(String)enum_headed.nextElement(); out.println(s); } %> <BR>获取头文件中指定头名字的全部值的一个枚举: <% Enumeration enum_headedValues=request.getHeaders("cookie"); while(enum_headedValues.hasMoreElements()) {String s=(String)enum_headedValues.nextElement(); out.println(s); } %> <BR> </Font> </BODY> </HTML>
4.获取HTML表单提交的数据 单选框radio 例: radio.jsp:
<HTML> <%@ page c %> <BODY bgcolor=cyan><Font size=1 > <P>诗人李白是中国历史上哪个朝代的人: <FORM action="answer.jsp" method=post name=form> <INPUT type="radio" name="R" value="a">宋朝 <INPUT type="radio" name="R" value="b">唐朝 <INPUT type="radio" name="R" value="c">明朝 <INPUT type="radio" name="R" value="d" checked="ok">元朝 <BR> <P>小说红楼梦的作者是: <BR> <INPUT type="radio" name="P" value="a">曹雪芹 <INPUT type="radio" name="P" value="b">罗贯中 <INPUT type="radio" name="P" value="c">李白 <INPUT type="radio" name="P" value="d">司马迁 <BR> <INPUT TYPE="submit" value="提交答案" name="submit"> </FORM> </FONT> </BODY> </HTML> answer.jsp: <HTML> <%@ page c %> <BODY bgcolor=cyan><Font size=1 > <% int n=0; String s1=request.getParameter("R"); String s2=request.getParameter("P"); if(s1==null) {s1="";} if(s2==null) {s2="";} if(s1.equals("b")) { n++;} if(s2.equals("a")) { n++;} %> <P>您得了<%=n%>分 </FONT> </BODY> </HTML>
列表框<select><Option> 例: select.jsp:
<HTML> <%@ page c %> <BODY bgcolor=cyan><Font size=1 > <P>选择计算和的方式 <FORM action="sum.jsp" method=post name=form> <Select name="sum" size=2> <Option Selected value="1">计算1到n的连续和 <Option value="2">计算1到n的平方和 <Option value="3">计算1到n的立方和 </Select> <P>选择n的值:<BR> <Select name="n" > <Option value="10">n=10 <Option value="20">n=20 <Option value="30">n=30 <Option value="40">n=40 <Option value="50">n=50 <Option value="100">n=100 </Select> <BR><BR> <INPUT TYPE="submit" value="提交你的选择" name="submit"> </FORM> </FONT> </BODY> </HTML> sum.jsp: <HTML> <%@ page c %> <BODY bgcolor=cyan><Font size=1 > <% long sum=0; String s1=request.getParameter("sum"); String s2=request.getParameter("n"); if(s1==null) {s1="";} if(s2==null) {s2="0";} if(s1.equals("1")) {int n=Integer.parseInt(s2); for(int i=1;i<=n;i++) {sum=sum+i; } } else if(s1.equals("2")) {int n=Integer.parseInt(s2); for(int i=1;i<=n;i++) {sum=sum+i*i; } } else if(s1.equals("3")) {int n=Integer.parseInt(s2); for(int i=1;i<=n;i++) {sum=sum+i*i*i; } } %> <P>您的求和结果是<%=sum%> </FONT> </BODY> </HTML>
|