一.Tomcat:
- web 服务软件,中小型的 JavaEE 服务器,仅仅反对大量的 JavaEE 标准 servlet/jsp。
- 批改端口号: 在 conf/server.xml, 也能够在 idea 中批改
-
部署 web 我的项目的办法有三种
- 间接将我的项目放到 webapps 目录下即可。
- 配置 conf/server.xml 文件
- 在 confCatalinalocalhost 创立任意名称的 xml 文件。在文件中编写 <Context docBase=”D:hello” />* 虚拟目录:xml 文件的名称
部署我的项目到 idea 中,new project,java ee。而后去配置 tomcat 的配置文件
二.Servlet:
-
实现:
- 定义一个类,实现 Servlet 接口:public class ServletDemo1 implements Servlet
- 实现接口办法
- 去 web.xml 去配置 Servlet
<!-- 配置 Servlet -->
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
-
执行原理:
- 当服务器承受到客户端浏览器的申请后,会解析申请 URL 门路,获取拜访的 Servlet 的资源门路
- 查找 web.xml 文件,是否有对应的 <url-pattern> 标签体内容。
- 如果有,则在找到对应的 <servlet-class> 全类名
- tomcat 会将字节码文件加载进内存,并且创立其对象
- 调用其办法
也能够用 Servlet3,在创立我的项目时能够抉择,
用 Servlet3 就比较简单,不必去配置 web.xml 文件,只须要注解配置, 其中 /demo 就是 urlPatterns(),和在 web.xml 配置的原理一样。
@WebServlet("/demo")
public class ser implements Servlet{
@Override
public void init(ServletConfig servletConfig) throws ServletException {System.out.println("init");
}
-
Servlet 中的生命周期办法:
-
被创立:执行 init 办法,只执行一次
- 默认状况下,第一次被拜访时,Servlet 被创立
-
能够配置执行 Servlet 的创立机会。在 <servlet> 标签下配置
1. 第一次被拜访时,创立: `<load-on-startup>` 的值为正数
- 在服务器启动时,创立:
<load-on-startup>
的值为 0 或正整数
- 在服务器启动时,创立:
- Servlet 的 init 办法,只执行一次,阐明一个 Servlet 在内存中只存在一个对象,Servlet 是 单例 的。
多个用户同时拜访时,可能存在线程平安问题。
解决:尽量不要在 Servlet 中定义成员变量。即便定义了成员变量,也不要对批改值。比方买票,定义个成员变量,他就会共享。如果同时买票,或者退票,就会呈现问题。 - 提供服务:执行 service 办法,执行屡次: 每次拜访 Servlet 时,Service 办法都会被调用一次。
-
被销毁:执行 destroy 办法,只执行一次。
Servlet 被销毁时执行。服务器敞开时,Servlet 被销毁,只有服务器失常敞开时,才会执行 destroy 办法。destroy 办法在 Servlet 被销毁之前执行,个别用于开释资源。
-