servlet4

本文深入探讨Web中Cookie和Session的基本概念、工作原理及应用限制。Cookie用于存储客户端信息,Session提供服务器端状态管理。了解Cookie的路径、生存时间和编码问题,以及Session的工作原理、获取方法和超时设置。此外,文章还介绍了登录过程和相关限制,帮助开发者构建更安全、高效的Web应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5)编码问题
cookie只能存放合法的ascii字符。
如果要保存中文,可以将中文转换成合法
的ascii字符串的形式。
URLEncoder.encode()
URLDecoder.decode()
注:添加cookie时,建议对所有字符都统一
使用encode方法进行编码。
6)生存时间问题
a.默认情况下,浏览器会把cookie保存在
内存里面,只要浏览器不关闭,cookie就会
一直存在(浏览器关闭,则cookie就会被删除)。
b.可以调用cookie.setMaxAge(int seconds)
来设置生存时间
b1.单位是秒。
b2.值可以>0: cookie会被保存在硬盘上,
超过指定的时间,浏览器会删除
该cookie。
值可以<0: 缺省值。
值可以=0: 删除cookie。
比如,要删除名称为city的cookie
Cookie c = new Cookie(“city”,”“);
c.setMaxAge(0);
response.addCookie(c);
7)路径问题
a.什么是cookie的路径问题?
浏览器在向服务器上的某个地址发
请求时,会比较要请求的地址是否
符合cookie的路径,只有符合条件的
cookie才会被发送。
b.默认路径
等于添加该cookie的组件的路径。
比如:
/web07/aaa/addCookie.jsp添加了
一个cookie,则该cookie的路径等
于”/web07/aaa/”
c.匹配规则
要访问的地址必须等于cookie的路径或者
是其子路径。
/web07/findCookie1.jsp no
/web07/aaa/findCookie2.jsp yes
/web07/aaa/bbb/findCookie3.jsp yes
d.设置路径
setPath(String path);
比如
cookie.setPath(“/web07”);
8)cookie的限制
a.可以被禁止
b.不安全(对于敏感数据,需要加密)
c.只能保存少量的数据(约4k)
d.数量有限制(约几百个)
e.只能保存字符串
练习:
写一个Find_addCookieServlet,先查看
有没有一个名叫”cart”的cookie,如果有,
则显示该cookie的值,如果没有,则
添加之。
不用考虑编码和生存时间问题

2.session(会话)
(1)什么是session?
服务器端为维护状态而创建的一个特殊的
对象(session对象)。
(2)session的工作原理
浏览器访问服务器时,服务器会创建session
对象(有一个唯一的id,称之为sessionId),
服务器会将这个sessionID以cookie的方式
发送给浏览器。
当浏览器再次访问服务器时,会将sessionId
发送给服务器,服务器端可以通过这个sessionId
找到对应的session对象。
(3)如何获得session对象?
1)方式一
HttpSession s =
request.getSession(boolean flag);
a.flag为true时:
查看请求当中是否有sessionId,
如果没有,则创建session对象;
如果有,依据sessionId查找相应的
session对象,如果找到了则返回,
找不到,创建一个新的session对象。
b.flag为false时:
查看请求当中是否有sessionId,
如果没有,返回null;
如果有,依据sessionId查找相应的
session对象,如果找到了则返回,
找不到,返回null。
2)方式二
HttpSession s =
request.getSession();
等价于 request.getSession(true);
(4)HttpSession提供的几个重要方法
String getId();
setAttribute(String name,Object obj);
Object getAttribute(String name);
removeAttribute(String name);
(5)session超时
1)什么是session超时
服务器会将空闲时间过长的session
对象删除掉。
注:为了节省内存空间资源。
2)服务器缺省超时限制
一般30分钟。
可以修改

30

注:不建议修改
3)setMaxInactiveInterval(int seconds)
(6)删除session
invalidate()

3.登录
step1,建表
create table user(
id int primary key auto_increment,
username varchar(50) unique,
pwd varchar(30),
name varchar(100),
gender char(1)
);
insert into user(username,pwd,name,gender)
values(‘King’,’1234’,’Giving King’,’m’);

要使用servlet4的正式版,您需要做以下几步: 1. 修改您的项目依赖,将servlet4preview相关的依赖替换为servlet4正式版的依赖。例如,如果您使用的是Maven,可以将以下依赖: ``` <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.2-b02</version> </dependency> ``` 替换为: ``` <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> </dependency> ``` 2. 修改您的web.xml文件,将servlet4preview相关的配置替换为servlet4正式版的配置。例如,如果您使用了servlet4preview的异步servlet,您需要将以下配置: ``` <servlet> <servlet-name>MyAsyncServlet</servlet-name> <servlet-class>com.example.MyAsyncServlet</servlet-class> <async-supported>true</async-supported> </servlet> ``` 替换为: ``` <servlet> <servlet-name>MyAsyncServlet</servlet-name> <servlet-class>com.example.MyAsyncServlet</servlet-class> <async-supported>true</async-supported> <init-param> <param-name>org.apache.tomcat.websocket.async.WriteBufferWaterMark</param-name> <param-value>32768</param-value> </init-param> </servlet> ``` 3. 重新编译和部署您的项目。 请注意,servlet4正式版可能与之前的servlet版本不兼容,因此在使用时请仔细检查您的代码和配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值