Servlet 和 Cookie-Session 学习笔记(基础)

简单来说:是运行在服务器端的 Java 程序,它作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层

用处:

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页及处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

而相比 CGI,Servlet 的优势:

  • Servlet 在 Web(网络) 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
  • Servlet 是独立于平台的,因为它们是用 Java 编写的。
  • 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
  • Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

总结:Servlet 是 Java 提供的动态互动 web 资源开发技术(也是 JavaEE 规范之一,实际上就是一个接口)

在正式使用 Servlet 之前先来看一下 Tomcat(一种 Web 运营服务器,同时也算个 Servlet 容器)

而 Tomcat 能帮我们很方便地接收和返回到请求!

 Servlet 使用快速入门

特点:

  • Servlet 是单例的
  • 配置通配符的时候可以用各种的通配符 *. 和一个 Servle t可以被多个配置映射
  • 访问 web 任何资源其实都是在访问 Servlet(即便是访问图片资源,Tomcat 都有默认 Servlet 处理)

Servlet 方法介绍: 

ServletConfig 和 ServerContext 对象们

前者可以用来读取 web.xml 配置的初始化参数,避免写硬编码,而将配置写在配置文件中

后者是代表当前整个应用,所以它在 Tomcat 启动时就会被创建。我们一般用它来获取整个应用的配置选项或读取资源文件

总结:前者是单个的,后者是整个应用的。

request 和 response 对象们

前者即封装了HTTP的请求头,而后者封装了HTTP的响应头

request 继承体系

request 获取请求数据

 

 通用方式 get/post 获取请求参数

两种常用的 HTTP 请求方法:GET&POST
GETPOST
描述从指定资源请求数据向指定资源提交要被处理的数据
提交参数显示在 URL不会显示在 URL
查询请求查询字符串发送于 GET 请求的 URL,如下:
"/test/demo_form.php?name1=value1&name2=value2"

查询字符串发送于 POST 请求的 HTTP 信息主体,如下:
"POST /test/demo_form.php HTTP/1.1
Host: runoob.com
name1=value1&name2=value2"

后退按钮/刷新无害数据会被重新提交(浏览器应该告知用户数据会被重新提交)
书签可收藏为书签不可收藏为书签
缓存能被缓存不能缓存
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded or multipart/form-data。为二进制数据使用多重编码
历史记录参数保留在浏览器历史中参数不会保存在浏览器历史中
对数据长度的限制是的。当发送数据时,GET 方法向 URL 添加数据;而 URL 的长度是受限制的(URL 的最大长度是 2048 个字符)无限制
对数据类型的限制只允许 ASCII 字符没有限制。也允许二进制数据
安全性与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分

在发送密码或其他敏感信息时绝不要使用 GET !
POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中
可见性数据在 URL 中对所有人都是可见的数据不会显示在 URL 中
用途多见多用于取回数据多用于提交数据

 请求参数的中文乱码处理

请求参数转发

响应设置

响应重定向(和请求转发比较)

响应字符数据

响应字节数据

路径和虚拟目录设置的问题

Servlet 访问配置

urlPattern 四大配置规则:

XML 旧时配置方式

案例练习

SqlSessionFactor 工具类的抽取

Cookie Session 会话跟踪机制

前面已经看过了 Config(获取配置信息)、Context(代表整个Web应用)、Request(HTTP请求)、Response(HTTP响应)

名词解析:

  • 会话:指的是一对游览器和 web 服务器的连接通道(这里面可以包含多次请求和响应)
  • 会话跟踪:一种维持游览器状态的方法,由于HTTP协议的设置游览器就需要识别多次请求是否都来自同一个游览器,以便于在会话中的多次请求间共享数据
  • HTTP协议是无状态的。这代表每次游览器向服务器请求时,服务器都会将该请求视作新的请求,而业务需要我们通过会话跟踪来实现会话内数据共享

JavaEE HttpSession 接口来指导实现一次会话内的多次请求间数据共享功能。

Cookie 方法
格式描述
new Cookie(String name, String value)创建对象但必须传入名字和其值
getName()得到 Cookie 保存的名字
getValue()得到 Cookie 保存的值
setMaxAge(int seconds)设置 Cookie 存活时间(默认是负数:代表当客户端游览器关闭时则销毁 Cookie。零则代表删除对应 Cookie)
request getCookies()获取客户端传来的所有 Cookie 对象(HttpServletRequest)
response addCookie(Cookie cookie)将传入 cookie 交给客户端保存(HttpServletResponse)

Cookie 不能直接存储中文,需要进行转码:URL 编码

Session 方法
格式描述
request.getSession()创建对象
void setAttribute(String name, Object o)存储数据到 session 域
Object getAttribute(String name)根据 name 获取值
void removeAttribute(String name)根据 name 删除值
getId()获取 session 对应 id
invalidate()让 session 立刻无效
setMaxInactiveInterval(int i)设置 session 最大的有效时间(这个有效时间是两次访问服务器所间隔的最大时间,如果超过最大的有效时间,那么这个 session就失效了

CookieSession
存储位置客户端(游览器内存)服务端
安全性×
大小限制3KB无限制
存储时间长期存储默认30分钟
是否占用服务器资源不占用服务器资源占用服务器资源
比喻酒店的房卡酒店的临时停车票
实现关系Session 是基于 Cookie 实现的Cookie 的实现是基于 HTTP 协议的
共同点都是用来完成一次会话内的多次请求间数据共享功能

Servlet 教程 | 菜鸟教程Servlet 教程 Servlet 为创建基于 web 的应用程序提供了基于组件、独立于平台的方法,可以不受 CGI 程序的性能限制。Servlet 有权限访问所有的 Java API,包括访问企业级数据库的 JDBC API。 本教程将讲解如何使用 Java Servlet 来开发基于 web 的应用程序。 现在开始学习 Servlet! 谁适合阅读本教程? 本教程是专为 Java 程序员设计的。在阅读本教程之前,需要先了解..icon-default.png?t=N7T8https://www.runoob.com/servlet/servlet-tutorial.html

Servlet 代码优化

出现背景:Web 层的 Servlet 个数众多,这不利于维护

方法:将 Servlet 进行归类,比如同一个实体类的操作方法写到一个 Servlet 里面

 (将类级别 ——> 方法级别,便于管理)

遇见错误介绍:

注意!web项目要放在其根目录下,且要在项目结构里标记好地址之类的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值