第五章 JSP内置对象
5.1 request对象
当客户访问服务器页面时,会提交一个HTTP请求。reauest对象就是对HTTP请求包的封装.因此,使用request对象的方法,可以获取客户端和服务器端信息。如客户端主机名、IP地址、传递参数名、参数值、服务器主机名和IP地址等等.
1.HTTP请求包
一般说来,一个HTTP请求包括三个部分:一个请求行、多个请求头、信息体。
⏹请求行:规定了请求的方法(get、post、head、delete、put等)、请求的资源、使用的HTTP协议版本号。
⏹请求头:一个HTTP请求可以包括多个头。头主要说明请求客户的主机(IP)、信息体的附加信息。
⏹信息体:请求正文.如,表单数据被封装为信息体.
◆下面是一个简单的HTTP请求包的组成:
get/hello.htm HTTP/1.1 :请求行
Host: www.sina :请求头
Name (数据组件接受的信息) :信息体(表单中的数据信息)
2.request对象的常用方法
⏹getProtocol() 客户向服务器提交使用的通讯协议。比如http/1。1等。
⏹getServletPath() 获取客户请求的JSP页面文件的目录.
⏹getContentLength() 获取客户提交的整个信息的长度.
⏹getMethod() 获取客户提交信息的方式.比如post或get。
⏹getHeader(String s) 获取HTTP头文件中由参数S指定的头名字的值。
⏹getHeaderNames() 获取头名字的一个枚举。
⏹getHeaders(String s) 获取头文件中指定头名字的全部值的一个枚举。
⏹getRemoteAddr() 获取客户的IP地址.
⏹getRemoteHost() 获取客户机的名称(如果获取不到,就获取IP地址)。
⏹getServerName() 获取服务器的名称。
⏹getServerPort() 获取服务器的端口号。
⏹getParameterNames() 获取客户提交的信息体部分的name参数值的一个枚举。
3.客户向服务器提交信息
客户通常使用HTML表单向服务器的某个JSP页面提交信息。HTML表单的一般格式是:
〈FORM method=get |post action=" 接受信的页面文件” >
[接受数据的组件(0~n个)]
数据提交控件
〈/FORM〉
5.1.1获取客户提交的信息
[例子5。1]从客户端获取信息,并在另一窗口输出这些信息
问题分析:
在一个页面创建表单,提供信息输入窗口,在另一页面,使用request对象获取表单信息。
程序结构:
ex5_1.jsp页面创建表单(信息输入窗口),用户提交信息后,页面定向到outInfo.jsp页面。页面交互关系如图5-1所示
程序算法:
ex5_1。jsp:
创建一表单,包含一个文本控件和一个提交控件
outInfo.jsp
1.获取文本框和提交控件的值
2。输出文本框和提交控件的值
5。1.2 获取用户提交数据
1. 获取表单提交的数据
[例子5。2]网上单选问答题
问题分析:
由一个页面输出单选试题,由另一页面获取用户选择,统计考生得分。
程序结构:
ex5_2。jsp页面将用户选择的答案提交给answer.jsp页面。
程序算法:
ex5_2.jsp: 创建一表单,包含两组单选按钮。
answer。jsp
1.获取用户提交的答案,if(s1==null){s1="”;}
2.与正确答案比较,统计得分
3.输出考试结果
关键代码:
request。getParamter(“表单组件名称”);
2. 获取地址栏变量值
request. getParameter(“变量名称”);
通常以链接或表单提交时附加变量。
第一个变量前要使用“?”,以后的变量之间要使用“&“。
http://localhost:8080/a.jsp?id=123&age=23&name=张三
5。1.3 用户注册
[例子5.3]使用散列表,保存注册的用户名,实现用户注册
问题分析:
由一个页面创建一个接受用户名输入的窗口;另一页面获取用户名,实现用户注册.
程序结构:
本程序由两个JSP页面文件构成。ex5_3。jsp页面将用户名提交给login。jsp页面,login。jsp实现用户注册。两页面的交互关系如图5-3所示。
程序算法:
ex5_3。jsp:
创建一表单,包含一个文本框,客户在此文本框中输入用户名。
login.jsp:
1.创建一空的散列对象(hashtable)
2.定义一方法putName(String s),该方法以s 为属性名和属性值,插入到散列对象(hashtable)中。
3.从表单中获取用户名,若散列对象中没有注册过此用户名,则将(name,name)插入到散列对象中(表示实现了用户注册),否则,提示用户换个名字注册.
关键代码:
〈%!
Hashtable hashtable=new Hashtable();
public synchronized void putName(String s) {
hashtable。put(s,s);
}
%〉
〈%
String name=request。getParameter(”name”);
if(name==null) name=" ”;
byte b[]=Bytes(”ISO—8859—1");
name=new String(b);
if(!(hashtable。containsKey(name))) {
jsp页面输出的三种方式 putName(name);
out。print("<br〉"+”你已注册成功");
out.print(”<br>”+"你注册的名字是"+name);
} else
out。print(”<br>"+”该名字已存在,请换个名字”);
%>
5。1.4获取客户环境信息
[例子5。4]获取客户和服务器有关信息
程序结构:
本程序由两个页面构成,ex5_4.jsp页面提交客户信息给getInfo。jsp 页面。两页面的交互关系如图5—4所示.
程序算法:
ex5_4.jsp
创建一表单,包含一文本框。
getInfo.jsp
1.输出环境信息
2.输出表单信息
5.2 response对象
客户访问服务器使用的是HTTP请求包,系统将HTTP请求包封装为request对象。服务器响应客户时,即向客户发送信息时,使用的是HTTP响应包 ,系统将HTTP响应包封装为response对象.在JSP页面中,可以使用response对象的方法动态控制响应方式,向客户端发送数据。HTTP响应包与HTTP请求包结构类似.
1.HTTP响应包
⏹一般说来,一个HTTP响应包由三个部分组成:一个状态行、多个响应头、信息体。
⏹状态行:描述服务器处理HTTP请求的成功与否。比如,是否收到请求包、请求被拒绝、请求超时、服务器发生错误等等。
⏹响应头:HTTP响应包发送的目标地址(IP)
⏹信息体:发送到服务器端的正文。如,在客户端显示的信息。
2.response对象常用的方法
⏹addHeader(String head,String value) 向包里添加一个头(head)及对应值(value)
⏹sendRedirect(URL url) 实现客户重定向
⏹setStatus(int n) 设置响应的状态代码。
3.响应包的状态行
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论