Servlet入门:第一个hello world程序

目录

第一个Servlet程序

创建项目

引入依赖

创建目录

编写Servlet代码

打包代码

项目部署

验证程序

在idea内置 smart tomcat

Tomcat 与 smart tomcat 的区别


第一个Servlet程序

创建项目

引入依赖

第一步,创建项目(Maven)

第二步,引入依赖(Servlet依赖)

创建Maven项目,和引入Servlet依赖  请参考下面的博客,本文不再复述

http://t.csdn.cn/MxOak

创建目录

第三步,创建目录

首先 要创建目录配置 web.xml 文件

单击main选中,然后右键创建webapp目录(webapp目录与蓝色的Java目录同级)

然后再创建WEB-INF目录,然后再创建web.xml文件

注意这三步必须完全正确,文件布局,文件命名都要跟我一模一样

然后再配置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代码

第四步,编写Servlet代码

在java文件里创建HelloServlet类

使HelloServlet继承自HttpServlet类 (由Servlet API提供, 写Servlet代码一般都要继承这个类)

然后重写 doGet 方法,super.doGet这行代码得删掉

然后引用resp对象的getWriter()方法的  write()方法,括号内输入字符串  “hello world”

然后再写上注解    @WebServlet("/hello")

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")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          //  super.doGet(req, resp);  注释掉这行代码,不然页面会404

        resp.getWriter().write("hello world!!");
    }
}

打包代码

第五步,打包代码

此时我们的程序是不能直接独立运行的,而是必须放到Tomcat上运行(部署)

而部署的前提,是先打包  我们写的代码

对于一个规模比较大的项目,里面会包含很多 .java文件,进一步就会产生很多.class文件,因此,将这些.class文件都打包成一个压缩包再继续拷贝,比较科学。

再Java中常用的压缩包为 jar  , war  。

war 跟 jar本质上没有区别,都是打包一堆 .class文件,但是 war 包是属于Tomcat的专属格式,里面会有一些特定的目录结构和文件,比如web.xml 等等,后续 tomcat 就要识别这些内容来加载webapp,因此,我们使用的是 war 包。

在idea里 点击Maven 双击package 即可进行打包

出现 build success 就是打包成功了

打包操作,做的事情:

1.检查代码中是否存在一些依赖,依赖是否下载好了

2.对代码进行编译,生成.class文件

3.把这些.class文件以及web.xml按照一定的格式进行打包

发现现在生成的是jar包,在pom.xml文件添加<packaging>war</packaging>,在刷新maven重新打包即可

如果jdk版本不是1.8,而是更高的版本,比如像我一样是jdk18,则需要添加maven打war包的插件

    <packaging>war</packaging>
    <build>
        <!--给压缩包命名-->
        <finalName>hello_servlet</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.0</version>
            </plugin>
        </plugins>
    </build>

然后再次刷新maven,再次打包即可

项目部署

第六步,项目部署

把打包好的war包,拷贝到tomcat的webapps目录中,在重新启动tomcat

tomcat启动成功后,war包也已经被解压缩了

此时就算部署成功了

验证程序

第七步,验证程序

不是tomcat一启动,doGet的就能执行

我们写的代码是doGet,意思是遇到了Get请求,我们的代码才能够执行

但也不是任意GET请求都可以,URL也要能匹配才行

注意看浏览器的URL,此处分为了两级路径

前面的是固定路径:127.0.0.1:8080

第一级路径是webapps目录下的war包文件名, 也叫做Context Path,如图 是 hello_servlet

第二级路径是我们代码中在注解标注的路径, 也叫做Servlet Path; 即/war包名(一级路径)/注解标注的路径(二级路径).  如图 注解是 /hello

这里的war包名称为hello_servlet, 注解标注的路径是/hello; 所以综合起来, 加上前面的协议域名和端口号, URL就是http://127.0.0.1:8080/hello_servlet/hello.

总结一下, 这里有7步, 依次是, 创建Maven项目, 引入依赖, 创建webapp目录结构, 编写Servlet代码, 打包, 部署, 验证.

简化流程

在idea内置 smart tomcat

打包跟部署的流程是可以被简化的

方式是在idea里装上插件  smart tomcat

文件 -> 设置 -> 插件 (Plugins)

下载后,点击右上角的长方形框框,点击编辑配置

点击 + 号,找到smart tomcat,第一次使用请填写tomcat存放目录,

Context path  一级路径,默认是项目名。smart tomcat的好处是,此处程序员可以自定义路径昵称

确定后,点击长条框右边的绿色三角形 即可开始运行

但要将电脑上开启的Tomcat都关掉,避免端口被占用。

此处即表示 部署成功

点击下方链接,即可打开页面   但你会发现  页面404了

观察URL发现,只有一级路径,没有二级路径(二级路径就是代码的注释)

补充上二级路径,就能打开看到 hello 吊毛 (不要打我呜呜 Ծ‸Ծ)了

Tomcat 与 smart tomcat 的区别

tomcat 与 idea 上内置的 smart tomcat 是有本质区别的

smart tomcat 执行的时候没有拷贝war包,启动时我们去看tomcat的webapps目录是没有变化的,smart tomcat 是针对某个特定的webapp目录,让idea直接加载运行它,这里没有打包,拷贝,解压缩的过程。

这两种部署方式的直接区别就是: Context Path(一级路径)的不同

Tomcat 是将项目打war包,拷贝到webapps目录下,所以它的一级路径一定要是war包名

而使用smart tomcat方式部署,一级路径可以由程序员自定义,默认是项目名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值