160 likes | 383 Views
request 对象. 当客户访问服务器页面时,会提交一个 HTTP 请求。 reauest 对象就是对 HTTP 请求包的封装。因此,使用 request 对象的方法,可以获取客户端和服务器端信息。如客户端主机名、 IP 地址、传递参数名、参数值、服务器主机名和 IP 地址等等。. 1 . request 对象的常用方法 getProtocol() 获取客户向服务器提交信息所使用的通讯协议。比如 http/1.1 等。 getServletPath() 获取客户请求的 JSP 页面文件的目录 . getContentLength() 获取客户提交的整个信息的长度 .
E N D
request对象 • 当客户访问服务器页面时,会提交一个HTTP请求。reauest对象就是对HTTP请求包的封装。因此,使用request对象的方法,可以获取客户端和服务器端信息。如客户端主机名、IP地址、传递参数名、参数值、服务器主机名和IP地址等等。
1.request对象的常用方法 • getProtocol() 获取客户向服务器提交信息所使用的通讯协议。比如http/1.1等。 • getServletPath() 获取客户请求的JSP页面文件的目录. • getContentLength() 获取客户提交的整个信息的长度. • getMethod() 获取客户提交信息的方式.比如post或get. • getHeader(String s) 获取HTTP头文件中由参数S指定的头名字的值。一般来说s参数可取得头名有accept、referer、accept-language、content-type、accept-encoding、user-agent、host、content-length、connectiong、cookie等。比如,s取值user-agnet将获取客户的浏览器的版本号等信息。
2.request对象的常用方法 • getHeaderNames() 获取头名字的一个枚举。 • getHeaders(String s) 获取头文件中指定头名字的全部值的一个枚举。 • getRemoteAddr() 获取客户的IP地址。 • getRemoteHost() 获取客户机的名称(如果获取不到,就获取IP地址)。 • getServerName() 获取服务器的名称。 • getServerPort() 获取服务器的端口号。 • getParameter () 获取客户提交的参数值。 • getParameterNames() 获取客户提交的所有参数名称。
3.客户向服务器提交信息 • 客户通常使用HTML表单向服务器的某个JSP页面提交信息。HTML表单的一般格式是: <FORM method=get |post action=” 接受信的页面文件” > [接受数据的组件(0~n个)] 数据提交控件 </FORM>
获取客户提交的信息 [例子1]从客户端获取信息,并在另一窗口输出这些信息 问题分析: 在一个页面创建表单,提供信息输入窗口,在另一页面,使用request对象获取表单信息。 程序结构: ex5_1.jsp页面创建表单(信息输入窗口),用户提交信息后,页面定向到outInfo.jsp页面。页面交互关系如图5-1所示。
提交 ex5_1.jsp 页面 outInfo.jsp 页面 图5-1 页面交互关系 程序算法: ex5_1.jsp: 创建一表单,包含一个文本控件和一个提交控件 outInfo.jsp 1.获取文本框的值 2.输出文本框的值
程序代码: ex5_1.jsp: <%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY bgcolor=cyan> <FONT size=3> <FORM action="outInfo.jsp" method=post name=form> <INPUT type="text" name="boy"> <INPUT TYPE="submit" value="提交" name="submit"> </FORM> </FONT> </BODY> </HTML>
outInfo.jsp: <%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY bgcolor=cyan> <FONT size=4> <!--获取客户端的表单信息--> <% String textContent; request.setCharacterEncoding("GBK"); textContent=request.getParameter("boy"); %>
<!--将文本信息和按钮信息输出到客户端--> <P><B>获取文本框提交的信息:</B><BR> <%=textContent%> </FONT> </BODY> </HTML>
提交答案 ex5_2.jsp 页面 answer.jsp 页面 图5-2 页面交互关系 获取表单提交的数据 [例子2]网上单选问答题 问题分析: 由一个页面输出单选试题,由另一页面获取用户选择,统计考生得分。 程序结构: ex5_2.jsp页面将用户选择的答案提交给answer.jsp页面。页面交互关系如图5-2所示。
程序算法: ex5_2.jsp: 创建一表单,包含两组单选按钮。 answer.jsp 1.获取用户提交的答案 2.与正确答案比较,统计得分 3.输出考试结果
程序代码: ex5_2.jsp: <HTML> <%@ page contentType="text/html;charset=GB2312" %> <BODY bgcolor=cyan> <FONT size=4> <FORM action="answer.jsp"method=post name=form> <P>诗人李白是中国历史上哪个朝代的人: <BR> <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">元朝 <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="c" checked="" >司马迁 <BR> <INPUT TYPE="submit" value="提交答案" name="submit"> </FORM> </FONT> </BODY> </HTML>
answer.jsp: <%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY bgcolor=cyan><FONT size=3> <% int n=0; request.setCharacterEncoding("GBK"); 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>
提交 ex5_4.jsp 页面 getInfo.jsp 页面 图5-4 页面交互关系 获取客户环境信息 [例子4]获取客户和服务器有关信息 程序结构: 本程序由两个页面构成,ex5_4.jsp页面提交客户信息给getInfo.jsp 页面。两页面的交互关系如图5-4所示。 程序算法: ex5_4.jsp 创建一表单,包含一文本框。 getInfo.jsp 1.输出环境信息 2.输出表单信息
程序代码: ex5_4.jsp: <%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY bgcolor=cyan><FONT size=3> <FORM action="getInfo.jsp" method=post name=form> <INPUT type="text" name="boy"> <INPUT TYPE="submit" value="提交" name="submit"> </FORM> </FONT> </BODY> </HTML>
页面说明 (1)<%@ page contentType="text/html;charset=GBK" %> 注:page 指令,contentType页面显示模式。text/html 表示文本显示; (2)out对象。 注:在out对象中,最常用的方法就是print()和println()。在使用print()或println()方法时,由于客户端是浏览器,因此向客户端输出时,可以使用HTML中的一些标记,例如:“out.println(”<h1>Hello,JSP</h1>“);”。 (3)request对象。 注:通常我们用得最多的就是客户端请求的参数名称和参数值信息。得到某参数值的语法为:“request.getParameter(”param1“)”。 (4)request.setCharacterEncoding("GBK"); 注:解决页面传输中的中文问题