关于servlet的基本了解
1:什么是servlet
什么是servlet呢?Servlet是一个服务器的一个组件,需要依赖于服务器来运行,但是他是独立的,可以在TomCat中或者是其他的如JBoss中都是可以运行的。在我们使用的TomCat服务器中,已经内置了Servlet,因此在使用Servlet不需要再导入Servlet的依赖,可以直接运行。
2:创建一个servlet的项目
1:首先准备好编译环境
编译器:eclise,idea等等。下面就以eclise为例:
2:环境的配置
首先先去下载tomcat服务器
tomcat下载地址
htt:tomcat.aache.orgdownload-90.cgi
注:目前tomcat10已经出来了,但是最好不要用。拿一个相对比较高的版本,使用是tomcat9这个版本。(体验满意)
下载完成后解压到电脑磁盘中。然后就是环境的配置。
右键此电脑,选择管理,然后高级系统设置,然后选择环境变量,最后编辑系统变量
创建:CATALINA_BASE
E:tomcataache-tomcat-9.0.35(这个是我存放tomcat的位置,具体位置要看你把tomcat放在哪个磁盘下的文件夹中)
在创建:CATALINA_HOME
E:tomcataache-tomcat-9.0.35(两个位置是一样的)
找到ath变量()
添加%CATALINA_HOME%bin
然后打开cmd窗口模式(管理员身份进行):
输入startu,然后弹出:然后通过访问网址:htt:localhost:8080或者htt:127.0.0.1:8080,能够访问到如下页面,就代表你的tomcat服务器安装配置成功注意:可能在tomcat安装目录bin文件夹点击startu.bat出现闪退的情况,可以在这个文件夹中加入
在binstartu.bat文件中的第一行前面加入:
SETJAVA_HOME=(JDK目录)
SETCATALINA_HOME=(解压后Tomcat的目录)
3:项目的搭建
首先要在eclise中部署tomcat的环境(这里就自行完成吧,网上有很多的教程)
然后就开始创建属于自己一个web项目:3:servlet继承体系
在Servlet中最顶层的Servlet是一个Servlet接口,该接口的实现类是GenricServlet,该类是一个抽象类,实现了Servlet接口,并实现其中一些方法,HttServlet继承自GenricServlet,并且实现了service方法,并将service方法拆分成了doget、doPost、doPut等方法。
ublicclassServletextendsHttServlet{
rivatestaticfinallongserialVersionUID=1L;
@Override
rotectedvoiddoGet(HttServletRequestq,HttServletResonses)throwsServletExcetion,IOExcetion{
System.out.rintln("我是doGet方法");
Stringname=q.getParameter("name");
Stringassword=q.getParameter("assword");
System.out.rintln(name+"======"+assword);
下同
}
@Override
rotectedvoiddoPost(HttServletRequestq,HttServletResonses)throwsServletExcetion,IOExcetion{
System.out.rintln("我是doPost方法");
}
}创建一个login.html文件:
<!DOCTYPEhtml>
<html>
<head>
<metacharset="UTF-8">
<title>Inserttitlehe<title>
<head>
<body>
<formaction="login"method="get">
姓名:<inuttye="text"name="name"><>
密码:<inuttye="text"name="assword"><>
<inuttye="submit"value="登录">
<form><body>
<html>细节
Httservlett继承GenriServlet,其service方法,被解析成了doGet();,doPost();,doPut();方法等,所以重写service方法时候,没有必要再去写doGet();,doPost();或者选择其中一种就行了。
注:HttServletRequest继承自ServletRequest,HttServletResonse继承ServletResonse,
HttServlet:doGet();doPost();获取(name,assword等)方法为:quest.getParameter();
4:servlet的生命周期
什么是servlet的生命周期呢?servlet生命周期是指从servlet启动服务到这个服务结束被销毁。称为整个servlet整个生命周期
方法:
init():初始化服务,在整个servlet生命周期就只是运行一次
service():运行期,提供服务,运行service方法或者从service分解出来的方法(doGet();DoPost();等),接受servlet请求,且每次请求都会执行;
destroy():服务器销毁整个servlet生命周期结束
5:web.xml配置
<servlet><servlet-name>servlet<servlet-name>给servlet起一个名字
<servlet-class>com.ujiuye.Servlet.Servlet<servlet-class>项目的全类名
<servlet>
<servlet-maing>配置Servlet请求的映射路径
<servlet-name>servlet<servlet-name>
<url-attern>login<url-attern>浏览器发送请求的匹配路径
<servlet-maing>注意web.xml
<load-on-startu>0<load-on-startu>进行配置,如果该参数的值大于等于0,则表示在服务器启动时,就调用init方法,servlet就会被初始化,如果为负整数,或者不提供该配置,则在第一次请求该Servlet时调用init方法,初始化Servlet.注意:启动配置文件在每个Servlet的标签下配置如果多个Servlet都配置该启动项,从小到大依次进行加载初始化。即越小越先初始化。
(切记)
servlet是一个单例多线程的设计模式,每次访问都是一个独立的线程。
例如:我们自己使用的电脑的任务管理器。不管你打开了多少次任务管理器,都只是会有一个窗口;对于servlet拆分出来的doGet();和doPost();方法的区别:
1:doGet();&am;doPost();都是由service();方法拆分而来的。
2:service可以接收任何类型的请求
3:service方法中doGet();和doPost();方法不能同时存在
对于doGet();和doPost();方法的区别
1:get请求的参数可见,而ost请求的参数不可见
2;get只能传输文本类型,而ost可以传输任何类型的请求
3:get的效率比ost的效率高
4:get传输的数据有限制,4k;而ost传输的数据没有大小的限制
5:get有缓存ost没有缓存