Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
beginnersbook-zh
提交
50325a14
B
beginnersbook-zh
项目概览
OpenDocCN
/
beginnersbook-zh
10 个月 前同步成功
通知
0
Star
107
Fork
30
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beginnersbook-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
50325a14
编写于
10月 14, 2019
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2019-10-14 21:02:51
上级
9b2bb763
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
53 addition
and
54 deletion
+53
-54
docs/servlet/17.md
docs/servlet/17.md
+18
-18
docs/servlet/18.md
docs/servlet/18.md
+35
-36
未找到文件。
docs/servlet/17.md
浏览文件 @
50325a14
#
HttpSession 与 Servlet 中的示例
#
Servlet 中的`HttpSession`
> 原文: [https://beginnersbook.com/2013/05/http-session/](https://beginnersbook.com/2013/05/http-session/)
`HttpSession`
对象用于会话管理。会话包含特定于整个应用中的特定用户的信息。当用户第一次通过
request.getSession()获得 HttpSession
时进入网站(或在线应用)时,将为用户提供唯一 ID 以标识其会话。此唯一 ID 可以存储在 cookie 或请求参数中。
`HttpSession`
对象用于会话管理。会话包含特定于整个应用中的特定用户的信息。当用户第一次通过
`request.getSession()`
获得
`HttpSession`
时进入网站(或在线应用)时,将为用户提供唯一 ID 以标识其会话。此唯一 ID 可以存储在 cookie 或请求参数中。
HttpSession 保持活动状态,直到它的使用时间超过部署描述符文件(web.xml)中 tag
中指定的超时值。默认超时值为 30 分钟,如果未在标记中指定值,则使用此值。这意味着当用户未访问指定的 Web 应用时间时,会话将被 servlet 容器销毁。后续请求将不再从此会话提供,servlet 容器将创建新会话。
`HttpSession`
保持活动状态,直到它的使用时间超过部署描述符文件(
`web.xml`
)中标签
中指定的超时值。默认超时值为 30 分钟,如果未在标记中指定值,则使用此值。这意味着当用户未访问指定的 Web 应用时间时,会话将被 servlet 容器销毁。后续请求将不再从此会话提供,servlet 容器将创建新会话。
这是您创建
HttpSession
对象的方法。
这是您创建
`HttpSession`
对象的方法。
```
java
protected
void
doPost
(
HttpServletRequest
req
,
...
...
@@ -16,7 +16,7 @@ protected void doPost(HttpServletRequest req,
}
```
您可以使用
setAttribute()方法将用户信息存储到会话对象中,稍后在需要时可以从会话中获取此信息。这是您在会话中存储信息的方式。这里我们分别在属性名称为 uName,uemailId 和 uAge 的会话中存储用户名,emailid 和 userage
。
您可以使用
`setAttribute()`
方法将用户信息存储到会话对象中,稍后在需要时可以从会话中获取此信息。这是您在会话中存储信息的方式。这里我们分别在属性名称为
`uName`
,
`uemailId`
和
`uAge`
的会话中存储用户名,
`emailid`
和
`userage`
。
```
java
session
.
setAttribute
(
"uName"
,
"ChaitanyaSingh"
);
...
...
@@ -24,9 +24,9 @@ session.setAttribute("uemailId", "[email protected]");
session
.
setAttribute
(
"uAge"
,
"30"
);
```
第一个参数是属性名称,第二个是属性值。对于例如
uName 是属性名称,ChaitanyaSingh
是上面代码中的属性值。
第一个参数是属性名称,第二个是属性值。对于例如
`uName`
是属性名称,
`ChaitanyaSingh`
是上面代码中的属性值。
要从会话中获取值,我们使用
HttpSession 接口的 getAttribute()
方法。这里我们使用属性名称获取属性值。
要从会话中获取值,我们使用
`HttpSession`
接口的
`getAttribute()`
方法。这里我们使用属性名称获取属性值。
```
java
String
userName
=
(
String
)
session
.
getAttribute
(
"uName"
);
...
...
@@ -34,23 +34,23 @@ String userEmailId = (String) session.getAttribute("uemailId");
String
userAge
=
(
String
)
session
.
getAttribute
(
"uAge"
);
```
##
HttpSession
的方法
##
`HttpSession`
的方法
**public void setAttribute(String name,Object value)**
:使用名称绑定对象,并将名称/值对存储为 HttpSession 对象的属性。如果属性已存在,则此方法将替换现有属性。
`public void setAttribute(String name,Object value)`
:使用名称绑定对象,并将名称/值对存储为 HttpSession 对象的属性。如果属性已存在,则此方法将替换现有属性。
**public Object getAttribute(String name)**
:从会话对象返回参数中指定的 String 对象。如果未找到指定属性的对象,则 getAttribute()方法返回 null
。
`public Object getAttribute(String name)`
:从会话对象返回参数中指定的
`String`
对象。如果未找到指定属性的对象,则
`getAttribute()`
方法返回
`null`
。
**public Enumeration getAttributeNames()**
:返回一个 Enumeration
,其中包含作为会话对象的属性绑定的所有对象的名称。
`public Enumeration getAttributeNames()`
:返回一个
`Enumeration`
,其中包含作为会话对象的属性绑定的所有对象的名称。
**public void removeAttribute(String name)**
:从会话中删除给定的属性。
`public void removeAttribute(String name)`
:从会话中删除给定的属性。
**setMaxInactiveInterval(int interval)**
:以秒为单位设置会话不活动时间。这是以秒为单位的时间,指定自客户端上次收到请求后会话保持活动状态的时间。
`setMaxInactiveInterval(int interval)`
:以秒为单位设置会话不活动时间。这是以秒为单位的时间,指定自客户端上次收到请求后会话保持活动状态的时间。
有关方法的完整列表,请参阅
[
官方文档
](
https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSession.html
)
。
## 会话示例
index.html
`index.html`
```
java
<
form
action
=
"login"
>
...
...
@@ -60,7 +60,7 @@ index.html
</
form
>
```
MyServlet1.java
`MyServlet1.java`
```
java
import
java.io.*
;
...
...
@@ -88,7 +88,7 @@ public class MyServlet1 extends HttpServlet {
}
```
MyServlet2.java
`MyServlet2.java`
```
java
import
java.io.*
;
...
...
@@ -111,7 +111,7 @@ public class MyServlet2 extends HttpServlet {
}
```
web.xml
`web.xml`
```
java
<
web
-
app
>
...
...
@@ -136,7 +136,7 @@ web.xml
**输出:**
**第一
屏
:**
**第一
个界面
:**
![](
img/6cd6dfe925532e16af2cd98d1a4996b9.jpg
)
...
...
docs/servlet/18.md
浏览文件 @
50325a14
# Servlet 中的
Cookie 示例
# Servlet 中的
`Cookie`
> 原文: [https://beginnersbook.com/2013/05/servlet-cookies/](https://beginnersbook.com/2013/05/servlet-cookies/)
在上一篇指南中,我介绍了 Servlet 中的
[
会话
。在这里,我们将讨论用于会话管理的 Cookie。让我们回顾一下上一篇教程中的一些内容,以便我们可以关联会话和 cookie。当用户第一次访问 Web 应用时,servlet 容器通过调用 request.getSession()来创建新的 HttpSession 对象。为会话分配唯一的 ID。 **Servlet 容器还在 HTTP 响应的标头中设置 Cookie,其中包含 cookie 名称和唯一会话 ID 作为其值。**
](
https://beginnersbook.com/2013/05/http-session/
)
在上一篇指南中,我介绍了 Servlet 中的
[
会话
](
https://beginnersbook.com/2013/05/http-session/
)
。在这里,我们将讨论用于会话管理的
`Cookie`
。让我们回顾一下上一篇教程中的一些内容,以便我们可以关联会话和
`cookie`
。当用户第一次访问 Web 应用时,servlet 容器通过调用
`request.getSession()`
来创建新的
`HttpSession`
对象。为会话分配唯一的 ID。Servlet 容器还在 HTTP 响应的标头中设置
`Cookie`
,其中包含
`cookie`
名称和唯一会话 ID 作为其值。
cookie 存储在用户浏览器中,客户端(用户的浏览器)将此 cookie 发送回服务器以获取所有后续请求,直到 cookie 有效。
**Servlet 容器检查 cookie 的请求标头,并从 cookie 获取会话信息,并使用服务器内存中的关联会话。**
`cookie`
存储在用户浏览器中,客户端(用户的浏览器)将此
`cookie`
发送回服务器以获取所有后续请求,直到
`cookie`
有效。Servlet 容器检查
`cookie`
的请求标头,并从
`cookie`
获取会话信息,并使用服务器内存中的关联会话。
会话在
web.xml 中的 tag 中指定的时间内保持活动状态。如果未在 web.xml 中设置标记,则会话将保持活动状态 30 分钟。
**只要用户的浏览器正在运行**
,Cookie 就会保持活动状态,一旦浏览器关闭,cookie
和相关的会话信息就会被破坏。因此,当用户再次打开浏览器并向 Web 服务器发送请求时,将创建新会话。
会话在
`web.xml`
中的标签中指定的时间内保持活动状态。如果未在
`web.xml`
中设置标记,则会话将保持活动状态 30 分钟。
**只要用户的浏览器正在运行**
,
`Cookie`
就会保持活动状态,一旦浏览器关闭,
`cookie`
和相关的会话信息就会被破坏。因此,当用户再次打开浏览器并向 Web 服务器发送请求时,将创建新会话。
##
饼干
的类型
##
`Cookie`
的类型
我们可以根据
Cookie 的到期时间对 Cookie
进行分类:
我们可以根据
`Cookie`
的到期时间对
`Cookie`
进行分类:
1.
会
议
2.
一贯
1.
会
话
2.
持久
**1)会话
Cookie
:**
**1)会话
`Cookie`
:**
会话
Cookie 没有到期时间。它存在于浏览器内存中。一旦 Web 浏览器关闭,该 cookie
就会被破坏。
会话
`Cookie`
没有到期时间。它存在于浏览器内存中。一旦 Web 浏览器关闭,该
`cookie`
就会被破坏。
**2)持久性
Cookie
:**
**2)持久性
`Cookie`
:**
与会话
Cookie
不同,它们具有到期时间,它们存储在用户硬盘中,并根据到期时间被销毁。
与会话
`Cookie`
不同,它们具有到期时间,它们存储在用户硬盘中,并根据到期时间被销毁。
## 如何将
Cookie
发送给客户
## 如何将
`Cookie`
发送给客户
以下是向客户端发送
cookie
的步骤:
以下是向客户端发送
`cookie`
的步骤:
1.
创建一个
Cookie
对象。
1.
创建一个
`Cookie`
对象。
2.
设置最大年龄。
3.
将
Cookie
放在 HTTP 响应标头中。
3.
将
`Cookie`
放在 HTTP 响应标头中。
#### 1)创建一个
Cookie
对象:
#### 1)创建一个
`Cookie`
对象:
```
java
Cookie
c
=
new
Cookie
(
"userName"
,
"Chaitanya"
);
...
...
@@ -40,23 +40,23 @@ Cookie c = new Cookie("userName","Chaitanya");
#### 2)设置最大年龄:
通过使用
**setMaxAge()**
方法,我们可以设置特定 cookie
的最大年龄(以秒为单位)。
通过使用
`setMaxAge()`
方法,我们可以设置特定
`cookie`
的最大年龄(以秒为单位)。
```
java
c
.
setMaxAge
(
1800
);
```
#### 3)将
Cookie
放在 HTTP 响应头中:
#### 3)将
`Cookie`
放在 HTTP 响应头中:
我们可以通过
`response.addCookie()`
方法将
cookie
发送到客户端浏览器。
我们可以通过
`response.addCookie()`
方法将
`cookie`
发送到客户端浏览器。
```
java
response
.
addCookie
(
c
);
```
## 如何阅读
cookies
## 如何阅读
`cookie`
```
java
Cookie
c
[]=
request
.
getCookies
();
...
...
@@ -66,9 +66,9 @@ for(int i=0;i<c.length;i++){
}
```
## java servlet 中的
Cookie
示例
## java servlet 中的
`Cookie`
示例
**index.html**
`index.html`
```
java
<
form
action
=
"login"
>
...
...
@@ -79,7 +79,7 @@ for(int i=0;i<c.length;i++){
```
**MyServlet1.java**
`MyServlet1.java`
```
java
import
java.io.*
;
...
...
@@ -114,7 +114,7 @@ public class MyServlet1 extends HttpServlet
}
```
**MyServlet2.java**
`MyServlet2.java`
```
java
import
java.io.*
;
...
...
@@ -142,7 +142,7 @@ public class MyServlet2 extends HttpServlet {
}
```
**web.xml**
`web.xml`
```
java
<
web
-
app
>
...
...
@@ -184,21 +184,20 @@ public class MyServlet2 extends HttpServlet {
![](
img/8a4f68e6533768d919f075ed9e2c2c12.jpg
)
##
Cookie
类的方法
##
`Cookie`
类的方法
**public void setComment(String purpose)**
:此方法用于在 cookie 中设置注释。这主要用于描述 cookie
的用途。
`public void setComment(String purpose)`
:此方法用于在
`cookie`
中设置注释。这主要用于描述
`cookie`
的用途。
**public String getComment()**
:返回描述此 cookie 用途的注释,如果 cookie 没有注释,则返回 null
。
`public String getComment()`
:返回描述此
`cookie`
用途的注释,如果
`cookie`
没有注释,则返回
`null`
。
**public void setMaxAge(int expiry)**
:以秒为单位设置 cookie
的最大年龄。
`public void setMaxAge(int expiry)`
:以秒为单位设置
`cookie`
的最大年龄。
**public int getMaxAge()**
:获取此 Cookie 的最大年龄(以秒为单位)。
默认情况下,返回-1,表示 cookie 将持续到浏览器关闭。
`public int getMaxAge()`
:获取此
`Cookie`
的最大年龄(以秒为单位)。默认情况下,返回 -1,表示
`cookie`
将持续到浏览器关闭。
**public String getName()**
:返回 cookie
的名称。创建后无法更改名称。
`public String getName()`
:返回
`cookie`
的名称。创建后无法更改名称。
**public void setValue(String newValue)**
:为此 Cookie
指定一个新值。
`public void setValue(String newValue)`
:为此
`Cookie`
指定一个新值。
**public String getValue()**
:获取此 Cookie
的当前值。
`public String getValue()`
:获取此
`Cookie`
的当前值。
上面的列表只有常用的方法。要获得 Cookie 类的完整方法列表,请参阅
[
官方文档
](
https://docs.oracle.com/javaee/7/api/javax/servlet/http/Cookie.html
)
。
\ No newline at end of file
上面的列表只有常用的方法。要获得
`Cookie`
类的完整方法列表,请参阅
[
官方文档
](
https://docs.oracle.com/javaee/7/api/javax/servlet/http/Cookie.html
)
。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录