服务器端组件

Posted solverpeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器端组件相关的知识,希望对你有一定的参考价值。

一、servlet

1.servlet是运行在服务器端的一个特殊的java类,它可以用于接收页面传过来的数据,由java程序来处理,也可以将处理结果返回给浏览器,也指ServletAPI。

2.servlet的主要任务:

(1)读取客户端(浏览器)发送的显式请求数据。包括 html 表单。

(2)读取由客户端(浏览器)发送的隐式请求数据。包括 Cookies,媒体类型等。

(3)处理请求数据并生成结果。

(4)发送显式数据到客户端(浏览器),可以为各种格式。

(5)发送隐式数据到客户端(浏览器),包括设置Cookies和缓存。

3.servlet的生命周期:

(1)init() 方法

在第一次创建Servlet的时候会被调用。通常情况下,用户第一次调用对应该 Servlet 的URL时,Servlet 会被创建

但是当服务器启动时,你也可以指定 Servlet 被加载。

当用户调用 servlet 的时候,每个 servlet 的实例就会被创建,并且每一个用户的请求都会产生一个新的线程,在适当的时刻

交给 doGet() 或是 doPost() 方法。

(2)service() 方法

是执行实际任务的主要方法。Servlet 容器(Web 服务器)调用 service() 方法来处理来自客户端的请求,并将格式化的响应返回到客户端。

每次服务器接收到一个 servlet 请求时,服务器会产生一个新的线程并调用服务。

service() 方法由容器调用,且 service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等。

所以对 service() 方法你什么都不需要做,只是根据你接收到的来自客户端的请求类型来重写 doGet() 或 doPost()。

doGet() 和 doPost() 方法在每次服务请求中是最常用的方法。下面是这两种方法的特征。

(3)destroy() 方法

destroy() 方法只在 servlet 生命周期结束时被调用一次。

4.读取表单参数

getParameterNames():如果你想要得到一个当前请求的所有参数的完整列表,那么调用该方法。

GET 方法有大小限制:请求字符串中最多只能有 1024 个字符

二、filter

1.filter是在浏览器请求到达Web资源之前或Web资源给出的响应回到浏览器之前进行统一的拦截和过滤的服务器端组件

2.生命周期:

(1)创建对象:在Web应用加载时执行——只执行一次:说明Filter也是单实例多线程的方式运行的

(2)初始化操作:创建对象后立即执行——只执行一次

(3)拦截浏览器请求:执行doFilter()对象——多次执行

(4)对象释放前:执行清理操作——只执行一次

3.映射方式

(1)通过URL地址

精确匹配:在url-pattern标签中指定一个具体的URL地址,其中不使用任何的通配符,例如:/target.jsp

模糊匹配:在url-pattern标签中指定一个带有通配符的URL地址

<1>前缀匹配:URL地址前面确定,后面使用通配符,例如:/happy/*

<2>后缀匹配:URL地址后面确定,前面使用通配符,例如:*.jsp,*.jpg

注意:不能在URL地址中间使用通配符,例如:/happy/*.jsp是不允许的

(2)映射Servlet

4.多个filter链的执行顺序

按照 FilterMapping的顺序执行

5.常见的使用情况

(1)用户名密码的验证

(2)过滤不雅字符:HttpServletRequestWrapper,装饰者模式

*在JavaWeb应用中,很多服务器组件的对象是由服务器容器来创建的,

具体的是,我们提供了这些服务器组件的注册信息,然后容器会检测到,进而通过反射来创建对象,这是一种依赖注入的思想,

但是这样会产生一个问题,我们无法对他们的方法进行修改,通过继承的方式会导致程序的迁移性差,

所以我们使用装饰者模式来对原始的服务器容器创建的对象进行包装,修改它的某些方法,进而达到预期的效果。

 

 

未完,待续。

以上是关于服务器端组件的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp前端和后端怎么通信

SvelteKit 并在服务器端渲染中缓存组件输出

Blazor 服务器端 SPA:重新加载组件后的组件状态

基于Express 在服务端渲染React组件

.NET 8新预览版本使用 Blazor 组件进行服务器端呈现

jwt组件