关于servlet的基本了解
1:什么是servlet
什么是servlet呢? Servlet 是一个服务器的一个组件,需要依赖于服务器来运行,但是他是独立的,可以在TomCat中或者是其他的如JBoss中都是可以运行的。在我们使用的TomCat服务器中,已经内置了Servlet,因此在使用Servlet 不需要再导入Servlet的依赖,可以直接运行。
2:创建一个servlet的项目
1:首先准备好编译环境
编译器:eclipse ,idea等等。下面就以eclipse为例:
2:环境的配置
首先先去下载tomcat服务器
tomcat下载地址
http://tomcat.apache.org/download-90.cgi
注:目前tomcat10已经出来了,但是最好不要用。拿一个相对比较高的版本,使用是tomcat9这个版本。(体验满意)
下载完成后解压到电脑磁盘中。
然后就是环境的配置。
右键此电脑,选择管理,然后高级系统设置,然后选择环境变量,最后编辑系统变量
创建:CATALINA_BASE
E:\tomcat\apache-tomcat-9.0.35(这个是我存放tomcat的位置,具体位置要看你把tomcat放在哪个磁盘下的文件夹中)
在创建:CATALINA_HOME
E:\tomcat\apache-tomcat-9.0.35(两个位置是一样的)
找到path变量()
添加%CATALINA_HOME%\bin
然后打开cmd窗口模式(管理员身份进行):
输入startup,然后弹出:
然后通过访问网址:http://localhost:8080或者http://127.0.0.1:8080,能够访问到如下页面,就代表你的tomcat服务器安装配置成功
注意:可能在tomcat安装目录bin文件夹点击startup.bat出现闪退的情况,可以在这个文件夹中加入
在bin\startup.bat文件中的第一行前面加入:
SET JAVA_HOME=(JDK目录)
SET CATALINA_HOME=(解压后Tomcat的目录)
3:项目的搭建
首先要在eclipse中部署tomcat的环境(这里就自行完成吧,网上有很多的教程)
然后就开始创建属于自己一个web项目:
3:servlet继承体系
在Servlet中最顶层的Servlet 是一个Servlet 接口,该接口的实现类是GenricServlet,该类是一个抽象类,实现了Servlet 接口,并实现其中一些方法,HttpServlet 继承自GenricServlet,并且实现了service方法,并将service 方法拆分成了doget、doPost、doPut等方法。
public class Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我是doGet方法");
String name = req.getParameter("name");
String password = req.getParameter("password");
System.out.println(name+"======"+password);
//下同
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我是doPost方法");
}
}
创建一个login.html文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="login" method="get">
姓名:<input type="text" name="name" > <br>
密码:<input type="text" name="password" ><br>
<input type="submit" value="登录" >
</form>
</body>
</html>
细节
Httpservlet t继承GenriServlet,其service方法,被解析成了doGet(); ,doPost();,doPut();方法等,所以重写service方法时候,没有必要再去写doGet();,doPost();或者选择其中一种就行了。
注:HttpServletRequest继承自ServletRequest,HttpServletResponse继承ServletResponse,
HttpServlet:doGet();doPost();获取(name, password等)方法为:request.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-mapping>//配置Servlet请求的映射路径
<servlet-name>servlet</servlet-name>
<url-pattern>/login</url-pattern>//浏览器发送请求的匹配路径
</servlet-mapping>
注意 web.xml
<load-on-startup>0</load-on-startup>
进行配置,如果该参数的值大于等于0,则表示在服务器启动时,就调用init方法,servlet就会被初始化,如果为负整数,或者不提供该配置,则在第一次请求该Servlet 时调用init方法,初始化Servlet. 注意:启动配置文件在每个Servlet 的标签下配置如果多个Servlet都配置该启动项,从小到大依次进行加载初始化。即越小越先初始化。
(切记)
servlet是一个单例多线程的设计模式,每次访问都是一个独立的线程。
例如:我们自己使用的电脑的任务管理器。不管你打开了多少次任务管理器,都只是会有一个窗口;
对于servlet拆分出来的doGet();和doPost();方法的区别:
1 : doGet();&doPost();都是由service();方法拆分而来的。
2 : service可以接收任何类型的请求
3 : service方法中doGet();和doPost();方法不能同时存在
对于doGet();和doPost();方法的区别
1 : get请求的参数可见,而post请求的参数不可见
2 ; get只能传输文本类型,而post可以传输任何类型的请求
3 : get的效率比post的效率高
4 : get传输的数据有限制,4k; 而post传输的数据没有大小的限制
5 : get有缓存 post没有缓存
第一次写博客,如果写的不好还希望各位技术大佬多给意见,大家相互学习。