Tomcat和第一个servlet程序

文章介绍了Tomcat作为HTTP服务器的角色,以及如何启动Tomcat。它强调了通过创建Maven项目、引入ServletAPI依赖、构建目录结构、编写web.xml和Servlet代码,然后打包war文件并部署到Tomcat的过程。最后提到了IDEA中的Tomcat插件可以自动化打包和部署。
摘要由CSDN通过智能技术生成

Tomcat

http协议就是Http客户端和http服务器之间通信使用的协议,http客户端就是浏览器,http服务器则有很多种实现,tomcat 是java圈子中,最知名,最广泛使用的http服务器,apache最初也是一个http服务器,后来逐渐影响力逐渐越来越大,形成一个开源社区 

如何启动tomcat

打开文件管理器中tomcat目录下的bin目录

第一个给windows使用,第二个给linux和mac使用 

点击startup.bat

 显示这个表示启动成功

用127.0.0.1:8080访问一下tomcat的欢迎页面(tomact自带的一个webapp)

 tomcat必须是运行状态,8080是tomcat默认的端口号,使用tomcat最大的用途,就是把写好的网站,给部署上去,所谓的部署就是把你的代码拷贝到webapps目录中去,就是通过网络访问

通过网络访问和直接通过路径访问是不一样的,通过网络,可以跨主机访问,而通过文件路径不行

但是家用电脑 由于端口号太少,只有内网ip 要想让别人访问,需要有外网ip(买个云服务器)

基于tomcat编程 基于tomcat进行后端的开发

网站后端,http服务器,肯定是针对http协议一系列操作的 

幸运的是,tomcat已经把这些http相关的底层操作,封装好了

只需要调用tomcat给咱们提供的api即可

tomcat提供的原生的api就是Servlet,进行wab开发的api

servlet 是什么?

servlet是一种实现动态页面的技术

网页分成两类:静态页面:页面内容是不变的,只是单纯的html

动态页面:页面内容随着输入参数的不同而改变,则是html+数据

第一个Servlet程序

写一个Servlet程序,部署到tomcat上,通过浏览器访问,得到helloworld,都要有一下几步

1.创建目录2.引入依赖3.创建目录4.给web.xml写点东西4.编写代码5.打包程序6.部署工作7.验证

1.创建项目

此时要创建一个maven项目,maven是个‘工程管理’工具,有管理依赖(使用了啥第三方库,都给处理好了),打包功能,maven是独立的程序,但不需要单独下载安装,IDEA已经自带了

 

 2.引入依赖 Servlet api.jar

所写的servlet代码,要基于tomca这套api来进行的,这个api要通过第三方库的方式引入进来 ​​​​​​​

 

 3.创建目录

虽然maven已经帮我们自动的创建了一些目录,但是还不够,此处是需要使用maven开发一个web程序,还需要别的目录

1.在main目录下(和java,resources并列),创建一个webapp目录 2.在webapp下创建WEB-INF目录 3.再在WEB-INF目录下创建一个web.xml文件

 4)给web.xml写点东西进去

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
      <display-name>Archetype Created Web Application</display-name>
</web-app>

当前写的servlet程序和以往写的别的代码相比,有一个非常大的区别,没有main方法,main可视为汽车的发动机,有发动机,才能跑,如果有辆车,没有发动机,能不能有办法让跑,有办法,挂个车头,让车头拽着他跑,咱们写的servlet程序就是车厢,tomcat就是车头

把咱们写好的servlet程序扔到tomcat文件夹的webapps目录下,就相当于把车厢挂到车头后面了

tomcat如何识别,webapps目录下,哪些是需要拉着跑的车厢?哪些是普通的不需要拉着跑的目录?

就是靠目录下有个WEB-INF/web.xml

4.编写代码

在java目录下创建HelloServlet2类

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/hello")
//servlet api里提供的现成的类写sevlet代码一般都是继承这个HttpServlet的
public class HelloServlet2 extends HttpServlet {
    @Override
    //方法重写
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //父类已经有doGet方法,此处希望用子类的版本
        //super.doGet(req, resp);
        //这个只是在服务器的控制台里打印
        System.out.println("hello world");
        //是要把hello world返回到客户端,需要用以下代码
        resp.getWriter().write("hello world");

    }
}

req表示一个HTTP请求,resp表示一个HTTP响应,rep是tomcat针对请求,已经解析好了,构造好了的,resp则是 一个空对象(不是null,只是new了一个对象,里面的各种属性没设置),resp就相当于是一个输出型参数。

doGet方法不需要咱们自己手动调用,而是交给Tomcat来调用,Tomcat收到get请求 ,就会触发doGet方法 tomcat会构造好两个参数

TCP socket中读出来的字符串,按照HTTP协议解析得到的对象,和HTTP请求报文格式相对应的

doGet的效果,就是根据请求计算响应

此处的writer对象从属于resp对象的,此时进行的write操作就是往rresp的body部分进行写入,等resp对象整个都构造好了,tomcat会统一的转成HTTP响应的格式,再写socket

 

注解 :注解是Java中特殊的类,Java专门定义了一种“语法糖”来实现注解,注解的作用,针对一个类/方法进行额外的解释说明,赋予这个类、方法额外的功能

5.打包程序

把程序编译好,得到一些.class文件,再把这些.class文件打包,jar就是一种.class构成的压缩包,但是我们这里要打的是war包,jar只是一个普通的java程序,war则是tomcat专属的用来描述webapp的程序,一个wa包就是一个wabpp 

 直接双击 但是打的是jar包,我们需要是war包,所以我们要在pom.xml中修改一下​​​​​​​

 6.部署工作

把刚才打包好的war从idea打开文件所在的位置,拷贝到tomcat的webapps目录中即可

然后启动tomcat 

 7.验证

打开浏览器,输入url,访问写好的这个代码

这个url路径第一级路径hello_servlet , 这个目录就代表一个webapp,网站 第二级路径就是/hello刚才在浏览器地址栏中输入url之后,浏览器就构造了一个对应的HTTP GET请求,发给了tomcattomact就根据第一级路径,确定了具体的webapp,根据第二级路径,确定了是调用哪个类,再通过GET/POST方法确定调用HelloServlet的哪个方法(doGet,doPost)此时Tomcat就执行对应的代码,完成对应的工作。

自动打包

打包和部署程序这两件事可以使用IDEA的Tomcat插件,把Tomcat集成到IDEA中,就可以自动打包部署​​​​​​​,在插件市场下载smart Tomcat

 

 tomcat支持启动的狮虎显示指定一个特定的webapp目录,相当于是让webapp运行,idea直接调用tomcat,让tomcat加载当前项目只中的目录,这个过程其实没有打war包,也没有拷贝,此时程序还是可以正常运行,但是像之前的webapps下的比如欢迎页面就没有了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值