服务器根据请求自动创建传入HttpServletRequest对象和HttpServletResponse对象

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

……处理代码

}

HttpServletRequest(请求)

处理请求行(http:\localhost:8080\pro\haha?name=zs&age=18)

getRequestURL()   获取?前的路径  (http:\localhost:8080\pro\haha)

getRequestURI()   获取站点名到?前的路径 (pro\haha)

getQueryString() 获取请求参数(name=zs&age=18)

getMethod()       获取请求类型(get post)

其他:getProtocol获取http版本号,getContexPath获取webapp名(项目名)

处理请求头

getHeader(String) 获取单个请求头内容 string为key值不区分大小写

getHeaderName() 获取请求头名的枚举集合通过Enumeration<String>接收

获取请求参数

getParameter(“key”)      获取客户端上传的参数

getParameterValues(“key”) 若一个key对应多个值(多选框等)返回数组对象

getParameterNames()      获取所有请求参数的名称, 枚举类集合接收

getParametermap()        获取所有请求参数,Map<String,String[]>接收

设置请求的参数(用于对象传递中使用)

setAttribute(“key”,value)    设置域对象内容

getAttribute(“key”)          获取域对象内容

removeAttribute(“key”)       删除域对象内容

 

解决请求参数乱码问题

request接收的参数,在解析过程中使用了默认的编码方式为 (ISO-8859-1)不支持中文

post请求在Tomcat中都存在报错,get在Tomcat7中存在报错

解决方式

post解决方式

request.setCharacterEncoding("UTF-8")   直接设置解析编码 对get无效

get解决

new String(request.getParameter(key).getBytes("ISO-8859-1"),"UTF-8")

只能一次处理一个参数值的编码错误

若参数本身无编码错误,反而会造成编码错误

请求转发

用于服务内部的资源跳转,浏览器的地址不会变更

request.getRequestDispatcher(“目标资源”).forward(request,response)

指定转发路径,并传递请求对象和响应对象.实现对象共享.

目标资源使用外部访问名

request 作用域只在一次请求中有效中有效,包含请求转发

 

   

HttpServletResponse(响应)

处理响应头

addHeader(“key”, “value”)    增加响应头参数

setHeader(“key”, “value”)    设置响应头参数

设置自动刷新或重定向(不设url可自刷新)

setHeader("refresh", "3;http://www.baidu.com") 3秒后刷新至百度

sendError(500, “错误描述”)    设置页面报错(响应头)

输出响应数据

    setContentType(“参数;参数”)      设置响应数据类型和编码格式

参数在Tomcat 的 web.xml 文件中<mime-mapping>查找获取

text/html类型为html类型

image/jpeg响应jpg图片

getOutputStream()     获取输出的字节流

getWriter()           获取输出的字符流

注: 两个流不能同时使用 否者报错(java.lang.IllegalStateException)

流需要关闭.close()

常用文本输出getWriter().write("输出文本")

sendRedirect(“url”)   重定向

       服务器指导客户端的行为,客户端根据重定向立即重新请求对应的数据

http://www.baidu.com或者 端口之后的绝对路径/相对

乱码处理

服务器响应的数据编码与客户端解析编码方式存在差异

setContentType("text/html;charset=UTF-8")

设置响应头中数据类型和编码类型

响应图片

获取当前项目路径,获取图片的绝对路径

拼接得到图片完整路径,生成file, io传输

String realPath = getServletContext().getRealPath("/")

获取项目在服务器中的真实路径

    String filePath = realPath + "/WEB-INF/images/jay.jpg"

获取图片路径,并完成拼接

File file = new File(filePath)

获取文件

 

请求转发和重定向区别

请求转发

request.getRequestDispatcher(“url”).forward(request,response)

返回请求地址栏不发生改变,只执行一次请求

服务端内部跳转, request作用域共享,

转发对象为当前项目资源()

地址站点名后的不完全路径,从项目名之后开始

重定向

1、地址栏发生改变  2、客户端跳转  3、存在两次请求request作用域不共享

4、指定任意地址,可跨域 若是本服务内容 地址从端口号之后开始

 

路径问题

相对路径    相对于当前资源的路径开头不设/

绝对路径(完整路径)

1完整绝对路径

以 http://开头的,能够跨域

2部分绝对路径

以"/"开头,从当前域名|IP|主机后的端口号开始的

"/"的含义:

 请求转发:

代表的是 http://localhost:8080/站点名/

重定向(客户端跳转):

代表的是   http://localhost:8080/

 

 

servlet中Request与response使用的更多相关文章

  1. servlet中request和response

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  2. JSP Servlet中Request与Response所有成员方法的研究

    HttpServletRequest与HttpServletResponse作为Servlet中doGet.doPost等方法中传递的参数,承接了Http请求与响应中的大部分功能,请求的解析与响应的返 ...

  3. python的scrapy框架的使用 和xpath的使用 && scrapy中request和response的函数参数 && parse()函数运行机制

    这篇博客主要是讲一下scrapy框架的使用,对于糗事百科爬取数据并未去专门处理 最后爬取的数据保存为json格式 一.先说一下pyharm怎么去看一些函数在源码中的代码实现 按着ctrl然后点击函数就 ...

  4. javaWeb核心技术第七篇之HTTP、Tomcat、Servlet、Request和Response

    - Web服务器 - 概念: - web资源: "英文直译"网"的意思 资源:一切数据文件 web资源:通过网络可以访问到的资源,通常指的是一切放在服务器上的文件&quo ...

  5. Servlet之Request和Response 解析

    原理 tomcat服务器会根据请求url中的资源路径,创建对应的Servlet的对象 tomcat服务器.会创建request和response对象,request对象中封装请求消息数据. tomca ...

  6. Servlet中request对象得到路径问题

    1.项目源码:假设现在有一个名为JavaWeb的项目,其中有一个名为TestServlet的serlvet,其doGet方法为: protected void doGet(HttpServletReq ...

  7. servlet之request和response的使用区分

    有的时候在写servlet程序时,我总是被一个方法该用request去调用.还是用response去调用而困惑.从而造成编程时间的延长. 我在区分request和response的使用时,使用的方法是 ...

  8. Web jsp开发学习——终极解决jsp中request和response中文乱码的问题(加个过滤器)

    中文乱码真的很烦人的.而且每次都要写,可麻烦了,而且有时候写了还不一定管用,所以我们可以试试过滤器 1.每个jsp头上当然要写上utf8啦 <%@ page language="jav ...

  9. javaWeb中 servlet 、request 、response

    1.Servlet (1)Servlet是JavaEE的一个动态web资源开发技 术,就是在服务器上运行的小程序,这个小程序是由服务器调用的,服务器为了能调用这个小程序,就要求这样的程序必须实现一个S ...

随机推荐

  1. 【大道至简】NetCore3.1快速开发框架一:集成Swagger

    在上一章节中,我们创建了基本的框架结构:https://www.cnblogs.com/fuyu-blog/p/12217647.html 下面我们测试接口和集成Swagger接口文档 一.接口测试 ...

  2. webpack打包后不能调用,改用uglifyjs打包压缩

    背景: 项目基于原生js,没用到任何脚手架和框架,但也需要打包压缩. 项目的js中声明了一些全局变量 供其他js调用. 这时候如果用webpack打包,基于webpack特性,会嵌套一层大函数,会将j ...

  3. 自动生成admin(后台)

    public --->>>>index.php 入口文件如下: // +---------------------------------------------------- ...

  4. hyper-v虚拟机不能访问外网的解决方案

    直接说解决方案,将虚拟机的一张网卡改为旧版网络适配器即可.具体原因还不可知. 延申一下,一般应该使用的交换机,是“外部”类型即可.

  5. 2019-08-21 纪中NOIP模拟A组

    T1 [JZOJ6315] 数字 题目描述

  6. canvas转盘转动?

    怎么实现类似转盘转动的效果? 现在这种实现思路是,canvas每次draw()并不是让图形在旋转,而是让每一份的颜色改变到达好像是转动的效果, 但是现在有一个问题,一开始渲染的颜色数量于份数是相同的, ...

  7. Hive0.13_函数

    Hive函数大全 一.关系运算: 1. 等值比较: = 2. 等值比较:<=> 3. 不等值比较: <>和!= 4. 小于比较: < 5. 小于等于比较: <= 6 ...

  8. C#关于文件的创建

    若使用文件夹Directory类判断了文件夹的存在,后面的文件就不需要使用File类来判断文件的存在与否和创建,只需要在前面判断过得文件夹路径后面加上文件的名字即可,它会自动判断文件是否存在,若不存在 ...

  9. HashMap源码(一)

    本文主要是从学习的角度看HashMap源码 HashMap的数据结构 HashMap是一个数组+链表的结构(链表散列),每个节点在HashMap中以一个Node存在: HashMap的初始化 publ ...

  10. 支持CSS3的高级CSS

    一.匹配部分字符串 在CSS2中,可以使用[ href='info.htm' ] 这样的属性选择器来匹配href属性中的字符,但是无法只匹配部分字符串.而CSS3给出了三个新的运算符:^ , $ 和 ...