Tomcat
- webLogic:oracle公司
- webSphere:IBM公司
- JBOSS:JBOSS公司的
- Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的。
目录说明
- bin 可执行文件
- conf 配置文件
- logs 日志信息
- webapps web项目
启动和报错
- startup.bat/ startup.sh
- 没有配置JAVA_HOME
- 端口号冲突
部署项目
- 方式一:将包含页面的文件夹直接放到webapps目录里,
然后启动tomcat,访问http://localhost:8080/文件夹/html的名字 - 方式二:修改server.xml配置 (修改标签体中的配置
- 方式三:在conf/Catalina/localhost目录下创建任意的xml文件 文件中写
- netstat -ano 查看所有的 端口号
IDEA 集成Tomcat
- Templates->Tomcat Server->Local
- 添加按钮
设置虚拟路径
- Deployment ->Application context 里面设置虚拟路径,一般为模块的名称
Servlet
- 概念:是一个接口,定义了java类被访问的规则,指的是运行在服务器软件中的一个java软件
- WEB-INF(web.xml ,classes, lib)
- tomcat服务器可以有多个项目,一个项目中可以有多个servlet
步骤
- 编写实现类,实现Servlet接口
- 修改配置文件,添加servlet的映射关系
- 访问
public class MyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("哈哈哈哈哈哈哈哈哈");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
web.xml的配置
<servlet>
<servlet-name>xiaoxiao</servlet-name>
<servlet-class>cn.itcast.web.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xiaoxiao</servlet-name>
<url-pattern>/xxoo</url-pattern>
</servlet-mapping>
通过xxoo找到 xiaoxiao ,通过xiaoxiao 找到class文件的字节码对象cn.itcast.web.MyServlet,再通过反射技术,运行service 的方法
servlet的生命周期
- 被创建:执行init方法,只执行一次
– 在标签下配置
1. 第一次被访问时,创建
<load-on-startup>的值为负数,默认的是第一次访问的时候创建
2. 在服务器启动时,创建
<load-on-startup>的值为0或正整数,随着tomcat的启动创建 - 提供服务:执行service方法,执行多次
- 被销毁:执行destroy方法,只执行一次
–Servlet被销毁时执行。服务器关闭时,Servlet被销毁
– 只有服务器正常关闭时,才会执行destroy方法。
– destroy方法在Servlet被销毁之前执行,一般用于释放资源 - 注意事项:
- Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
- 多个用户同时访问时,可能存在线程安全问题。
- 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值
注解配置servlet
@webServlet(urlpatterns="/a")
public class MyServlete implements Servlet{}
项目的部署
- 1.会把项目编译到out\production 目录下(该目录存的仅仅是src目录下编译后的文件)
- 2.把out\production 目录下的东西+web目录下的东西重新存放到out\artifacts(存的是web目录下的东西,包含web-info,classes,lib)
- 3.创建配置文件,提供虚拟访问路径->从控制台查找Using CATALINA_BASE: “C:\Users\haoyongliang.IntelliJIdea2017.3\system\tomcat_baseCode”
在我的电脑打开该目录,进入conf\Catalina\localhost目录下
总结:
- 一般涉及到全类名的时候:都用到反射
- war包会自动解压和自动删除
- service方法,是服务器接收到请求的时候,做出的动作
- url+端口号/虚拟路径(一般是项目名称)/urlpattern 才能达到让服务器响应(tomcat识别的规则)