实验2-Http请求汇总_第1页
实验2-Http请求汇总_第2页
实验2-Http请求汇总_第3页
实验2-Http请求汇总_第4页
实验2-Http请求汇总_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验2 HTTP请求对象一、实验目的1. 掌握如何获得请求参数;2. 掌握如何检索请求头;3. 了解如何通过请求对象获得客户信息;4. 重点掌握使用请求对象存储数据和请求转发。二、实验原理对客户的请求,容器根据请求调用Servlet的相应doXxx()方法,该方法带有两个参数,一个是 HttpServletRequest,个是HttpServletResponse,它们分别表示请求对象和响应对象, 它们是容器自动创建的两个对象。可以使用这两个接口定义的若干方法完成有关操作。三、实验内容与步骤(一)通过查询串传递请求参数,并在Servlet中检索请求参数【步骤1】编写下面的Servletopac

2、kage cn. edu.servlet.request;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HelloUserServlet exte nds HttpServletpublic void service(HttpServletRequest request,HttpServletResp onse resp onse) throws ServletExcepti on, I OExceptio nString userName = request.getParame

3、ter(userName);Prin tWriter pw = resp on se.getWriter();pw.pri ntl n( );pw.pri ntln ();pw.pri ntln ();pw.pri ntln ();pw.pri ntln (Hello, + userName + );pw.pri ntl n(/body);pw.pri ntln( );【步骤2】在MyEcipse下查看web.xml文件,关键代码如下:HelloUserServletc n. edu.servlet.request.HelloUserServle HelloUserServlet/myHell

4、oUserServlet 【步骤3】使用下面的URL访问之。h卄 p:/localhost:8080/prac02_request/myHellol JserServlet?userName=tom再Pack窝b Hiera 1=1 口效果:愛My Eclipse Java Ent中 ri砖-MyEdipse Web BrDw&er - MyEclipse Ent 中 ri se Wa dkbencl.菩 src曲 tmedu占crvlet|UE1 JRE System Library u Java EE 5 Libraries-WebRootB META-INF WEB-INF3 Fit)时

5、 webjcml indexujsp将userName的值改为你自己的名字(不要使用汉字),看输出结果。若不给出查询字 符串,结果如何?参数值使用汉字如何?将userName的值改为自己的名字(不使用汉字)结果如下:lips-e Jav-a EntSpriM -Wb Bitwraer - IWyEcSpsd! Enterprise Workbpj q心电也口注l-H-lnHim | 口* .兰 pradJ2.request,it iFK.edu.5PrvlffLrtqwe , iHeiloU-serSfirvlel JRE System libry LS SA Javd EE 5 LibF-a

6、n 白 WebAjQE& MEIA4NF-WEB-ENF 吉Kb 諦 webjomlf indexj-5.p*一 JrTdiEaXfci Eiwp u a回遽虞IE *OulJiiw 滋、Art QyrHint if nort .vvilablii- Rropeniss 凉內 opsnyVilutFile Edit Navigate Sea rchi Project MyEclipse Ruim Mndow HdpY* pracO2_requt若不给出查询字符串结果如下:I = jrSenHeirary JriesElhttp/lp clhot: BOBO/pr* cO2_req uef/my

7、HdloUrvlet”1.6 *Hello, null参数值使用汉字结果如下: 回 JT 工寸 iJT:O Wfl 町Jitdipse V;eb Frow金r 凉 T| *HeJIoUserServfetjava.x* wrb.xmlhttp:/1jlhQtM9O/pr#tO2#qu&t/mbHC3Ugr&evltt; * T -; IHellot张晋鹏从该实验可知尽管未对resp onse对象进行转码操作,但还是可以正确显示中文。(二)通过表单传递请求参数,使用HttpServletRequest对象获得请求参数【步骤1】首先编写一个input.html文件,存放在helloapp目录中。该

8、页面在屏幕上显 示一个表单,其中包括姓名和年龄域,点击确定”按钮后,将表单参数传递给 ParamServlet并显示出来。input.html代码如下: 参数传递 从表单向Servlet传递参数vform method=GET action=paramtest 姓名: 年龄: 【步骤2】编写ParamServlet.java,其代码如下:package cn. edu.servlet.request;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public clas

9、s ParamServlet exte nds HttpServlet public void doGet(HttpServletRequest request, HttpServletResp onse resp on se) throws ServletExcepti on, I OExceptio nresp on se.setCharacterE ncodi ng(UTF-8);resp on se.setC onten tType(text/html;charset= UTF-8);String n ame = request.getParameter(” name);name =

10、new String(name.getBytes(iso8859-1), UTF-8);String age = request.getParameter(age);Prin tWriter pw = resp on se.getWriter();pw.pri ntl n( );pw.pri ntln ();pw.pri ntln ();pw.pri ntl n();pw.println( 姓名:+name+);pw.println( 年龄:+age+);pw.pri ntl n();pw.pri ntln( );public void doPost(HttpServletRequest re

11、quest, HttpServletResp onse resp on se) throws ServletExcepti on, I OExceptio ndoGet(request, resp on se);【步骤3】查看web.xml文件,关键代码如下:ParamServletc n. edu.servlet.request.ParamServletParamServlet/myParamServlet【步骤4】测试参数传递。在浏览器的地址栏中输入:http:/localhost:8O8O/prac02 request/input.html。输入数据:点击确定” 按钮: 体会表单参数的传

12、递。测试过程如下:Edipt4 J4M1* Ent邮rp屁S Web 氐*时 MyEclipf# Entrpriw Wijrkbfnch屋PKk舄 住Hitra由遵回* :舍*甲X* lATtb.XTYliQ hAyEdipEt W*b Bro*?*.日J 丰 pc-BcOS.OZ*-药 srtJ 曲 .ieivletf-e* Pa ramServlet.MlpV/localho56:e090/prac02_02/h!laappAnput,lMniJ从表单向馳rvlet传递爭数L J RE ystei*i Library Java EE 5 Libranes JI 白 WebRp

13、t 白 helloapp 0 META-3NF& WE&4NFind上环p / pracli2_Fequet j* ire姓容:z*iai*ginpflng 年酣:竹MS甦逢 Imdg 空 21d Smipp$邂旦聲冋;SI -Propsrty Valure上 Problfrms 县 Tmk芋 Wb Bcowscr 8 Goiwoht 应.ift Srwins.j 暫rvf r* RemqlC4rC 1a g1.: Starting CociEft3 曲 ajt-60092QL-3-L7 E : 51 org. ep-ache.cfi.zal2n.Et.s.arcup.匚ara.:L:i:ia

14、. jcarc 信息::Se r acarcup in 426 nsIIIWindow HelpSt即File Edr! Navigate Search Project MEclipe测试结果: 瓯先 试亘趣网皑磁网站仃 t 判UB馳邑手m溯E t MM GJWtbOQ DO芒西4加悻ttfit芋TB brtenwt Explofer - m尊k扫源丐蛊遊无至姣匿http:川jcdhshEEW-.,-沾Inttmrt E昭I口中的或认设霰在已炯Intranet iSSr呼壬加1春更雰翻.姓名:zhangjinpeng年龄粘19问题1:如何通过超链接的锚标签( )传递请求参数?用getget方式

15、提交表单,形式如下(三) 编写一个 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 exte nds HttpServlet public void doGet(HttpServletRequest B Pff

16、dpFtiM 亦prflicfl2_DJ/imyPiiriir 園 I V : ItKfllhost =19 Window* ntcrnct ExpJQrCr/ffljrParam&eirvletMne-zhargijinpeifigi8ca-ge = 19request, HttpServletResp onse resp onse) throws ServletExcepti on, I OExceptio nresp on se.setC onten tType(text/html;charset=gb2312);Prin tWriter out = resp on se.getWrit

17、er();out.pri ntln( );out.pri ntln( AII Headers);out.pri ntl n(/head);out.pri ntln( );out.println(All Request Headers);out.println(n+n+Header NameHeader Value);Enu merati on headerNames = request.getHeaderNames(); while(headerNames.hasMoreEleme nts()Stri ng headerName = (Stri ng)headerNames. nextElem

18、e nt();out.pri ntln (+headerName);out.pri ntl n(+request.getHeader(headerName);out.pri ntl n( n);public void doPost(HttpServletRequest request, HttpServletResp onse resp on se)throws ServletExcepti on, I OExceptio n doGet(request, resp on se);【步骤2】修改web.xml,加入下面内容:ShowHeadersServletc n. edu.ShowHead

19、ersServletShowHeadersServlet/myShowHeadersServlet【步骤3】在浏览器地址栏中输入下面URL访问该Servlethttp:/localhost:8080/prac02_03/myShowHeadersServlet实验效果如下:書 webjcml ShoyvHeadef&Sefvt-Et.javahttp:/loca llro5t;060/prac0!2,03/rnyShowfira dersScrvlet二AIT Request HetKlers:llezider NanEHeadeir Vnliic:acceptapp 1 i cat ion/

20、K-SD sapp licat IQQ3 icnage/jpeg, supp lie at iQn.xiaalimage / gi f?LQsage/pjpey, application- x-ms-xbap application/md m.s-excelP applicat Lon/vnd. ES- pow-srpoinr, appLi亡nt ion.zntfords */+aceept- languag?sh-Cua-cpuAMD&4accept- encGdinggzip,. deflateuser-ageni:Wozilla/5. 0 (Windows NT 6. 1; Win.64

21、; x64: Trident/7. 0; rv1L. 0) Like GtekohostlocalhostzSOBOconnectionKeep-AlivecookieJSESSIOSID=75IB55753019S014EE17F1C4DFA5FSA6(四) 简单的综合应用【步骤1】创建一个名为input.html的HTML页面,其中包括一个表单,表单中包含两 个文本域,分别供用户输入学号和姓名,该页面也包含提交和重置按钮。【步骤2】定义一个名为com.demo.Student类,其中包括学号sno和姓名name两个private 的成员变量,定义访问和修改sno和name的方法。【步骤3】

22、编写名为FirstServlet的Servlet,要求当用户在input.html中输入信息后点击提交”按钮,请求 FirstServlet对其处理。在 FirstServlet中使用表单传递的参数(学号和 姓名)创建一个 Stude nt对象并将其作为属性存储在请求对象中,然后获得通过请求对象的 getRequestDispatcher()方法获得 RequestDispatcher()对象,将请求转发到SecondServlet。【步骤4】在SecondServlet中取出请求对象上存储的Student对象,并显示输出该学生的学号和姓名。在SecondServlet的输出中应该包含一个超链接,点击该连接可以返回input.html 页面。实验效果:I 0 閘,田甲乖冲吐Bro-ser X图2.1 input.html页面显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论