温馨提示:本文阅读需要4分钟,建议收藏!
你认识servlet吗?
嗯?不认识!
好!今天就让你认识认识!
什么是Servlet?
Servlet 全称 Java Servlet,是用 java 编写的服务端程序。Servlet 对 Java EE 服务器的功能进行扩充。Servlet 扩展了 Web 服务器,是一种非常安全的、可移植的、易于使用的 Web组件。Servlet 也是一种动态加载的模块,为向 Web 服务器的资源请求提供服务。 Servlet完全运行在服务器端的 Java 虚拟机上,一般将后者称为 Servlet 容器。
总结一下:
Servlet其实就是java程序(Java类)。
该Java程序(Java类) 要遵循servlet开发规范。
Servlet是运行在服务端。
Servlet功能强大,几乎可以完成网站所有的功能。
是学习jsp的基础。
嗯!理论部分就这样了
现在进入娜姐最喜欢的环节!
自己动手写一个 servlet
先来给自己配置一个用户使我们可以进入 Tomcat 的管理页面
打开我们的Tomcat所在的文件夹找到conf目录下的tomcat-users.xml文件打开它!
在文件的底部有这样一段内容
我们参照这段内容来配置我们的用户名
别问我问什么不注册一个用户名
你会被打的!真的!
现在可以登录 Tomcat 了
点击登录
这样就进入了我们的管理界面了
我们可以看到这个管理界面的项目名和我们 tomcat 中 webapps里面的文件是一样的
注意:
最后是我们的账号密码 admin
记得保存修改,启动 tomcat
Servlet-api的地址:
http://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html
这边可以看到 servlet 的方法
伙伴们可以自己去看一下这个 api !
现在我们来写一个servlet可以输出Hello World以及显示当前时间!
步骤如下:
1.在webapps下建立一个 web 应用web1。
2.在web1下,建立WEB-INF->web.xml,及lib、classes目录。
3.web.xml可以从ROOT/WEB-INF/web.xml拷贝
4.在classes目录下开发MyServlet.java。
对照 servlet.api
5.把servlet-api.jar加入到classpath。
6.编译MyServlet.java
这就表示编译通过了!
不知道 javac -d 的
看这里
7.根据servlet规范,我们还需要部署该servlet
一半代码,一半注释。写的够详细了吧!
8.启动Tomcat,测试该servlet。
9, 分析一下可能出现的错误:
(1)MyServlet
名字不一样 (启动tomcat错误)
(2) com.ln.MyServlet
写成 MyServlet.java,会报告500
(3) 资源名自己写错
http://localhost:8088/ web /错误的资源url-pattern 404 错误
注:以上的写的 servlet 是直接继承 servlet 接口,实际开发中,90%以上都是继承httpServlet。
动态页面的特点?
1.动态页面实际上并不是存储在服务器上独立的网页文件。只有当用户发出请求时,服务器才动态组装并返回一个完整的网页;
2.动态页面的内容往往存放在数据库中,根据用户发出的不同请求而提供个性化的网页内容;
3.由于动态页面只是一个显示模板,其显示内容存放在数据库中,没有存在页面上,因此能大大降低网站维护的工作量。
servlet的工作原理
Servlet 生命周期完全由 Servlet 容器掌控,客户端必须通过 Servlet 容器才能请求Servlet,不能像 Java SE 那样用 new 关键字创建 Servlet 对象,也不能直接调用Servlet 方法。
Servlet 运行在 Servlet 容器中,其生命周期由容器来管理。Servlet 的生命周期通过javax.servlet.Servlet 接口中的 init()、service() 和destroy() 方法来表示。
Servlet 的生命周期包含如下四个阶段。
加载和实例化
Servlet 容器负责加载和实例化Servlet。可以设置为当 Servlet 容器启动时,创建 Servlet 实例;如果没有这样设置,那么在容器接收这个 Servlet 第一个请求时,创建 Servlet 实例。Servlet 容器通过类加载器加载 Servlet 类,然后,调用的是 Servlet 的默认构造函数(即不带参数的构造函数,构造函数也称为构造方法或构造器)来创建 Servlet 的实例。但要注意,用不着去编写 Servlet 类的构造函数,使用编译器提供的默认构造函数即可。
初始化
Servlet 实例化之后,容器会调用 Servlet 的 init() 方法初始化这个对象。初始化的目的是为了让 Servlet 对象在处理客户端请求前完成一些初始化的工作,如获取数据库连接和配置信息等等。每一个 Servlet 的 init() 方法只能调用一次,并且必须在容器调用 service() 方法之前完成。
处理请求(服务)
Servlet 容器调用 Servlet 的 service() 方法处理请求。在 service() 方法中,Servlet 实例通过 request 对象获取客户端的相关信息和请求信息,在处理请求进行后,调用 response 对象的方法设置响应信息。处理请求是 Servlet 生命中花费大部分时间做的工作,每个请求都在独立的线程中运行。根据不同请求,service() 方法去调用对应方法,如 doGet()、doPost() 等。
服务终止
Servlet 容器在移除 Servlet 实例之前,会调用实例的 destroy() 方法,以便该实例有机会释放所使用的资源。服务终止发生在当需要释放内存或者容器关闭时,在 destroy() 方法调用之后,容器会释放该 Servlet 实例,以便垃圾收集器进行回收。与 init() 方法一样,destroy() 方法也只能调用一次。
好嘞!今天就分享这些了!
再见!
有任何问题都可以在文章末留言,娜姐都看着的呢!
领取专属 10元无门槛券
私享最新 技术干货