HttpServletRequest和HttpServletResponse技术概述课件_第1页
HttpServletRequest和HttpServletResponse技术概述课件_第2页
HttpServletRequest和HttpServletResponse技术概述课件_第3页
HttpServletRequest和HttpServletResponse技术概述课件_第4页
HttpServletRequest和HttpServletResponse技术概述课件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

HttpServletRequest与

HttpServletResponse1精选2021版课件本篇内容HttpServletRequest对象介绍HttpServletResponse对象介绍2精选2021版课件一、HttpServletRequest对象介绍HttpServletRequest对象简介读取请求行和请求消息头读取请求参数3精选2021版课件1.1HttpServletRequest对象简介客户端对于Servlet的每次访问请求,Servlet容器(如Tomcat)都会创建一个封装HTTP请求的对象和一个代表HTTP响应的对象,当调用Servlet的doGet或doPost方法时,这两个对象会作为参数被传递进去4精选2021版课件GET/ServletDemo/FirstServletHTTP/1.1Accept-Language:zh-cnUser-Agent:Mozilla/4.0(MSIE7.0;)Host:localhost:8080…发送HTTP请求requestTomcat创建出一个HttpServletRequest对象封装进HTTP请求消息被封装进http://localhost:8080/ServletDemo/servlet/FirstServlet访问服务器端Servlet5精选2021版课件HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,所发出的HTTP请求消息被封装在此对象之中,通过这个对象提供的方法,即可获得客户端发出的请求信息。6精选2021版课件HTTPGET请求示例GET/myApp/1.html?name=tom&age=21HTTP/1.1Accept:*/*Accept-Language:zh-cnAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(MSIE6.0;)Host:localhost:8080Connection:Keep-Alive“空行”7精选2021版课件POST/myApp/1.htmlHTTP/1.1Accept:*/*Accept-Language:zh-cnAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(MSIE6.0;)Host:localhost:8080Connection:Keep-Alivename=tom&age=21HTTPPOST请求示例8精选2021版课件1.2读取请求行和请求消息头获取(部分)请求行和请求头信息示例Tomcat自带示例9精选2021版课件1.3读取请求参数HttpServletRequest对象最基本的应用是获取浏览器传递给Web服务器的请求参数信息!重要10精选2021版课件1.3.1GET和POST方式下的请求参数请求参数:GET方式下,URL地址后的附加信息POST方式下,HTTP请求消息中的实体内容部分11精选2021版课件GET方式传递参数GET方式传递参数的形式浏览器在URL地址后以“?”形式带上数据,多个数据之间以&分隔http://localhost:8080/MyApp/myServlet?name1=value1&name2=value2名称为name2的请求参数请求参数的值12精选2021版课件POST方式传递参数POST方式:<form>表单method属性设置为“post”,提交表单时生成的HTTP请求方式POST方式传递参数的形式作为请求消息的实体内容部分进行传送13精选2021版课件1.3.2读取请求参数的方法通过HttpServletRequest对象的以下方法读取GET/POST方式下传递的参数getParametergetParameterValues14精选2021版课件I.单值读取—getParameter方法getParameter方法用于返回某个指定名称的请求参数的值方法原型:方法说明方法参数:指定名称的请求参数,字符串类型返回值:请求参数的值,字符串类型publicStringgetParameter(Stringname);15精选2021版课件getParameter示例userInfo.html页面提交给一个ServletServlet读取用户名和年龄并显示16精选2021版课件<formaction=“指向Servlet的URL”>

用户名:<inputtype=“text”name=“userName”/><br/>

年龄:<inputtype=“text”name=“age”/><br/><inputtype=“submit”/></form>服务器端Servlet程序通过request对象getParameter方法获取请求参数值request.getParameter(“userName”);request.getParameter(“age”);返回类型

String指定名称请求参数17精选2021版课件表单action提交至Servlet<servle-mapping>

<servlet-name>Servlet1</servlet-name><url-pattern>/servlet/Servlet1</url-pattern></serlvet-mapping>假定web.xml配置Servlet访问路径如此:<formaction=“”

>

用户名:<inputtype=“text”name=“userName”/><br/> …….<inputtype=“submit”/></form>/servlet/Servlet1/当前应用18精选2021版课件<servle-mapping>

<servlet-name>Servlet1</servlet-name><url-pattern>/servlet/Servlet1</url-pattern></serlvet-mapping><formaction=“”

>

用户名:<inputtype=“text”name=“userName”/><br/> …….<inputtype=“submit”/></form>/servlet/Servlet1/当前应用action值的第一个正斜杠”/”:代表当前站点根目录配置文件第一个正斜杠”/”:代表当前应用根目录19精选2021版课件getParameter示例示例20精选2021版课件getParameter方法说明getParameter方法说明:参数名区分大小写指定名称参数存在但没有设置值,返回空串指定名称不存在,返回null存在多个指定名称的参数,返回第一个getParameter方法通常用于获取在HTTP请求消息中仅出现一次的参数,即单个值的读取示例21精选2021版课件post方式提交,参数作为HTTP请求消息的实体内容部分进行传送,服务器端获取参数值的方法一样实际做法:在doGet或doPost方法体内直接调用另一个方法即可示例22精选2021版课件II.多值读取—getParameterValuesgetParameterValues方法用于返回某个指定名称的所有参数的值方法原型:方法说明方法参数:指定名称的请求参数,字符串类型返回值:字符串数组类型publicString[]getParameterValues(Stringname);23精选2021版课件getParameterValues示例Servlet读取选择的所用爱好并显示示例24精选2021版课件getParameterValues方法说明参数名区分大小写对于单值参数,返回的数组长度为1良好编程习惯:在使用对象或数组之前,判断是否为null示例getParameterValues方法说明25精选2021版课件获取客户端请求参数综合示例

示例提交给一个Servlet,读取全部请求参数并显示26精选2021版课件1.3.3正确书写地址提交到Servlet!理解27精选2021版课件表单action属性说明action属性值指定提交表单时,输入数据提交至的服务器端程序的地址,可以用相对路径或绝对路径绝对路径形式:http://localhost:8080/RequestDemo/servlet/Servlet1相对路径形式:以“/”开头不以“/”开头28精选2021版课件相对路径访问I以“/”开头表单action属性值以“/”开头此处的“/”代表站点根目录,非Web应用根目录访问Servlet写法:配置文件中Servlet的访问地址前加“/当前应用”http://localhost:8080/29精选2021版课件相对路径访问II不以“/”开头:相对于当前URL30精选2021版课件<formaction=“”

method=“get”>

用户名:<inputtype=“text”name=“userName”/><br/> …….<inputtype=“submit”/></form>http://localhost:8080/RequestDemo/userInfo.html<servle-mapping> <servlet-name>RequestParameterServlet</servlet-name><url-pattern>/servlet/Servlet1</url-pattern></serlvet-mapping>servlet/Servlet1表单所在页面URL31精选2021版课件地址写法配置文件,web.xml配置Servlet访问路径,以“/”开头,此处代表当前应用根目录页面文件,相对地址若以“/”开头,此处代表当前站点根目录表单action值页面中的超链接32精选2021版课件HttpServletRequest对象小结重点掌握读取请求参数方法getParametergetParameterValues理解和掌握正确提交至Servlet的写法页面中写法:WEB.XML配置文件中的Servlet访问路径前+“/当前应用”33精选2021版课件二、HttpServletResponse对象HttpServletResponse对象简介输出响应正文其它常用方法34精选2021版课件2.1HttpServletResponse对象简介客户端对于Servlet的每次访问请求,Servlet容器都会创建一个用于封装HTTP请求的对象和一个代表HTTP响应消息的对象,当调用Servlet的doGet或doPost方法时,这两个对象会作为参数被传递进去35精选2021版课件调用过程Tomcat容器GET/ServletDemo/FirstServletHTTP/1.1Accept-Language:zh-cnUser-Agent:Mozilla/4.0(MSIE7.0;)Host:localhost:8080…发送HTTP请求request被封装进responseTomcat同时创建出一个HttpServletResponse类型对象代表HTTP响应36精选2021版课件HttpServletResponse对象代表服务器端对客户端的响应,用于封装HTTP响应消息37精选2021版课件HTTP响应示例HTTP/1.1200OKServer:Apache-Coyote/1.1Last-Modified:Fri,23Dec201108:40:06GMTContent-Type:text/html;charset=utf-8Content-Length:339Date:Fri,23Dec201108:40:24GMT<HTML><HEAD>…..

一个响应行

若干响应消息头“空行”实体内容代表供浏览器显示所用的数据,即“查看源文件”看到的内容38精选2021版课件2.2输出响应正文(实体内容)输出响应正文的方法getWriter返回一个(文本)字符输出流对象专用于输出内容为文本字符的网页文档getOutPutStream返回一个字节输出流对象如果要输出二进制格式的响应正文,应该使用该方法39精选2021版课件getWriter方法getWriter返回一个PrintWriter类型的字符输出流对象,专用于输出内容为文本字符的网页文档以下方法都可以创建输出out.print();out.println();out.write();out.writeln();PrintWriterout=response.getWriter();40精选2021版课件getWriter方法说明响应正文不是直接发送到客户端,而是首先写入Servlet容器提供的一个输出缓冲区,然后由Servlet容器返回给Web服务器程序,再经由Web服务器程序发送给客户端PrintWriter对象的flush方法用来清理缓冲,close方法用来关闭输出流对象,释放资源程序中也可以不显式调用,由Servlet容器自动关闭,并清理缓冲out.flush();out.close();41精选2021版课件方法示例publicclassServlet1extendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse){

response.setContentType("text/html");

PrintWriterout=response.getWriter(); StringuserName=request.getParameter("userName");//通过PrintWriter类型对象out的println方法,输出内容至浏览器

out.println("username:"+userName+"<br/>"); //显式清理缓存和关闭 out.flush(); out.close();

}42精选2021版课件2.3HttpServletResponse其它常用方法字符集编码问题重定向43精选2021版课件2.3.1其他方法——字符集编码问题HttpServletResponse的setContentType方法设置响应消息头“Content-Type”设置Servlet输出内容的MIME类型,网页文档的类型通常为“text/html”在类型后面还可以指定响应内容的字符集编码类型,如果不指定,采用默认ISO8859-1字符集编码response.setContentType(“text/html;charset=utf-8");response.setContentType(“text/html");44精选2021版课件字符集问题——Servlet输出中文Servlet输出内容中包含中文,需要显式指定字符集为以下几种编码之一:utf-8gbkgb2312所有标准的浏览器和客户机都支持utf-8编码,网页文档最好采用utf-8编码不指定中文编码和指定中文编码示例45精选2021版课件显式指定字符集编码的作用:服务器端采用指定的字符集编码对内容进行编码转换后,发送给客户端浏览器通知浏览器采用该指定的字符集编码对接收到的内容进行解码显示response.setContentType(“text/html;charset=utf-8");显式设置字符集编码46精选2021版课件response.setContentType(“text/html;charset=iso8859-1");PrintWriterout=response.getWriter();out.println(“中");中服务器端ISO编码表127127客户端浏览器ISO编码表?无法正确转换显示输出中文乱码不包含中文编码转换成一个无效码ISO编码中,127对应的是其他符号,比如“?”47精选2021版课件response.setContentType(“text/html;charset=utf-8");PrintWriterout=response.getWriter();out.println(“中");中服务器端Utf-8编码表9797客户端浏览器Utf-8编码表中正确转换正确显示Servlet正确输出中文48精选2021版课件HTML网页文档中文问题HTML中定义了<meta>标签的http-equiv属性,可以模拟HTTP响应消息头<meta>标签的一个常用应用用来设置当前页面的字符集编码MyEclipse开发HTMLWindows-preference-FilesandEditors-HTML修改字符集编码为utf-8<metahttp-equiv=“Content-Type”content=“text/html;charset=utf-8”>49精选2021版课件request读取中文请求参数乱码读取中文请求参数乱码示例解决:请求页面字符集编码首先保证是utf-8Servlet程序获取参数前增加以下代码以上针对POST提交下的中文请求参数有效GET提交下中文请求参数乱码另有解决方法request.setCharacterEncoding("utf-8");50精选2021版课件字符集编码结论I原则:各处采用的(包含中文的)字符集编码一致网页文档(HTML,JSP)统一采用utf-8字符集编码HTML:Servlet程序开始处统一加以下几句:GET方式下中文请求参数乱码解决:修改server.xml<metahttp-equiv=“Content-Type”content=“text/html;charset=utf-8”>

response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");51精选2021版课件2.3.2其他方法——重定向HttpServletResponse的sendRedirect方法实现请求重定向location参数指定了重定向的URL,可以采用相对或绝对路径浏览器地址栏发生变化,显示为location所指向的URLpublicvoidsendRedirect(Stringlocation);52精选2021版课件示例:登录成功后,转向首页示例提交给Servlet判断处理53精选2021版课件Stringusername=request.getParameter("userName");Stringpwd=request.getParameter("pwd");if(username.equals("tom")&&pwd.equals("123")){

response.sendRedirect("/ResponseDemo/index.html");}else{

response.sendRedirect("/ResponseDemo/error.html");}54精选2021版课件location参数采用相对路径写法的说明若以“/”开头,此“/”代表站点(非Web应用)根目录如果不以“/”开头,代表相对于当前请求路径的URLpublicvoidsendRedirect(Stringlocation);55精选2021版课件HttpServletResponse对象小结掌握输出内容为文本字符的网页文档的方法掌握sendRedirect方法实现请求重定向中文乱码问题知道解决方法PrintWriterout=response.getWriter();out.println(“");56精选2021版课件附:读取请求参数中文乱码问题自学57精选2021版课件request读取中文请求参数浏览器传递请求参数时,会对中文字符进行编码,浏览器采用哪一种字符集编码,则Servlet对象的getParameter等方法必须以那一种字符集编码进行解码,才能得到正确的中文参数信息POST提交方式下,浏览器采用当前页面字符集对传递的中文参数进行编码HttpServletRequest对象的getParameter方法读取参数时,默认采用ISO8859-1字符集编码58精选2021版课件<html><head><metahttp-equiv="Content-Type"content="text/html;charset

温馨提示

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

评论

0/150

提交评论