sevlet请求,响应对象,域对象

一、请求对象

接口:

ServletRequest : 通用的请求接口,这个接口的实现类的对象由容器创建,并由容器以参数的方式传递给某个Servlet接口的实现对象的service方法。

HttpServletRequest :是ServletRequest接口的子接口,这个接口是专门针对HTTP请求的,这个接口的实现类的对象由容器创建,并由容器以参数的方式传递给某个Servlet接口的实现对象的service(doGet、doPost)方法。

ServletRequest和HttpServletRequest的常用API

String getMethod() : 获取请求方式

String getHeader(String key) : 获取指定key对应的头信息

String getParameter(String paramName) : 获取指定参数名称对应的参数值

GET方式请求和POST方式请求

GET参数走地址栏,不安全,受浏览器地址栏的传输数据限制(4KB)

POST方式参数不走地址栏,走的是请求正文,相对GET方式安全,理论上

对传输的数据量没有限制

对于POST请求,Tomcat解析请求正文中的中文数据,乱码问题

 // Tomcat解析请求正文数据时,使用ISO8859-1字符集解码
 // 设置POST请求方式解析正文数据时的字符集
 request.setCharacterEncoding("UTF-8");

二、响应对象

ServletResponse接口

HttpServletResponse子接口

PrintWriter getWriter() : 获取打印字符输出流对象,可以将数据写入

响应正文

如果写入响应正文有中文数据,会有乱码问题,如何解决?

方式一: 
    reponse.setCharacterEncoding("utf-8") 设置响应正文的字符集
​
方式二:推荐,不仅可以设置响应正文的字符集,还可以在响应消息头中携带Content-Type头信息
    response.setContentType("text/html;charset=utf-8")

三、域对象

Servlet中提供了三个域对象(内部都维护了一个Map集合),用于存储

key-value数据

ServletContext web应用全局域对象

这个项目所有servlet都共享这个域对象中的数据(域对象唯一)

这个域对象 从项目启动开始,到项目停止结束

ServletContext request.getServletContext();

HttpSession 会话域对象

只在一个会话期间,所有Servlet可以共享的数据

这个域对象 从浏览器与服务器建立连接开始,到这个连接断开结束

HttpSession request.getSession();

HttpServletRequest 请求域对象

      只在一个请求过程,在参数转发的servlet中共享数据

这个域对象从一个请求开始,到转发(不一定存在), 到请求结束

上面三个域对象都提供

setAttribute(String key, Object obj);

Object getAttribute(key);

转发:

服务器内部的资源跳转,浏览器不知道,所以地址栏不变

转发使用的是请求对象的方法

/ 相对的是当前web应用的根路径

request.getRequestDispatcher(url).forward(request, reponse);

重定向

浏览器跳转资源的行为,所以地址发生变化

重定向使用的响应对象的方法

/ 代表的是服务器的根路径 ,先找web项目的根路径,再去项目中找资源

response.sendRedirect(url);

后台 / 是服务器访问的根路径

http://localhost:8080/baidu/

前端 / 是浏览器访问的根路径

http://localhost:8080/

idea 每次部署项目,默认设置项目的根路径 / (可以改)

idea默认的访问路径 前端/ 和后台 / 是同一个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值