第五章  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小时内删除。