让时间可以追溯到25年前,我的国家刚刚被接受了不到两年。在那个时候,计算机就是这样:
当时,网页技术还不是很开发。每个人都打开浏览器以浏览一些页面,例如图片,文本信息等。
随着时间的流逝,静态页面无法再满足大多数用户的需求。
用户可以打开浏览器,不仅可以浏览图片和文本吗?如果用户还想提交表单,单击按钮,以及要与浏览器进行交互,该怎么办?
为了解决用户与浏览器之间动态互动的问题,1997年,Sun Corporation(发明的JDK)推出了技术。
Servlet是基于Java技术的Web组件。它在服务器上运行并管理。它主要用于处理用户的请求和生成。
Servlet实际上是根据写作写的Java课。
我们知道,类必须具有独立运行的主要方法,但是Servlet类没有主要方法。如何运行?
答案是在servlet容器中运行。
您可以将Servlet视为应用程序,并且手机等同于Servlet容器。App不能单独运行,必须放置在电话上。
由于没有主要方法,因此Servlet不能独立运行,并且必须放置在Servlet容器中。
我们之前提到必须将服务放置在内部,但是可以运行服务的容器。
为什么建议使用tomcat?因为它是免费的,开源的,易于使用的。
笔记:
输入bin目录,double -Click Startup.sh
打开浏览器并输入:
当出现以下图片时,这意味着您已经成功安装了!
为什么定义这些规格?
因为您必须为Tomcat的管理和跑步写一个servlet课,所以您必须听别人的声音。俗话说,人们如何在屋檐下抬头?因此,您必须按照他人指定的规范进行开发。
在这里,我们使用IDEA创建Javaweb Project.Project Directory:
1.在顶部菜单栏中选择运行,然后选择“编辑配置”。
2.单击“+”,选择tomcat服务器,然后选择本地。
3. Application Server选择Tomcat的本地安装目录。HTTP端口默认情况下可以执行8080。
4.选择部署,单击正确的数字,然后选择“伪影” 5。选择Web项目。可以自定义应用程序上下文,这等同于我们项目的默认访问路径6。写index.jsp 7.运行tomcat浏览器URL输入:
1.介绍罐装包装
在Web-Inf目录中创建一个新的LIB目录,并将Tomcat Bin目录放在LIB项目下。
2.将jar包作为库将其添加到项目中。
注意:由于JAR软件包是编译的Java代码,因此相当于在项目中指定的TOMCAT规范下添加Java代码。
选择LIB目录和正确的单击以选择添加作为库3。创建新服务类
servlet规范:如果您想由tomcat管理,则必须继承tomcat jar下的httpservlet类。
创建一个Java类来继承HttpServlet Parent类,以使其成为Servlet接口实现类,并重写父类和方法。
4.配置Web.xml
为什么要配置web.xml?
您根据servlet规范创建了一个servlet课,但哥哥汤姆卡特(Tomcat)不知道!所以您需要告诉哥哥。
Web.xml等于Tomcat的Gatekeeper。您需要在Gatekeeper上注册并实现Servlet接口,以将类信息实现到Tomcat服务器。
您需要注册Servlet类的名称,项目路径以及项目所在的请求路径。
5.测试
运行项目,浏览器输入:
查看控制台打印:
浏览器直接输入URL,按Enter Enter the Get Request,与HTML中的超链接相同,例如:::
6.评论开发
时间从代码键盘的声音传递。似乎一切都很平静,但是有一天发生了什么事。
那是一个下午。Tomcat的看门人在看报纸时正在看报纸时正在看报纸。马蹄形突然发出了马蹄形的声音。
事实证明,有10,000次servlet在下午查看Web.xml进行注册。
Web.xml看着这种情况后,他迅速起诉Tomcat官员。
Tomcat认为:“这10,000个servlet必须在猴子年之前进行注册?忘记它,让他们注册,让他们带上一个,我可以认出这个标记。”
因此,在版本之后,我们不需要在web.xml中配置每个服务器,只需要添加一个注释。注释格式:
例如:
或者:
目前,web.xml是空的和空的:即使未配置Web.xml,也可以添加它,因为我们补充说,Tomcat可以认识到我们将再次询问该服务并发现我们可以要求成功。
运行项目,浏览器输入:
:应该保持名称和请求路径唯一,否则Tomcat不知道要提供用户的请求哪个服务。
为什么要学习HTTP协议?
因为只有知道HTTP协议,您才能找出在网络上传输信息的过程,并且您可以知道Servlet在做什么。
HTTTP协议主要在客户端服务器架构上使用。当HTTP客户端通过URL发送请求到Web服务器时,HTTP的常用请求是GET请求并发布请求。在Web服务器处理用户的请求后,,向客户发送响应信息。
该信息以网络形式传递,并将传输信息封装到HTTP协议数据包中。HTTP协议软件包包括一个请求包和响应软件包。
HTTP请求的消息格式主要包括:请求,请求标头,请求空行,请求数据。
例如,消息主体获取请求:
主要包括:请求方法,URL请求和请求HTTP版本协议,例如:
请求标题格式:请求名称:请求头值,例如:
以下是一个完整的请求头:
请求Air Deck是一个空线,这意味着由于下一行,因此没有请求头告诉服务器。
获取请求没有请求主体。只有邮政请求有一个请求主体。请求主体以钥匙值对传输。帖子的请求主体是关键值对。
HTTP响应的消息格式主要包括:状态线,响应头,空气线,相应的数据。例如,以下是一个完整的响应主体:
状态:HTTP协议版本号,状态代码,状态消息。
第一个行为状态(HTTP/1.1)表示HTTP版本为1.1,状态代码为200,状态消息还可以。
第二和第三行为响应标头用于说明客户需要使用的一些其他信息。
第四行是空线。
最后一个HTML代码是响应的文本。
代替:
因为我们不记得这太长的路径。
那么如何在我们的项目中设置默认的欢迎页面?
它也在web.xml.setting规则中配置:
然后,我们需要在目录中或目录中创建一个欢迎页面。
欢迎页面的默认显示顺序是从上到下,如果不配置,可以从这些文档中找到它。
例如,当我们刚刚创建此项目时,我们没有配置欢迎页面,但是在程序运行后,默认情况下会显示index.jsp的内容。
当然,我们还可以设置一个自定义的欢迎页面,例如::
运行程序:
我们通过浏览器将一台发送到HTTP服务器,HTTP服务器将自动生成一个和一个。
和httpservletrequest表示客户端的请求。HTTP请求中的所有信息都封装在此对象中。我们可以使用此对象如下:
运行项目,浏览器输入:
控制台打印结果:
我们使用以下方法获取请求标头的参数信息:
7.3.1获取获取get请求标头的参数信息首先我们在浏览器请求路径上添加请求参数。分开多个参数,例如:
修改代码:
运行程序,检查控制台打印信息:
7.3.2参数信息要获取邮政请求标题,我们首先修改默认欢迎页面的代码login.html以添加表单信息:
修改服务代码:
输入信息在浏览器页面上,密码为123456,单击登录按钮:
查看控制台的印刷信息:
7.3.3解决邮政请求以获取参数乱码问题。在上面的示例中,我们发现英语和数字可以正常输出,但中文却乱七八糟。为什么是这样?
当浏览器以GET发送请求时,请求参数保存在中间,并且HTTP Server在获得请求协议软件包后将其解码。
Tomcat负责解码它。由于Tomcat使用默认情况下的字符集,因此该角色集可以解释所有国家的文本,因此即使中文也不会被乱扔。
当浏览器将请求发送到帖子中时,请求参数保存在中间,而HTTP服务器将在获得请求协议软件包后将其解码。
请求对象请求负责解码请求主体的内容。由于请求使用默认的字符集,因此该字符集为一个字符集,因此将用中文插入。
因此,如果要在请求方法中解决乱码问题,则应首先让请求对象使用设置的UTF-8字符重新编码请求内容。
让我们修改服务的代码:
浏览器页面上的输入信息,单击登录按钮以查看控制台打印信息:
处理用户的请求后,我们必须响应用户,而httpservletresponse是响应对象。它可以执行以下操作:
我们将响应结果放入响应主体中,然后编译和分析浏览器中响应主体的二进制内容以显示其含量。
语法格式:
让我们修改服务守则:
运行项目,浏览器输入:
查看浏览器响应结果:
从上面的示例中,我们看到可以正常输出英语和数字,但中文乱七八糟。我们可以设置响应头内容类型的格式,以便浏览器可以输出中文。
设置内容类型的语法格式:
让我们修改服务守则:
运行项目,浏览器输入:
查看浏览器响应结果:
我们可以将响应头中的位置属性设置为让浏览器跳到指定的URL.grammar格式:
让我们修改服务守则:
运行项目,浏览器输入:
查看浏览器响应结果:
如果有一天您对HTTP服务器说:我想吃黄鸡。结果,您的访问场景就是这样:
后来,您完全是:“我想吃一只黄色的鸡,需要去很多次?什么可以打破网站,再也不会使用它!”
因此,为了增强用户体验,servlet规范定义了在多个服务之间相互调用的规则。
无论涉及多少个servlet,用户只需要向浏览器启动请求即可。servlet彼此合作,用户获得了响应的结果。
在多个服务之间有两个互相调用的规则:
用户首先通过浏览器访问Oneverlet,但是Oneservlet无法解决用户的问题。
浏览器获取HTTP响应软件包后,它将根据响应标头中本地的值向HTTP服务器中的Twoservlet发送请求。TwoServlet将处理用户的请求。
实际上,重定向等同于您去刘贝伊借钱。刘·贝伊(Liu Bei)说,我没有钱去曹操。
新的Oneservlet
新的Twoservlet
运行该项目,使用浏览器访问OneServlet:
查看浏览器响应结果:
1.原则
用户首先通过浏览器访问OneServlet,但是Oneservlet无法解决用户的问题。
实际上,请求转发等同于您找到刘贝伊借钱。刘·贝伊(Liu Bei)没有钱去触摸它,但是刘·贝(Liu Bei)是公义,他带您找到曹操借钱。最后,您从Cao Cao那里借了钱。
2.功能
3.实施方法
4.案件
仅修改Oneservlet
运行该项目,使用浏览器访问OneServlet:
查看浏览器响应结果:
摘要:重新方向的赎回是向服务器发送两个以上的请求。请求转发发生在服务器内部,浏览器仅请求一次。
:在第一个servlet处理请求之后,将数据移交给第二个servlet供使用。
Servlet规范提供了解决数据共享问题的四种方法。
1.全球行动领域
ServletContext对象是全局范围对象。全局角色对象等同于课堂中的对象。老师将一些公共物品放在这里,所有学生(Servlet)都可以使用。
2.如何使用
将共享数据添加到全局范围对象
从全局范围对象获取共享数据
3. CASE修改Oneservlet
修改两家
运行该项目,使用浏览器访问OneServlet:
查看浏览器响应结果:
1介绍
cookie是servlet规范中的对象。如果两个服务来自同一网站,则可以使用cookie对象进行数据共享。
2.原理
用户要求的Oneservlet,Oneservlet创建了与当前用户有关的cookie存储数据。执行了cookie,并将cookie写入当前浏览器的响应标头。
浏览器获得HTTP响应软件包后,将cookie信息存储在其中。
一段时间后,用户通过同一浏览器访问了Twoservlet。浏览器将缓存中的cookie信息写入HTTP请求包的请求标题。
目前,Twoservlet可以通过阅读请求标题中的Cookie信息来获取OneServlet提供的共享数据。
实际上,cookie的原理就像您(浏览器)首次去健身房(HTTP服务器)。体育馆的工作人员会为您做一张饼干卡。下一次您去这个体育馆,那里的工作人员将在获得会员卡后知道您是谁。
3.如何使用
创建cookie并保存共享数据
获取共享数据
4. CASE修改Oneservlet
修改两家
运行该项目,首先访问OneServlet:
再次访问Twoservlet:
查看控制台打印结果:
注意:
5.饼干的破坏时间
默认情况下,cookie对象存储在浏览器的缓存中。因此,只要关闭浏览器,cookie对象就会被破坏。
为了延长cookie的生存时间,我们可以将cookie信息存储在本地计算机的硬盘上,并设置cookie的生存时间。
在生存期间,关闭浏览器或服务器不会导致饼干被破坏。生存时间到达时,饼干会自动删除。
将cookie设置在硬盘生存时间:
1介绍
它是Servlet规范中的对象。如果两个服务来自同一网站,则可以使用会话对象进行数据共享。我们用于将Session称为会话对象。
2.原理
用户请求OneServlet,OneServlet创建了与当前用户相关的会话对象存储数据。执行并将会话保存到HTTP服务器的内存中。
然后,用户可以通过同一浏览器访问Twoservlet。twoservlet可以在HTTP Server Memory中通过Session获得由SemenerVlet提供的共享数据。
实际上,会话可以被视为服务器侧面安全。
3.如何使用
创建会话并保存共享数据
获取共享数据
4.案件
修改Oneservlet
修改两家
运行该项目,首先访问OneServlet:
再次访问Twoservlet:
查看控制台打印结果:
注意:
在同一网站中,这两个servlet被召唤到整个过程中,因为它们共享相同的请求协议软件包,因此在服务之间共享相同的请求对象。因此,可以使用此请求对象在两个服务之间实现数据共享。
此请求对象被调用。
2.如何使用
使用请求对象保存共享数据
使用请求对象获取共享数据
3.案件
修改Oneservlet
修改两家
运行该项目,使用浏览器访问OneServlet:
查看浏览器响应结果:
1介绍
过滤器是Servlet规范下的接口,该接口主要用于在调用某个资源文件之前告诉Tomcat的用户请求。
例如,如果用户想在登录网站之前检查其购物车的信息,则需要拦截用户的请求。
2.如何使用
3.案件
新的UserFilter
在项目中放置一张漂亮的照片:在Web.xml中配置UserFilter以拦截照片。
改进用户滤波器代码,并确定年龄参数是否大于18岁。
操作结果:
4.评论开发
您无需在Web.xml中配置,并将解决方案直接添加到过滤器类中:
修改UserFilter代码:
跑步效果是相同的。