




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验2 HTTP请求对象一、实验目的1. 掌握如何获得请求参数;2. 掌握如何检索请求头;3. 了解如何通过请求对象获得客户信息;4. 重点掌握使用请求对象存储数据和请求转发。 二、实验原理对客户的请求,容器根据请求调用Servlet的相应doXxx()方法,该方法带有两个参数,一个是HttpServletRequest,一个是HttpServletResponse,它们分别表示请求对象和响应对象,它们是容器自动创建的两个对象。可以使用这两个接口定义的若干方法完成有关操作。三、实验内容与步骤(一)通过查询串传递请求参数,并在Servlet中检索请求参数【步骤1】编写下面的Servlet。package .servlet.request;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HelloUserServlet extends HttpServletpublic void service(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOExceptionString userName = request.getParameter(userName);PrintWriter pw = response.getWriter();pw.println();pw.println();pw.println();pw.println();pw.println(Hello, + userName + );pw.println();pw.println();【步骤2】在MyEcipse下查看web.xml文件,关键代码如下: HelloUserServlet .servlet.request.HelloUserServle HelloUserServlet /myHelloUserServlet 【步骤3】使用下面的URL访问之。http:/localhost:8080/prac02_request/myHelloUserServlet?userName=tom效果:将userName的值改为你自己的名字(不要使用汉字),看输出结果。若不给出查询字符串,结果如何?参数值使用汉字如何?将userName的值改为自己的名字(不使用汉字)结果如下:若不给出查询字符串结果如下:参数值使用汉字结果如下:从该实验可知尽管未对response对象进行转码操作,但还是可以正确显示中文。(二)通过表单传递请求参数,使用HttpServletRequest对象获得请求参数【步骤1】首先编写一个input.html文件,存放在helloapp目录中。该页面在屏幕上显示一个表单,其中包括姓名和年龄域,点击“确定”按钮后,将表单参数传递给ParamServlet并显示出来。input.html代码如下:参数传递 从表单向Servlet传递参数 姓名: 年龄: 【步骤2】编写ParamServlet.java,其代码如下:package .servlet.request;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class ParamServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setCharacterEncoding(UTF-8); response.setContentType(text/html;charset= UTF-8); String name = request.getParameter(name);name = new String(name.getBytes(iso8859-1), UTF-8);String age = request.getParameter(age); PrintWriter pw = response.getWriter(); pw.println(); pw.println(); pw.println(); pw.println(); pw.println(姓名:+name+); pw.println(年龄:+age+); pw.println(); pw.println(); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doGet(request, response); 【步骤3】查看web.xml文件,关键代码如下: ParamServlet .servlet.request.ParamServlet ParamServlet /myParamServlet【步骤4】测试参数传递。在浏览器的地址栏中输入:http:/localhost:8080/prac02_request/input.html。输入数据,点击“确定”按钮,体会表单参数的传递。测试过程如下:测试结果:问题1:如何通过超链接的锚标签()传递请求参数?用get方式提交表单,形式如下(三)编写一个Servlet,显示所有请求头【步骤1】ShowHeadersServlet.java的Servlet能够检索所有的请求头,代码如下:package .servlet.request;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class ShowHeadersServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(text/html;charset=gb2312); PrintWriter out = response.getWriter(); out.println(); out.println(All Headers); out.println(); out.println(); out.println(All Request Headers); out.println(n+ n+ Header NameHeader Value); Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements() String headerName = (String)headerNames.nextElement(); out.println(+headerName); out.println(+request.getHeader(headerName); out.println(n); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doGet(request, response); 【步骤2】修改web.xml,加入下面内容: ShowHeadersServlet .ShowHeadersServlet ShowHeadersServlet /myShowHeadersServlet【步骤3】在浏览器地址栏中输入下面URL访问该Servlet http:/localhost:8080/prac02_03/myShowHeadersServlet实验效果如下:(四)简单的综合应用【步骤1】创建一个名为input.html的HTML页面,其中包括一个表单,表单中包含两个文本域,分别供用户输入学号和姓名,该页面也包含提交和重置按钮。【步骤2】定义一个名为com.demo.Student类,其中包括学号sno和姓名name两个private的成员变量,定义访问和修改sno和name的方法。【步骤3】编写名为FirstServlet的Servlet,要求当用户在input.html中输入信息后点击“提交”按钮,请求FirstServlet对其处理。在FirstServlet中使用表单传递的参数(学号和姓名)创建一个Student对象并将其作为属性存储在请求对象中,然后获得通过请求对象的getRequestDispatcher()方法获得RequestDispatcher()对象,将请求转发到SecondServlet。【步骤4】在SecondServlet中取出请求对象上存储的Student对象,并显示输出该学生的学号和姓名。在SecondServlet的输出中应该包含一个超链接,点击该连接可以返回input.html页面。 图2.1 input.html页面显示结果 图2.2 SecondServlet显示结果实验效果:出现乱码的原因是没有设置响应的字符编码,和对相应的字符编码进行转换。加入相应代码后:四、思考题1. 在Servlet中如何获得请求参数?通过request对象的getParameter()方法来获得参数2. 如何实现请求转发?如何在请求对象中共享数据?通过request对象的get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京首都医科大学附属北京朝阳医院派遣合同制岗位招聘12人(第三次)模拟试卷及答案详解(历年真题)
- 2025湖北武汉大学中南医院咸宁医院咸宁市第一人民医院招聘15人模拟试卷附答案详解(完整版)
- 2025年湖南高速土地资源经营有限公司第二批任务型劳动合同人员招聘考前自测高频考点模拟试题附答案详解(完整版)
- 2025届招商蛇口春季校园招聘模拟试卷完整参考答案详解
- 2025汽车租赁合同详细版
- 2025年芜湖经济技术开发区招聘小学教师37人考前自测高频考点模拟试题参考答案详解
- 2025年安庆医药高等专科学校面向校园招聘21人模拟试卷及答案详解1套
- 2025年云南林业考试试题及答案
- 2025年宁波北仑区人民医院医疗健康服务集团梅山院区招聘编外人员2人模拟试卷及答案详解1套
- 2025年长春急救中心公开招聘编外聘用制工作人员(10人)考前自测高频考点模拟试题及答案详解(易错题)
- 2025年养老护理员(中级)考试试卷:专业理论与实操考核
- 家长和孩子签订协议书
- 2025年养老护理员(中级)考试试卷:急救技能与实操训练
- 智慧水务系统的构建与实施-全面剖析
- 灸疗技术操作规范脐药灸
- (二模)新疆维吾尔自治区2025年普通高考第二次适应性检测 英语试卷(含答案详解)
- 2024-2025学年江苏省苏州市高二上册10月月考数学学情检测试题
- 《慢性肾脏病相关心肌病综合管理中国专家共识(2024版)》解读
- 牛津译林版九年级英语上学期期中热点题型专练刷题03名校选词填空20篇(原卷版+解析)
- DB11T 2032-2022 工程建设项目多测合一技术规程
- 中小学教师职称评审讲课答辩英语学科全英答辩题目汇编(附汉语翻译)
评论
0/150
提交评论