JavaWeb三大组件之Servlet
一、基本概念
WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。Internet上供外界访问的Web资源分为:
1、静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变
2、动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。常用动态web资源开发技术:JSP/Servlet、ASP、PHP等,在Java中,动态web资源开发技术统称为Javaweb。
静态WEB中存在以下几个缺点:
1、Web页面中的内容无法动态更新,所有的用户每时每刻看见的内容和最终效果都是一样的。为了可以让静态的WEB的显示更加好看,可以加入了JavaScript以完成一些页面上的显示特效,但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。
2、静态WEB无法连接数据库,无法实现和用户的交互。使用数据库保存数据是现在大多数系统的选择,因为数据库中可以方便地管理数据,增删改查操作可以使用标准的SQL语句完成。
动态WEB:
所谓的动态不是指页面会动,主要的特性的是:“WEB的页面展示效果因时因人而变”,而且动态WEB具有交互性,WEB的页面的内容可以动态更新。整个动态WEB操作的过程图如下:
动态WEB中,程序依然使用客户端和服务端,通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(服务器插件)来处理,此插件用于区分是请求的是静态资源还是动态资源。
- 如果WEB Server Plugin发现客户端请求的是静态资源(*.htm或者是*.html),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。
- 如果WEB Server Plugin发现客户端请求的是动态资源(*.jsp、*.asp/*.aspx、*.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。
二、WEB服务器
对于“Web服务器”的多种定义和解读:
- Web服务器,一般是指“网站服务器”,是指驻留于互联网上某种类型计算机的程序。Web服务器可以向Web浏览器等客户端提供文档,也可以放置网站文件,让全世界浏览,更可以放置数据文件,让全世界下载。
- Web服务器是一种被动程序,只有当互联网上运行的、其他计算机中的浏览器发出请求时,Web服务器才会响应。
- Web服务器,是指驻留于互联网上某种类型计算机的程序。当Web浏览器(客户端)连到Web服务器上,并请求文件时,Web服务器将处理该请求,并将文件发送反馈到Web浏览器上,附带的信息会告诉Web浏览器如何查看该文件。由于Web服务器,使用HTTP(超文本传输协议)与客户机浏览器进行信息交流,所以人们常把它们称为“HTTP服务器”。
目前最常用的Web服务器是: Apache (阿帕奇)的Tomcat服务器和 Microsoft(微软)的互联网信息服务器(英文全写:Internet Information Services,缩写:IIS,即“互联网信息服务”)。
学习web开发,为什么必须要先装一个WEB服务器?
在本地计算机上随便创建一个web页面,用户是无法访问到的,但是如果启动tomcat服务器,把web页面放在tomcat服务器中,用户就可以访问了。这说明什么问题?
1、不管什么web资源,想被远程计算机访问,都必须有一个与之对应的网络通信程序,当用户来访问时,这个网络通信程序读取web资源数据,并把数据发送给来访者。
2、WEB服务器就是这样一个程序,它用于完成底层网络通迅。使用这些服务器,We应用的开发者只需要关注web资源怎么编写,而不需要关心资源如何发送到客户端手中,从而极大的减轻了开发者的开发工作量。
三、Servlet组件
【1】Servlet简介
> 意为:运行在服务器端的小程序。
<servlet> <servlet-name>别名</servlet-name> <servlet-class>全类名</servlet-class> </servlet> <servlet-mapping> <servlet-name>别名</servlet-name> <url-pattern>需要servlet处理的请求地址</url-pattern> </servlet-mapping>
【2】Servlet的生命周期
【3】与Servlet相关的接口
① ServletConfig
<servlet> <servlet-name>AServlet</servlet-name> <servlet-class>com.atguigu.servlet.AServlet</servlet-class> <init-param> <param-name>user</param-name> <param-value>root</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>123123</param-value> </init-param> </servlet>
②ServletContext

代表:当前的WEB应用,一个WEB应用对应一个唯一的ServletContext对象,
<context-param> <param-name>phone</param-name> <param-value>1388888888</param-value> </context-param>
【4】 GenericServlet
【5】 HttpServlet
- HttpServlet继承了GenericServlet,而GenericServlet实现Servlet接口
【6】 HttpServletRequest
代表:浏览器发送给服务器的请求报文。
request.getParameter("username");
request.getContextPath();
request.getRequestDispatcher("target.html").forward(request, response);
【7】 HttpServletResponse
response.getWriter("");
response.sendRedirect("target.html");
【8】 字符编码
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "text/html;charset=utf-8");
response.setContentType("text/html;charset=utf-8");
【9】 路径问题
URI和URL
- URI,统一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。URI只是一种概念,怎样实现无所谓,只要它唯一标识一个资源就可以了。
- URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位符”。
> 总结:只要能唯一标识资源的就是URI,在URI的基础上给出其资源的访问方式的就是URL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?