JavaWeb request/response/session/cookie jsp的九大内置对象 理解与运用

什么是request

request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest在这里插入图片描述
。在客户端发出每个请求时,服务器都会创建一个request对象,并且把请求数据封装到request中,然后在调用Servlet.service()方法时传递给service()方法,这说明在service()方法中可以通过request对象来获取请求数据。

request功能

  • getMethod() 获取请求方式;
  • getContextPath() 获取虚拟目录;
  • getServletPath() 获取资源路径(servlet路径)
  • getQueryString() 获取get方式的请求参数;
  • getRequestURI() 获取请求URI;
  • getRequestURL() 获取请求URL;
  • getProtocol() 获取协议及版本;
  • getRemoteAddr() 获取客户机的IP地址;
  • getHeader(String name) 通过请求头的名称获取值;
  • getReader() 返回类型BufferedReader,获取的当然是字符输入流;
  • getInputStream() 返回类型ServletInputStream,获取字节输入流(可以操作所有类型的文件);
  • String getParameter(String name)(常用,通常前端传值用用这个获取之后封装例如如下代码:
前端:
<form action=" " method="post">
<input type="text" name="username">
<input type="text" name="password">
<input type="submit">
</form>
java:
String username = request.getParameter("username");
String password = request.getParameter("password");
  • String[] getParameterValues(String name)
  • Enumeration getParameterNames()
  • Map<String,String[]> getParameterMap()
  • 注意:用get可能会出现乱码,可以在Tom act里面的配置文件server.xml里面修改配置文件,更改get的默认提交编码

request注意

request 同一次请求有效;其他请求无效 (请求转发后有效;重定向后无效)

response概述

response是servlet.service方法的一个参数,在客户端发出每个请求时,服务器都会创建一个response对象,并传入servlet.service()方法,response对象用来对客户端进行响应的,这说明在service方法中使用response对象可以完成对客户响应的工作。

response功能

  • 设置响应头信息
  • 发送状态码
  • 设置响应正文
  • 重定向

关于重定向和转发

重定向的响应码是302,重定向是两次请求,重定向的url可以是其他应用,不局限当前应用。重定向重定向不带数据,转发是带数据的,转发是只有一次请求。

请求转发重定向
地址栏是否改变不变改变
是否保留第一次请求时的数据保留不保留
请求的次数12
跳转发生的位置服务端客户端发出的第二次跳转

sesseion

session是内置对象;
客户端第一次请求服务端时,(jsessionid-sessionid)服务端会产生一个session对象(用于保存该客户的信息);
并且每个session对象 都会有一个唯一的 sessionId( 用于区分其他session);
服务端由会 产生一个cookie,并且 该cookie的name=JSESSIONID ,value=服务端sessionId的值;
然后 服务端会在 响应客户端的同时 将该cookie发送给客户端,至此 客户端就有了 一个cookie(JSESSIONID);
因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID - sessionID)

客户端第二/n次请求服务端时:服务端会先用客户端cookie种的JSESSIONID 去服务端的session中匹配sessionid,如果匹配成功(cookie jsessionid和sesion sessionid),说明此用户 不是第一次访问,无需登录;

session存储在服务端
session是在 同一个用户(客户)请求时 共享
实现机制:第一次客户请求时 产生一个sessionid 并复制给 cookie的jsessionid 然后发给客户端。最终 通过session的sessionid-cookie的jsessionid

session方法

  • String getId() :获取sessionId
  • boolean isNew() :判断是否是 新用户(第一次访问)
  • void invalidate():使session失效 (退出登录、注销)
  • void setAttribute() Object getAttribute();
  • void setMaxInactiveInterval(秒) :设置最大有效 非活动时间
  • int getMaxInactiveInterval():获取最大有效 非活动时间

cookie

Cookie(客户端,不是内置对象):Cookie是由 服务端生成的 ,再发送给客户端保存。
相当于 本地缓存的作用: 客户端(hello.mp4,zs/abc)->服务端(hello.mp4;zs/abc)
作用:提高访问服务端的效率,但是安全性较差。

cookie的常用方法

  • public Cookie(String name,String value)
  • String getName():获取name
  • String getValue():获取value
  • void setMaxAge(int expiry);最大有效期 (秒)
  • 服务端准备Cookie:
    response.addCookie(Cookie cookie)
  • 页面跳转(转发,重定向)
    客户端获取cookie: request.getCookies();

注意

  • 服务端增加cookie :response对象;客户端获取对象:request对象
  • 不能直接获取某一个单独对象,只能一次性将 全部的cookie拿到
  • 建议 cookie只保存 英文数字,否则需要进行编码、解码

cookie和session的区别

sessioncookie
保存的位置服务端客户端
安全性较安全较不安全
保存的内容ObjectString

JSP九大内置对象

  • pageContext JSP页面容器
  • request 请求对象
  • session 会话对象
  • appliation 全局对象
  • response 响应对象
  • config 配置对象(服务器配置信息)
  • out 输出对象
  • page 当前JSP页面对象(相当于java中的this)
  • exception 异常对象

四种范围对象(小->大)
pageContext JSP页面容器 (page对象); 当前页面有效
request 请求对象 同一次请求有效
session 会话对象 同一次会话有效
appliation 全局对象 全局有效(整个项目有效)

1.以上的4个范围对象,通过 setAttribute()复制,通过getAttribute()取值;
2.以上范围对象,尽量使用最小的范围。因为 对象的范围越大,造成的性能损耗越大。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值