




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、HttpServletRequest 与HttpServletResponse,本篇内容,HttpServletRequest对象介绍 HttpServletResponse对象介绍,一、HttpServletRequest对象介绍,HttpServletRequest对象简介 读取请求行和请求消息头 读取请求参数,1.1 HttpServletRequest对象简介,客户端对于Servlet的每次访问请求,Servlet容器(如Tomcat)都会创建一个封装HTTP请求的对象和一个代表HTTP响应的对象,当调用Servlet的doGet或doPost方法时,这两个对象会作为参数被传递进去,G
2、ET /ServletDemo/FirstServlet HTTP/1.1 Accept-Language: zh-cn User-Agent: Mozilla/4.0 (MSIE 7.0;) Host: localhost:8080 ,发送HTTP请求,request,Tomcat创建出一个 HttpServletRequest对象 封装进HTTP请求消息,被封装进,http:/localhost:8080/ServletDemo/servlet/FirstServlet,访问服务器端Servlet,HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器
3、时,所发出的HTTP请求消息被封装在此对象之中,通过这个对象提供的方法,即可获得客户端发出的请求信息。,HTTP GET请求示例,GET /myApp/1.html?name=tom ) Host: localhost:8080 Connection: Keep-Alive, “空行”,POST /myApp/1.html HTTP/1.1 Accept: */* Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 ( MSIE 6.0; ) Host: localhost:8080 Con
4、nection: Keep-Alive,name=tom,getParameter示例,userInfo.html页面,提交给一个Servlet,Servlet读取用户名和年龄 并显示, 用户名: 年 龄: ,服务器端Servlet程序通过 request对象getParameter 方法获取请求参数值,request.getParameter(“userName”);,request.getParameter(“age”);,返回类型 String,指定名称请求参数,表单action提交至Servlet, Servlet1 /servlet/Servlet1 ,假定web.xml配置 Ser
5、vlet访问路径如此:, 用户名: . ,/servlet/Servlet1,/当前应用, Servlet1 /servlet/Servlet1 , 用户名: . ,/servlet/Servlet1,/当前应用,action值的第一个正斜杠”/”: 代表当前站点根目录,配置文件第一个正斜杠”/”: 代表当前应用根目录,getParameter示例,示例,getParameter方法说明,getParameter方法说明: 参数名区分大小写 指定名称参数存在但没有设置值,返回空串 指定名称不存在,返回null 存在多个指定名称的参数,返回第一个 getParameter方法通常用于获取在HTT
6、P请求消息中仅出现一次的参数,即单个值的读取,示例,post方式提交,参数作为HTTP请求消息的实体内容部分进行传送,服务器端获取参数值的方法一样 实际做法:在doGet或doPost方法体内直接调用另一个方法即可,示例,II.多值读取getParameterValues,getParameterValues方法用于返回某个指定名称的所有参数的值 方法原型: 方法说明 方法参数:指定名称的请求参数,字符串类型 返回值:字符串数组类型,public String getParameterValues(String name);,getParameterValues示例,Servlet读取选择的所
7、用爱 好并显示,示例,getParameterValues方法说明 参数名区分大小写 对于单值参数,返回的数组长度为1 良好编程习惯:在使用对象或数组之前,判断是否为null,示例,getParameterValues方法说明,获取客户端请求参数综合示例,示例,提交给一个Servlet,读取 全部请求参数并显示,1.3.3 正确书写地址提交到Servlet,!,理解,表单action属性说明,action属性值指定提交表单时,输入数据提交至的服务器端程序的地址,可以用相对路径或绝对路径 绝对路径形式: http:/localhost:8080/RequestDemo/servlet/Servl
8、et1 相对路径形式: 以“/”开头 不以“/”开头,相对路径访问I,以“/”开头 表单action属性值以“/”开头 此处的“/”代表站点根目录,非Web应用根目录 访问Servlet写法:配置文件中Servlet的访问地址前加“/当前应用”,http:/localhost:8080/,相对路径访问II,不以“/”开头: 相对于当前URL, 用户名: . ,http:/localhost:8080/RequestDemo/userInfo.html, RequestParameterServlet /servlet/Servlet1 ,servlet/Servlet1,表单所在页面URL,地
9、址写法,配置文件,web.xml配置Servlet访问路径,以“/”开头,此处代表当前应用根目录 页面文件,相对地址若以“/”开头,此处代表当前站点根目录 表单action值 页面中的超链接,HttpServletRequest对象小结,重点掌握读取请求参数方法 getParameter getParameterValues 理解和掌握正确提交至Servlet的写法 页面中写法:WEB.XML配置文件中的Servlet访问路径前 + “ /当前应用 ”,二、HttpServletResponse对象,HttpServletResponse对象简介 输出响应正文 其它常用方法,2.1 HttpS
10、ervletResponse对象简介,客户端对于Servlet的每次访问请求,Servlet容器都会创建一个用于封装HTTP请求的对象和一个代表HTTP响应消息的对象,当调用Servlet的doGet或doPost方法时,这两个对象会作为参数被传递进去,调用过程,Tomcat容器,GET /ServletDemo/FirstServlet HTTP/1.1 Accept-Language: zh-cn User-Agent: Mozilla/4.0 (MSIE 7.0;) Host: localhost:8080 ,发送HTTP请求,request,被封装进,response,Tomcat同时
11、创建出一个 HttpServletResponse类型对象 代表HTTP响应,HttpServletResponse对象代表服务器端对客户端的响应,用于封装HTTP响应消息,HTTP响应示例,HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Last-Modified: Fri, 23 Dec 2011 08:40:06 GMT Content-Type: text/html; charset=utf-8 Content-Length: 339 Date: Fri, 23 Dec 2011 08:40:24 GMT .,一个响应行,若干响应消息头, “空行”,
12、实体内容代表供浏览器显示所用的数据,即“查看源文件”看到的内容,2.2 输出响应正文(实体内容),输出响应正文的方法 getWriter 返回一个(文本)字符输出流对象 专用于输出内容为文本字符的网页文档 getOutPutStream 返回一个字节输出流对象 如果要输出二进制格式的响应正文,应该使用该方法,getWriter方法,getWriter返回一个PrintWriter类型的字符输出流对象,专用于输出内容为文本字符的网页文档 以下方法都可以创建输出 out.print(); out.println(); out.write(); out.writeln();,PrintWriter
13、out = response.getWriter();,getWriter方法说明,响应正文不是直接发送到客户端,而是首先写入Servlet容器提供的一个输出缓冲区,然后由Servlet容器返回给Web服务器程序,再经由Web服务器程序发送给客户端 PrintWriter对象的flush方法用来清理缓冲,close方法用来关闭输出流对象,释放资源 程序中也可以不显式调用,由Servlet容器自动关闭,并清理缓冲,out.flush(); out.close();,方法示例,public class Servlet1 extends HttpServlet public void doGet(H
14、ttpServletRequest request, HttpServletResponse response) response.setContentType(text/html); PrintWriter out = response.getWriter(); String userName = request.getParameter(userName); /通过PrintWriter类型对象out的println方法,输出内容至浏览器 out.println(username:+userName+); /显式清理缓存和关闭 out.flush(); out.close(); ,2.3
15、HttpServletResponse其它常用方法,字符集编码问题 重定向,2.3.1 其他方法字符集编码问题,HttpServletResponse的setContentType方法设置响应消息头“Content-Type” 设置Servlet输出内容的MIME类型,网页文档的类型通常为“text/html” 在类型后面还可以指定响应内容的字符集编码类型,如果不指定,采用默认ISO8859-1字符集编码,response.setContentType(“text/html;charset=utf-8);,response.setContentType(“text/html);,字符集问题Se
16、rvlet输出中文,Servlet输出内容中包含中文,需要显式指定字符集为以下几种编码之一: utf-8 gbk gb2312 所有标准的浏览器和客户机都支持utf-8编码,网页文档最好采用utf-8编码 不指定中文编码和指定中文编码示例,显式指定字符集编码的作用: 服务器端采用指定的字符集编码对内容进行编码转换后,发送给客户端浏览器 通知浏览器采用该指定的字符集编码对接收到的内容进行解码显示,response.setContentType(“text/html;charset=utf-8);,显式设置字符集编码,response.setContentType(“text/html;chars
17、et=iso8859-1); PrintWriter out = response.getWriter(); out.println(“中);,中,服务器端,ISO 编码表,127,127,客户端浏览器,ISO 编码表,?,无法正 确转换,显示,输出中文乱码,不包含 中文编码,转换成一个无效码,ISO编码中,127对应的是 其他符号,比如“?”,response.setContentType(“text/html;charset=utf-8); PrintWriter out = response.getWriter(); out.println(“中);,中,服务器端,Utf-8 编码表,9
18、7,97,客户端浏览器,Utf-8 编码表,中,正确转换,正确显示,Servlet正确输出中文,HTML网页文档中文问题,HTML中定义了标签的http-equiv属性,可以模拟HTTP响应消息头 标签的一个常用应用 用来设置当前页面的字符集编码 MyEclipse开发HTML Windows-preference-Files and Editors-HTML修改字符集编码为utf-8,request读取中文请求参数乱码,读取中文请求参数乱码示例 解决: 请求页面字符集编码首先保证是utf-8 Servlet程序获取参数前增加以下代码 以上针对POST提交下的中文请求参数有效 GET提交下中文
19、请求参数乱码另有解决方法,request. setCharacterEncoding(utf-8);,字符集编码结论I,原则:各处采用的(包含中文的)字符集编码一致 网页文档(HTML,JSP)统一采用utf-8字符集编码 HTML: Servlet程序开始处统一加以下几句: GET方式下中文请求参数乱码解决:修改server.xml,response.setContentType(text/html;charset=utf-8); request. setCharacterEncoding(utf-8);,2.3.2 其他方法重定向,HttpServletResponse的sendRedir
20、ect方法实现请求重定向 location参数指定了重定向的URL,可以采用相对或绝对路径 浏览器地址栏发生变化,显示为location所指向的URL,public void sendRedirect(String location);,示例:登录成功后,转向首页,示例,提交给Servlet判断处理,String username = request.getParameter(userName); String pwd = request.getParameter(pwd); if(username.equals(tom) ,location参数采用相对路径写法的说明 若以“/”开头,此“/”
21、代表站点(非Web应用)根目录 如果不以“/”开头,代表相对于当前请求路径的URL,public void sendRedirect(String location);,HttpServletResponse对象小结,掌握输出内容为文本字符的网页文档的方法 掌握sendRedirect方法实现请求重定向 中文乱码问题 知道解决方法,PrintWriter out = response.getWriter(); out.println(“ );,附:读取请求参数中文乱码问题,自学,request读取中文请求参数,浏览器传递请求参数时,会对中文字符进行编码,浏览器采用哪一种字符集编码,则Servlet对象的getParameter等方法必须以那一种字符集编码进行解码,才能得到正确的中文参数信息 POST提交方式下,浏览器采用当前页面字符集对传递的中文参数进行编码 HttpServletRequest对象的getParameter方法读取参数时,默认采用ISO88
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冰墩墩课件介绍
- 宣传委员竞选教学课件
- 冬季保健知识课件
- 宣传主题班会课件
- 冠心病防治科普知识
- 2025版拆墙工程施工许可证协议书合同范本
- 2025版工业园区包干制物业管理服务协议
- 二零二五年搬运工工伤免责保障合同模板
- 宝玉石加工技术课件
- 二零二五年度KTV智能灯光音响系统升级改造合同
- 浙江国企招聘2025宁波慈溪市国有企业公开招聘公交驾驶员25人笔试参考题库附带答案详解版
- 2025年省国有资本运营控股集团有限公司人员招聘笔试备考试题及答案详解(名校卷)
- 2025年辅警招聘考试试题库完整答案
- 技术水平评价报告【范本模板】
- 宿州萧县乡镇事业单位招聘考试真题2024
- 2025至2030临床决策支持系统行业项目调研及市场前景预测评估报告
- 黑启动操作培训课件
- 肿瘤的健康科普
- 2025至2030中国清洁机器人市场经营效益与投融资发展状况报告
- 烟台万华并购匈牙利博苏化学公司研究报告
- 中医疼痛课件
评论
0/150
提交评论