JAVA WEB开发技术随堂笔记 request response session application对象

🌴 2022.4.24 早十

前言

🎬本文章是 【JAVA WEB开发技术】 专栏的文章,主要是上课的随堂笔记与练习
🔗JAVA WEB开发技术专栏 传送门
💻提示:目录顺序以当堂内容(教材)为准,所以并非“1、2、3”

5.8 request对象

5.8.1 获取请求参数值

JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量

request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求

request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等

在一个请求中可以通过“?”的方式(GET)来传递参数,然后通过request对象的getParameter方法来获取参数值

🚀 GET 方法

GET方法将请求的编码信息添加在网址后面,网址与编码信息通过"?"号分隔。
http://localhost:8080/5-06/show.jsp?id=001&name=alan

  • GET方法是浏览器默认传递参数的方法
  • 一些敏感信息,如密码等建议不使用GET方法。
  • 用get时,传输数据的大小有限制 (注意不是参数的个数有限制),最大为1024字节。

5.8.2 获取form表单的信息

  • JSP中常用表单向服务器提交信息,所提交的信息可以使用request对象获取
  • 浏览器中向服务器提交信息,使用 GET 和 POST 方法
  • POST提交数据是隐式的,GET是通过在url参数传递

request获取表单数据的方法:

  • getParameter():获取表单参数的值
  • getParameterValues():接收数组变量 (名字相同,但值有多个),如checkbox类型
  • getParameterNames():取得所有变量的名称,返回一个Emumeration
  • getInputStream():读取来自客户端的二进制数据流

打个比方document.getelementbyID("ID").value;等同于jsp中request.getParameter("ID");

5.8.3 获取请求客户端信息

  • 每当客户端请求一个页面时,JSP引擎就会产生一个新的对象来代表这个请求
  • request对象提供了一系列方法来获取HTTP信息头,包括信息提交方式、客户端主机IP、端口号、表单数据,cookies,HTTP方法等等

5.8.4 在作用域中管理属性

在request中可以设置、获取或移除属性

  • setAttribute():添加设置一个属性及其值
  • getAttribute():获得某属性值
  • removeAttribute():移除某属性

5.8.5 cookie管理

Cookie是存储在客户机的文本文件,可以用它保存了大量轨迹信息。在servlet技术基础上,JSP能够提供对HTTP cookie的支持
通常有三个步骤来识别用户:

  1. 服务器脚本发送一系列cookie至浏览器。比如名字,年龄等等
  2. 浏览器在本地机中存储这些信息,以备不时之需
  3. 当下一次浏览器发送任何请求至服务器时,它会同时将这些cookie信息发送给服务器,然后服务器使用这些信息来识别用户

request对象中的getCookies()方法来访问cookie,该方法会返回一个Cookie对象的数组
Cookie对象中常用的方法:
public void setDomain(String pattern):设置cookie的域名,比如baidu.com
public String getDomain():获取cookie的域名,比如baidu.com
public void setMaxAge(int expiry):设置cookie有效期,以秒为单位,默认为当前

session的存活时间
public int getMaxAge():获取cookie有效期,默认为-1 ,表明cookie会活到浏览器关闭为止

Cookie对象中常用的方法:
public String getName():返回 cookie的名称,名称创建后将不能被修改
public void setValue(String newValue):设置 cookie的值
public String getValue():获取cookie的值
public void setPath(String uri):设置cookie 的路径,默认为当前页面目录下的所有URL,还有此目录下的所有子目录
public String getPath():获取cookie 的路径

5.9 response对象

response 对象是 javax.servlet.http.HttpServletResponse 类的一个实例。就像服务器会创建request对象一样,它也会创建一个客户端响应

response响应对象主要将JSP容器处理后的结果传回到客户端。可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie、HTTP文件头信息等

response对象的常用方法:
void addHeader(String name, String value):添加指定名称的响应头和值
void addCookie(Cookie cookie):添加指定的cookie至响应中
void setHeader(String name, String value):使用指定名称和值设置响应头的名称和内容
void sendError(int sc, String msg):使用指定的状态码和消息向客户端发送一个出错响应
void sendRedirect(String location):使用指定的URL向客户端发送一个临时的间接响应

5.9.1 重定向网页

使用response对象的sendRedirect()方法,可以将文档移动到一个新的位置
重定向过程:

  1. 客户浏览器发送http请求
  2. web服务器接受后发送302状态码响应及对应新的location给客户浏览器
  3. 客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址
  4. 服务器根据此请求寻找资源并发送给客户

地址栏可以看到重定向后的地址。原request失效,产生一个新的request对象。重定向行为是浏览器做了至少两次的访问请求的

5.9.2 处理HTTP文件头

可以使用response对象的addHeader、setHeader、setIntHeader等方法来设置HTTP头信息
response.setHeader("refresh", "5");
response.setHeader("refresh", "2;URL=welcome.jsp");
response.setHeader("Content-Type", "text/html;charset=UTF-8");
response.setHeader("Cache-Control","no-cache");

5.9.3 设置输出缓冲

通常情况下,服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区中;只有3种情况,才将缓冲区中的内容写到客户端

  1. JSP页面的输出信息已经全部写入到了缓冲区
  2. 缓冲区已满
  3. 在JSP页面中调用了response.flushBuffer()或者out.flush()方法

void setBufferSize(int size):设置响应体的缓存区大小
boolean isCommitted():返回响应是否已经提交到客户端

🌴 2022.4.26 早十

5.10 session对象

5.10.1 创建及获取session信息

Session对象是用来分别保存每一个用户信息的对象,以便于跟踪用户的操作状态。Session的信息保存在服务端,Session的ID保存在客户机的Cookie中。不同的用户对应的Session对象一般是不同的。例如当用户登录站点时,系统就会为他建立一个与其他不相的Session对象,以便于区别其他用户。这个Session对象记录该用户的个人信息,而当该用户退出网站时,该Session对象就会随之消失

session对象常用的方法:
public Object getAttribute(String name):返回session对象中与指定名称绑定的对象,不存在则返回null,类似document.getemelentbyID,但是session返回值是对象,要强转换(String)session.getAttribute("xxx")
public Enumeration getAttributeNames():返回session对象中所有的对象名称
public long getCreationTime():返回session对象被创建的时间,以毫秒为单位,从1970年1月1号凌晨开始算起
public String getId():返回session对象的ID
public void removeAttribute(String name):移除session中指定名称的对象
public void setAttribute(String name, Object value) :使用指定的名称和值来产生一个对象并绑定到session中

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<%
	String sessionMessage="session练习";
	session.setAttribute("message",sessionMessage);
	out.print("保存在session范围内的对象为:"+sessionMessage);
	out.print("<br>");
	request.setAttribute("messgae",sessionMessage);
	out.print("保存在request范围内的对象为:"+request.getAttribute("message"));
%>
	<br>
	<%=session.getId()%>
	<body>
</html>

5.10.2 从会话中移除指定的绑定对象

对于存储在session中的对象,如果想从中移除,可以使用session对象的removeAttribute()方法

5.10.3 销毁session

session的销毁只有三种方式:

  1. 调用了session.invalidate()方法
  2. session过期(超时)
  3. 服务器重新启动

5.10.4 会话超时的管理

session的生命周期包括三个阶段:创建、活动、销毁

创建:当客户端第一次访问某个jsp或者servlet的时候,服务器会为当前会话创建一个sessionId,每次客户端向服务器发送请求时,都会将此sessionId携带过去,服务端会对此sessionId进行校验

活动:某次会话当中通过超链接打开的新页面属于同义词会话。只要当前页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。本次会话的所有页面都关闭后再重新访问某个Jsp或者Servlet将会创建新的会话

销毁:Session的销毁三种

Tomcat默认session超时时间为30分。设置session超时时间有两种方式:

  1. session.setMaxInactiveInterval(时间);//单位是秒

  2. 在web.xml中配置

<session-config>
<session-timeout>
10
</session-timeout>
</session-config> // 单位是分钟

5.11 application对象

5.11.1 访问应用程序初始化参数

application对象是javax.servlet.ServletContext的实例,该实例代表JSP所属的WEB应用本身,负责提供应用程序在服务器中运行时的一些全局信息

Application对象将信息保存在服务器中,只要服务器没有关闭,application对象中的数据就会一直存在,在整个服务器的运行过程当中,application对象只有一个,它会被所有的用户共享

与request和session相比, application的存活范围更大

application对象常用的方法:
String getAttribute(String name):根据属性名称获取属性值
Enumeration getAttributeNames():获取所有的属性名称
void setAttribute(String name, Object object):设置属性,指定属性名称和属性值
void removeAttribute(String name):根据属性名称删除对应的属性
ServletContext getContext(String uripath):获取指定URL的ServletContext对象
String getContextPath():获取当前Web应用程序的根目录
String getInitParameter(String name):根据初始化参数名称,获取初始化参数值
int getMajorVersion():获取Servlet API的主版本号
int getMinorVersion():获取Servlet API的次版本号
String getMimeType(String file):获取指定文件的MIME 类型
String getServletInfo():获取当前Web服务器的版本信息
String getServletContextName():获取当前Web应用程序的名称
void log(String message):将信息写入日志文件中

application有一个重要的用处:用于web应用的配置参数。如,通过初始化信息为程序提供访问数据所用的驱动、URL、用户名和密码等,然后web应用中其他servlet和JSP都可以使用它获取连接数据库的信息
在web.xml文件中给出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值