Tomcat 和Servlet

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被销毁之前执行,一般用于释放资源
  • 注意事项:
  1. Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
  2. 多个用户同时访问时,可能存在线程安全问题。
  3. 解决:尽量不要在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识别的规则)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值