栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Servlet原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servlet原理

一、简介

        Servlet 运行于 Web 或 应用服务器上 的程序,是 HTTP请求 和 服务器上的数据库 或 应用程序之间的中间层。

       用于收集网页表单的用户输入,呈现来自数据库或者其他源的记录,动态创建网页。

二、优点

  • 性能更好
  • 在Web服务器地址空间内执行,则无需再创建线程处理用户请求
  • 独立于平台(Java编写)
  • 可信(服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源)
  • Java所有类库均可对其使用

三、生命周期

  • 初始化:第一次调用时,进行初始化,且仅初始化一次,调用init()方法
  • 处理请求:处理用户请求,并作出响应
  • 销毁:长期未调用时进行销毁,销毁前,调用destroy(),销毁被JVM的垃圾回收机制管理

下图反应了Web服务器中Servlet的生命周期:

 四、Servlet HTTP请求头信息

​
  Accept // 浏览器或其他客户端可以处理的 MIME 类型。值 image/png 或 image/jpeg 是最常见
  Accept-Charset	// 显示信息的字符集。例如 ISO-8859-1。
  Accept-Encoding	// 编码方式。值 gzip 或 compress 是最常见的两种可能值。
  Accept-Language	// 客户端的首选语言,Servlet 会产生多种语言的结果。例如,en、en-us、ru 等。
  Authorization	    // 客户端在访问受密码保护的网页时识别自己的身份。
  Connection	    // 是否可以处理持久 HTTP 连接。值 Keep-Alive 意味着使用了持续连接。
  Content-Length	// POST 请求,给出 POST 数据的大小(以字节为单位)。
  cookie	        // 发送到浏览器的 cookies 返回到服务器。
  Host	            // URL 中的主机和端口。
  If-Modified-Since	// 仅目标页面在指定日期已更改时。无新的结果可用,返回304,表 Not Modified
  If-Unmodified-Since	//当文档早于指定日期时,操作才会成功。
  Referer           // 所指向的 Web 页的 URL。
  User-Agent	    // 识别发出请求的浏览器或其他客户端,并可以向不同类型的浏览器返回不同的内容。

​

五、Servlet HTTP响应头信息

  Allow	// 服务器支持的请求方法(GET、POST 等)。
  Cache-Control	// 响应在何种情况下可以安全地缓存。
                // Public 可缓存,Private 单用户私用,仅存私有(非共享)缓存,no-cache 不应缓存
  Connection // 是否使用持久 HTTP 连接。close 不持久连接,keep-alive 持久连接。
  Content-Disposition // 要求用户以给定名称的文件把响应保存到磁盘。
  Content-Encoding // 编码方式。
  Content-Language // 使用的语言。例如,en、en-us、ru 等。
  Content-Length // 响应中的字节数。使用持久(keep-alive)HTTP 连接时才需要。
  Content-Type // 响应文档的 MIME(Multipurpose Internet Mail Extension)类型。
  Expires // 内容过期的时间,过期后不缓存。
  Last-Modified	// 最后修改时间。客户端可缓存,并在以后请求中通过 If-Modified-Since 提供日期。
  Location // 所有带状态码的响应中,300s 内,通知浏览器文档的地址。自动重连到该位置,并获取文档。
  Refresh  // 如何刷新即刷新时间。
  Retry-After // 与 503(Service Unavailable 服务不可用)响应配合,设置重复请求时间。
  Set-cookie // 页面关联的 cookie。

六、过滤器
        Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。可实现:

  • 在客户端的请求访问后端资源之前,拦截这些请求。
  • 在服务器的响应发送回客户端之前,处理这些响应。

        过滤器拦截请求后,则可按需求进行处理,常用到的有身份验证、加密解密、权限控制等。如下,为一个拦截器的实现,在web.xml文件中将其映射到url或者Servlet。

//导入必需的 java 库
import javax.servlet.*;
import java.util.*;

//实现 Filter 类
public class LogFilter implements Filter  {
    public void  init(FilterConfig config) throws ServletException {
        // 获取初始化参数
        String site = config.getInitParameter("Site"); 

        // 输出初始化参数
        System.out.println("地址: " + site); 
    }
    public void  doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException {

        System.out.println("这是拦截器");

        // 把请求传回过滤链,过滤链串联多个filter,按照web.xml中的定义依次执行
        chain.doFilter(request,response);
    }
    public void destroy( ){
        
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349055.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号