工作之后,发现很多基础的东西掌握的是真的不够,而且还是模糊的状态,所以准备从头再学一遍,就从servlet开始,都不敢说自己是工作过的人,技术真的是不忍直视,哈哈,开启我的奋斗之旅,应该为时不晚。
- Servlet概述
1.1 what
servlet是javaweb三大组件之一,是动态资源,是运行在 Web 服务器或应用服务器上的程序,是一个容器
1.2 advantage(优势)
- 性能更好(单列,速度高)
- 是独立与平台的
- 是可信的
- Java类库中的所有功能对servlet来说都是可用的。
1.3 作用
- 接收请求数据
- 处理请求
- 完成响应
1.4 环境配置
- 4.1 配置Tomcat
Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户
请参考:https://www.runoob.com/jsp/eclipse-jsp.html
1.4.2 安装jdk并配置环境变量
请参考:https://www.runoob.com/java/java-environment-setup.html
1.4.3 Servlet与Tomcat关系
①:Tomcat将http请求文本接收并解析,然后封装成HttpServlet类型的request对象,所有的Http头数据都可以通过request对象调用对应的方法得到。
②:Tomcat同时要响应的信息封装为HttpservletRequest类型的respose对象,通过设置response属性可以控制要输出到浏览器的内容,然后将response交给Tomcat,Tomcat就会将其变成响应文本发送给浏览器。
Java servlet api 是servlet容器(Tomcat)和servlet之间的接口,它定义了servlet的各种方法,还定义了servlet容器传送给servlet的对象类,最重要的就是servletResponse和servletRequest,我们在编写servlet要按照其规范进行操作
1.5 创建servlet实列(三种方式)
- 5.1 实现servlet接口
我们需要实现接口里的方法。Servlet 类提供了五个方法,其中三个生命周期方法和两个普通方法
1.5.2 继承GenericServlet
它实现了 Servlet 接口除了 service 的方法,很少用,GenericServlet 是一个抽象类,现了 Servlet 接口,并且对其中的 init() 和 destroy() 和 service() 提供了默认实现。如果继承这个类的话,我们必须重写 service() 方法来对处理请求。在 GenericServlet 中,主要完成了以下任务:
1. 将 init() 中的 ServletConfig 赋给一个类级变量,可以由 getServletConfig 获得;
2. 为 Servlet 所有方法提供默认实现;
3. 可以直接调用 ServletConfig 中的方法;
1.5.3 继承httpServlet类
HttpServlet 中对原始的 Servlet 中的方法都进行了默认的操作,不需要显式的销毁初始化以及 service(),在 HttpServlet 中,自定义了一个新的 service() 方法,其中通过 getMethod() 方法判断请求的类型,从而调用 doGet() 或者 doPost() 处理 get,post 请求,使用者只需要继承 HttpServlet,然后重写 doPost() 或者 doGet() 方法处理请求即可。我们一般都使用继承 HttpServlet 的方式来定义一个 servlet。
1.5.4 生命周期
* servlet有3个生命周期方法,2个普通方法。
- void init()一次创建,永久使用,第一次请求的时候创建,所以第一次请求有点慢,在web.xml中把这个servlet的load-on-startup设为1就可以了。服务器启动的时候,会先执行这段代码的。
- void service()每次请求的时候调用,用来处理客户端请求
*重写doget(),获取一个未指定method的html表单
*重写dopost() 获取一个特别指定method为post的表单
3.void destroy()销毁,最后由jvm的垃圾回收机制回收
4.两个普通方法
1.getServletInfo()
2.getServletConfig()
* Web服务器在与客户端交互时Servlet的工作过程是:
1. 在客户端对web服务器发出请求
2. web服务器接收到请求后将其发送给Servlet
3. Servlet容器为此产生一个实例对象并调用ServletAPI中相应的方法来对客户端HTTP请求进行处理,然后将处理的响应结果返回给WEB服务器.
4. web服务器将从Servlet实例对象中收到的响应结构发送回客户端.
* web.xml配置及过程
- 默认情况下,Servlet 应用程序位于路径 <Tomcat-installation-directory>/webapps/ROOT 下,且类文件放在 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 中。
- 如果您有一个完全合格的类名称 com.zyz.servlet.Servlet01,那么这个 Servlet 类必须位于 WEB-INF/classes/com/zyz/servlet/ Servlet01.class 中。
- 现在,让我们把 Servlet01.class 复制到 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 中,并在位于 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/ 的 web.xml 文件中创建以下条目:
- 我们通过浏览器输入http://localhost:8080/servlet/servlet01.系统就会匹配web.xml中的路径,。
- 匹配之后就会去找对应 的name
- 根据对应的name值找到这个类,去实现类中写的方法
访问成功后的显示,就去执行类中的方法
在方法Tomcat7中我们可以通过注解的方式来创建servlet,原理是一样的,更加方便
我们可以新建一个Dynamic Web Project项目
因为我已经有过相同的包名,所以会包已经存在的错误。还有注意类名首字母要大写。
访问路径:
这两个方法都可以,原理是一样的,看个人习惯了
这是今天学习的内容,感觉好简单,但是真的让自己叙述,还真是不太能对答如流,学的比较浅显,还是需要去挖掘更深的知识。继续学习,继续分享,继续奋斗。