java web学习(基础篇)一 从Servlet开始说起

时间:2023-02-24 19:17:17

本系列博客是介绍java web最基本技术的,有人可能会问,现在有那么多功能强大的Web框架,有必要从最基本的技术学起吗。实际上,Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践。很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处理有关,形成一个基础,在开发别的应用项目的时候则可以从这个剥离出来的基础做起,让开发者更关注更具体的业务问题,而不是Web的请求和响应的控制。

目前各种语言的框架很多,但套路基本类似,帮你隐藏很多关于 HTTP 协议细节内容,专注功能开发。像Java web的spring框架等都很强大。

但对一个初学者来说,过早的接触框架却往往会事倍功半!没有基本功的积累和最基本架构的了解,盲目的依赖某一种框架开发,会让你无法深入web开发的本质,你可实现了某些功能,但对实现的机制一点也不了解,同样一个问题,如果换一种框架,你可能需要从头开始研究。这样的学习我认为是不可取的。

因此本系列博客从最基本的java web技术开始讲起,而java web的框架等将在java web教程(进阶篇)和专门的框架系列博客中讲到。

首先,我们从Servlet技术说起。

一 Servlet 是什么?

1 概念

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

2 用途

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

3 优点(和 CGI(Common Gateway Interface,公共网关接口)相比)

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

servlet架构图:

java web学习(基础篇)一 从Servlet开始说起

Servlet 生命周期

通过调用 init () 方法进行初始化。
通过调用 service() 方法来处理客户端的请求。
通过调用 destroy() 方法终止(结束)。
最后,由 JVM 的垃圾回收器进行垃圾回收。

Servlet 表单数据

浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法。

GET 方法

GET 方法向页面请求发送已编码的用户信息。页面和已编码的信息中间用 ? 字符分隔,如:

http://www.web.com/hello?key1=value1&key2=value2

GET 方法是默认方法,如果向服务器传递密码或敏感信息,不要使用 GET 。Servlet 使用 doGet() 方法处理这种类型的请求。

POST 方法

POST 方法不是把信息作为 URL 中 ? 字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息。消息以标准输出的形式传到后台程序。Servlet 使用 doPost() 方法处理这种类型的请求。

使用 Servlet 读取表单数据

getParameter():通过调用 request.getParameter() 方法来获取表单参数的值。
getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
getParameterNames():如果想要得到当前请求中的所有参数的完整列表,则调用该方法。

Servlet 编写过滤器

Servlet 过滤器是可用于 Servlet 编程的 Java 类,有以下作用:
在客户端的请求访问后端资源之前,拦截这些请求。
在服务器的响应发送回客户端之前,处理这些响应。

根据规范建议的各种类型的过滤器:
身份验证过滤器(Authentication Filters)。
数据压缩过滤器(Data compression Filters)。
加密过滤器(Encryption Filters)。
触发资源访问事件过滤器。
图像转换过滤器(Image Conversion Filters)。
日志记录和审核过滤器(Logging and Auditing Filters)。
MIME-TYPE 链过滤器(MIME-TYPE Chain Filters)。
标记化过滤器(Tokenizing Filters)。
XSL/T 过滤器(XSL/T Filters),转换 XML 内容。

过滤器被部署在部署描述符文件 web.xml 中,然后映射到您的应用程序的部署描述符中的 Servlet 名称或 URL 模式。

当 Web 容器启动 Web 应用程序时,它会为您在部署描述符中声明的每一个过滤器创建一个实例。该过滤器执行的顺序是按它们在部署描述符中声明的顺序。

Servlet 过滤器方法

过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类。javax.servlet.Filter 接口定义了三个方法:
序号 方法 & 描述
1 public void doFilter (ServletRequest, ServletResponse, FilterChain)
该方法在每次一个请求/响应对因客户端在链的末端请求资源而通过链传递时由容器调用。
2 public void init(FilterConfig filterConfig)
该方法由 Web 容器调用,指示一个过滤器被放入服务。
3 public void destroy()
该方法由 Web 容器调用,指示一个过滤器被取出服务。

好,这篇博客就先到这里,下一篇博客将为大家介绍JSP技术。