免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
请求与响应1、 处理请求参数与标头 主要取得请求参数的方法: getParameter():指定请求参数名称对应的值。 例:String username = request.getParameter(name); getParameterValues():同一个请求参数名称如果有多个值。 例:String values = request.getParameterValues(param); 使用getParameterNames()方法获得请求参数。 Enumeration e = req.getParameterNames(); While(e.hasMoreElements()String param = e.nextElement(); getParameterMap():将请求参数以Map对象返回。 getHeader():指定标头名称后可返回字符串值,代表浏览器所送出的标头信息。 getHeaders():指定标头名称后可返回Enumerration,元素为字符串。 getHeaderNames():取得所有标头名称,以Enumeration返回,内含所有标头字 符串名称。2、 请求参数编码处理1POST请求参数编码处理 如果客户端没有Content-Type标头中设置字符编码信息,此时使用 HttpServerletResponse的getCharacterEncoding()返回值会是null。 浏览器相当于做了这个操作: String text = .URLEncoder.encode(value,UTF-8); 容器相当于做这个操作: String text = .URLDecoder.decode(value,ISO-8859-1); 这样显示出来的中文字符就不正确了,需要这样做。 request.setCharacterEncoding(UTF-8);(一定要在任何操作之前,且只对POST 方法有用) 容器相当于做这个操作: String text = .URLDecoder.decode(value,UTF-8);2 GET请求参数编码处理 正确处理编码的方式为: String name = request.getParameter(name); String name = new String(name.getBytes(Web容器默认编码),浏览器编码);3、 getReader()、getInputStream()读取Body内容 HttpServletRequest上定义有getReader()方法,可以让你取得一个BufferedReader,通过该对象,可以读取请求的Body数据。4、 getPart()、getParts()取得上传文件 这是在Servlet3.0中,新增了Part接口,可以让你方便地进行文件上传处理。可以通过HttpServletRequest的getPart()方法取得Part实现对象。 如果要使用web.xml设置MultipartConfig对应的信息,则需要设置如下: 文件储存路径 5、 使用RequestDispatcher调派请求 应用于需要多个Servlet来完成请求。 例:RequestDispatcher dispartcher = request.getRequestDispatcher(要转发的servlet); forward()会将请求转发至指定的URL,这个动作是在Web容器中进行的,浏览器并不 会有所变化。 在转发过程中,都还是同一个请求周期,所以用setAttribute()设置的属性对象,都可 以转发过程中共享。 1使用include()方法 RequestDispatcher的include()方法,可以将另一个Servlet的操作流程包括至目前 Servlet操作流程之中。可以包括查询字符串。 RequestDispatcher dispartcher = request.getRequestDispatcher(URL?name=value); dispartcher.include(request,response); 如果包含查询字符串,那么在被包含的Servlet中就可以使用getParameter( name);取得请求的参数值。 2请求范围属性 在include()或forward()时包括请求参数的做法,仅适用于传递字符串值给另一个 Servlet,在调派请求的过程中,如果有必须共享的“对象”,可以设置给请求对象 成为属性,称为请求范围属性(Request Scope Attribute)。 与请求范围属性的关的几个方法: setAttribute():指定名称与对象设置属性。 getAttribute():指定名称取得属性。 getAttributeNames():取得所得属性名称。 removeAttribute():指定名称移除属性。 例:List books = bookDAO.query(ServletJSP); request.setAttribute(books,books); request.getRequestDispatcher(URL)Include(request,response); . List books = (List) request.getAttribute(books); 3使用forward()方法 调用时同样传入请求与响应对象,这表示你要将请求处理转发给别的Servlet,“对 客户端的响应同时也转发给另一个Servlet”。 例:request.getRequestDispatcher(URL)forward(request,response); 若要调用forward()方法,目前的Servlet不能有任何响应确认(Commit),如果在 目前的Servlet中通过响应对象设置了一些响应但未确认(响应缓冲区未满或未 调用任何清除方法),则所有响应设置会被忽略,如果已经有响应确认且调用了 Forward()方法则会抛出IllegalStateException。6、 关于HttpServletResponse 可以使用HttpServletResponse来对浏览器进行响应。大部分的情况下,会使用setContentType()设置响应类型,使用getWriter()取得PrintWriter对象,而后使用PrintWriter的println()等方法输出HTML内容。 还可以进一步使用setHeader()、addHeader()等方法进行响应标头的设置,或者是使用sendRedirect()、sendError()方法,对客户端要求重定向网页,或是传送错误状态信息。若必要,也可以使用getOutputStream()取得ServletOutputStream,直接使用串流对象对浏览器进行字节数据的响应。 1设置响应标头、缓冲区 可以使用HttpServletResponse对象上的setHeader()、addHeader()来设置响应标头, setHeader()设置标头名称与值,addHeader()则可以在同一标头名称上附加值。如果标 头的值是整数,则可以使用setIntHeader()、addIntHeader()方法,如果标头的值是个日 期,则可以使用setDataHeader()、addDataHeader()方法。 所有的标头设置,必须在响应确认之前(Commit),在响应确认之后设置的标头, 会被容器忽略。容器可以(但非必要)对响应进行缓冲,通常容器默认都会对响应进 行缓冲。 以下是有关缓冲的几种方法: getBufferSize() setBufferSize() isCommitted() reset() resetBuffer() flushBuffer() setBufferSize()必须在调用HttpServletResponse的getWriter()或getOutputStream()方法之 前调用,所取得的Writer或ServletOutputStream才会套用这个设置。如果是之后会抛 出IllegalStateException。 在缓冲区未满之前,设置的响应相关内容都不会真正传至客户端,可以使用 isCommitted()看看是否响应已确认。如果想要重置所有响应信息,可以调用reset()方 法,这会连同已设置的标头一并清除,调用resetBuffer()会重置响应内容,但不会清 除已设置的标头内容。 flushBuffer()会清除(flush)所有缓冲区中已设置的响应信息至客户端,reset()、 resetBuffer()必须在响应未确认前调用。如果是之后,则会抛出IllegalStateException。 HttpServletResponse对象若被容器关闭,则必须清除所有的响应内容,响应对象 被关闭的时机点有以下几种: Servlet的service()方法已结束,响应的内容长度超过HttpServletResponse的 setContentLength()所设置的长度。 调用了sendRedirect方法。 调用了sendError()方法。 调用了AsyncContext的complete()方法。 2使用getWriter()输出字符 如果要对浏览器输出HTML,在先前的范例中,都会通过HttpServletResponse的 getWriter()取得PrintWriter对象,然后指定字符串进行输出。 例:PrintWriter out = response.getWriter(); Out.println(); HttpServletResponse使用的字符默认编码是ISO-8859-1。也就是说要输出中文, 要对输出的编码进行处理。 有以下几个方式: 1设置Locale 浏览器如果有发送Accept-Language标头,则可以使用HttpServletRequest 的getLocale()来取得一个Locale对象,代表客户端可接受的语系。 可以使用HttpServletResponse的setLocale()来设置地区(Locale)信息,地 区信息就包括了语系与编码信息。语系信息通常通过响应标头Content-Language 来设置,而setLocale()也会设置HTTP响应的Content-Language标头。 例:response.setLocale(Locale.TAIWAN); 或 response.setLocale(new Locale(zh,TW); 可以使用HttpServletResponse的getCharacterEncoding()方法取得编码设置。 可以在web.xml中设置默认的区域与编码对应,例: zh_TW UTF-8 2使用setCharacterEncoding()或setContentType() 也可调用HttpServletResponse的setCharacterEncoding()设置字符编码: response.setCharacterEncoding(UTF-8); 或者是在使用HttpServletResponse的setContentType()时,指定charset, charset的值会自动来调用setCharacterEncoding()。 例: response.setContentType(text/html;charset=UTF-8); 如果使用了setCharacterEncoding()或setContentType()时指定charset,则 setLocale()就会被忽略。 对于应用程序中使用到的MIME类型,可以在web.xml中设置后缀与 MIME类型对应。 例: html text 设置文件的后缀,而设置对应的MIME类型 名称。如果想要知道某个文件的MIME类型名称,则可以使用ServletContext 的getMimeType()方法,这个方法让你指定文件名称,然后根据web.xml中 设置的后缀对应,取得MIME类型名称。 3使用getOutputStream()输出二进制字符 在大部分的情况下,会从HttpServletResponse取得PrintWriter实例,使用 println()对浏览器进行字符输出。然而有时候,需要直接对浏览器进行字 节输出,这时可以使用HttpServletResponse的getOutputStream()方法取得 ServletOutputStream实例,它是OutputStream的子类。 4使用sendRedirect()、sendError() HttpServletResponse的sendRedirect()要求浏览器重新请求另一个URL, 又称为重定向(Redriect),使用时可指定绝对URL或相对URL。 这个方法会在响应中设置HTTP状态码301以及Locat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长春地理中考试卷及答案
- 空调系统操作员面试题详解与答案
- 企业资源规划系统管理员面试题及答案
- 体育教练员面试题目及专业答案
- 青岛海尔集团设备管理经理年度考核含答案
- 面试者如何准备SAP业务分析师面试题
- 安徽省皖江名校联盟2025-2026学年高一上学期12月联考政治试卷
- 2025年高端装备制造技术创新项目可行性研究报告
- 2025年室外运动设施更新改造可行性研究报告
- 2025年汽车租赁平台优化项目可行性研究报告
- (2025年)陪诊师考试过程解析试题及答案
- 2026国网宁夏电力有限公司招聘高校毕业生统一考试(第一批)备考题库及答案详解(网校专用)
- 文献检索论文的
- 年终总结致谢文案
- 探放水工岗位作业风险专项培训讲义
- 黄委会《水利及黄河基础知识》考点题库
- 自流平环氧地坪漆地面施工要求
- 升、降压直流斩波电路及matlab仿真
- 2025甘肃酒泉市公安局招聘留置看护岗位警务辅助人员30人(第三批)笔试考试备考试题及答案解析
- 口腔诊所医保政策对应的内部管理制度和财务制度
- 农行助力贷款协议书
评论
0/150
提交评论