实验2-Http请求
更新时间:2024-04-30 10:46:01 阅读量: 综合文库 文档下载
- 实验2号马铃薯推荐度:
- 相关推荐
实验2 HTTP请求对象
一、实验目的
1. 掌握如何获得请求参数; 2. 掌握如何检索请求头;
3. 了解如何通过请求对象获得客户信息;
4. 重点掌握使用请求对象存储数据和请求转发。
二、实验原理
对客户的请求,容器根据请求调用Servlet的相应doXxx()方法,该方法带有两个参数,一个是HttpServletRequest,一个是HttpServletResponse,它们分别表示请求对象和响应对象,它们是容器自动创建的两个对象。可以使用这两个接口定义的若干方法完成有关操作。
三、实验内容与步骤
(一)通过查询串传递请求参数,并在Servlet中检索请求参数 【步骤1】编写下面的Servlet。 package cn.edu.servlet.request; import java.io.*;
import javax.servlet.*; import javax.servlet.http.*;
public class HelloUserServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException{
String userName = request.getParameter(\PrintWriter pw = response.getWriter(); pw.println(\pw.println(\pw.println(\pw.println(\
pw.println(%userName + \pw.println(\pw.println(\} }
【步骤2】在MyEcipse下查看web.xml文件,关键代码如下:
【步骤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 cn.edu.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(\
response.setContentType(\
String name = request.getParameter(\
name = new String(name.getBytes(\String age = request.getParameter(\
PrintWriter pw = response.getWriter(); pw.println(\ pw.println(\ pw.println(\ pw.println(\
pw.println(\姓名:\ pw.println(\年龄:\ pw.println(\ pw.println(\ }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ doGet(request, response); } }
【步骤3】查看web.xml文件,关键代码如下:
【步骤4】测试参数传递。在浏览器的地址栏中输入:
http://localhost:8080/prac02_request/input.html。输入数据,点击“确定”按钮,体会表单参数的传递。
测试过程如下:
测试结果:
问题1:如何通过超链接的锚标签()传递请求参数?
用get方式提交表单,形式如下
(三)编写一个Servlet,显示所有请求头
【步骤1】ShowHeadersServlet.java的Servlet能够检索所有的请求头,代码如下: package cn.edu.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(\ PrintWriter out = response.getWriter();
out.println(\
out.println(\ out.println(\
out.println(\
out.println(\ out.println(\ \
\ Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()){
String headerName = (String)headerNames.nextElement(); out.println(\
out.println(\ }
out.println(\ }
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{ doGet(request, response); } }
【步骤2】修改web.xml,加入下面内容:
【步骤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对象的getRequestDispatcher().forward(request,respose)方法来实现请求转发,通过setAttribute和getAttribute方法来实现数据的共享。
实验总结
这个实验中,在Eclipse+MyEclipse 8.6集成开发环境中创建了一个Web应用myweb,包括JSP页面,JavaBean和Servlet,实现了简单的登录功能。
在这次实验中自己学会了乱码问题的解决方法、会用request对象存储转发参数。
正在阅读:
实验2-Http请求04-30
教师培训机制(赵玉岭)06-28
2011年版:黄冈高考高中物理总复习资料_共150页03-08
SonicWALL_IPSec_VPN_方案模板_NSA_系列产品06-17
这个故事让我学会了坚持作文450字07-15
江苏省黄桥中学分校行政人员分工一览表10-17
2009年《桂阳县今冬明春消防工作方案》(正式文件)05-18
机动车工厂检查记录表工厂质量保证能力要求06-17
皮肤过敏怎么办,冬季基础护肤原理05-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 请求
- 实验
- Http
- 赖世雄初级美语文本
- CRH3动车组_车端连接_修改_1
- 贵阳市XX养殖小区大型沼气示范工程可行性研究报告
- 天津市五区县2017届高三上学期期末考试英语试题 doc
- 5BM2U1教案(提供:三灶学校)
- 2016年严重精神障碍患者管理治疗项目工作人员考试卷
- 网球体育理论考试
- 《计算机组成原理》实验报告一
- 基于神经网络工具箱的 BP 网络高血压研究
- (14份试卷合集)盐城市2018年高二数学理科上学期期中考试word试卷
- 渗透压冲击法提取大肠杆菌周质蛋白
- 2015届山东省滕州市第三中学高三高考适应性训练理综试题
- 一年级美术上册教学设计
- 跨文化交际复习资料
- s版三年语文下册全册教案
- 南开版教育学习题
- 发展心理学-案例分析
- 兰德华3000EF自动感应巡更棒说明书
- 五年级下数学水面高度变化和等积变换
- 江苏省清江中学2016届高三上学期周练数学试题(B系列周练)