【JavaEE】第一个servlet程序_javaee第一个程序

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

✨哈喽,大家好,我是辰柒!✨

🛰️🛰️系列专栏:【JavaEE】

✈️✈️本篇内容:如何写出第一个servlet程序!

🚀🚀代码存放仓库github:JavaEE代码!

⛵⛵作者简介:一名双非本科大三在读的Java编程小白,道阻且长,星夜启程!

前面已经学习了如何创建一个maven项目,以及如何引入依赖;那么本篇博客就来介绍如何完成一个hello world的servlet的程序这里需要七个步骤完成一个servlet程序!

目录

一、创建一个maven项目;

二、引入依赖;

三、创建目录结构;

四、编写servlet代码;

五、打包;

六、部署;

七、验证程序;


一、创建一个maven项目;

我们上篇博客已经创建了一个项目demo_maven,就使用这个项目来完成我们的hello world的编写;

二、引入依赖;

同样上篇博客也介绍了如何引入依赖;需要再代码中引入servlet api;这个api不是jdk内置的,而是第三方提供的(tomcat);借助maven即可引入;

maven中央仓库下载地址!

1、打开后在搜索栏里面输入servlet;选择第一个;

 2、点击进去之后,找到servlet 3.1.0版本;(注意这里的版本要匹配jdk8;tomcat8.5;servlet3.1)

 3、复制这里的代码到idea;

 4、配置在pom.xml中;

 三、创建目录结构;

我们可以看到maven帮助我们创建了一些目录,但是远远不够,不足以支撑咱们写一个servlet项目;所以需要咱们手动创建一些目录和文件;

1、选中main右键创建一个目录,目录名叫做webapp;因为tomcat可以同时加载多个webapp,所以tomcat的目录是带s的,咱们写的就是一个webapp,就没有s;

 2、右键webapp,新建一个目录叫做WEB-INF;

3、右键WEB-INF创建一个文件web.xml;

当然,这种命名的约定是人家规定的,也可以不这么写,但是需要改更多的配置文件,非常麻烦;

然后,我们可以给web.xml中写一点东西进去;这些常用的代码我们可以放在github上面,方便写代码的时候直接粘贴过来;博主的github在这里;需要自取哈;(可以点个star防止迷路!)

<!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代码;

1、首先在java这个目录下创建一个java类,HelloServlet;继承自HttpServlet;如果代码爆红,说明httpServlet没有被正确引入,只需要点击maven中的刷新即可!

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;

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}

解析:HttpServletRequest req代表一个http请求,HttpServletResponse resp代表http响应;当前方法中并没有代码,这里的resp是一个空的响应对象,需要给这个方法中设置一些属性;doGet方法需要做的事情就是根据请求,计算响应;

注意:一个服务器的工作流程分为三个典型步骤:

1、接收请求并解析;

2、根据请求计算响应;

3、构造响应数据,并返回给客户端;

那么tomcat已经帮我们把1、3两步给完成好了,咱们程序员需要做的事情就是第二步;也就是doGet需要做的事情;

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("hello servlet"+System.currentTimeMillis());
    }
}

解释:getWriter其实返回了一个Writer对象,此处的Writer对象不是往文件里面写;而是往http响应的body中写入数据;write()是真正用来干活的,写数据的方法;

还差一步:在整个类的上一行写入这行代码,作用就是把当前的这个 HelloServlet 这个类,和 HTTP 请求中 URL 里面路径带有 /hello 这样的请求,给关联起来;

@WebServlet("/hello")

因为tomcat可能会收到很多请求,这么多请求,咋们需要的是路径里带/hello的这种情况,才会让tomcat来调用HellloServlet 这个类;同时需要保证方法也是doGet方法;

五、打包;

刚才写的代码,我们发现是没有main方法的,那么就不能运行;如何运行?

需要把刚才的代码打包,部署到tomcat上,由tomcat来进行调用;

打包之前,需要一些准备工作;在pom.xml文件中配置以下代码;注意是和<dependencies>在同一级目录;war包算是给tomcat专门用的,这里不光包含一些.class文件,还可以包括一些配置文件,以及一些依赖的第三方jar包,html,css,js……;

    <packaging>war</packaging>
    <build>
        <finalName>hello</finalName>
    </build>

step1、点击idea右上角的maven,找到package双击;

 step2、当控制台出现build success的时候,说明打包成功;

这里的目录栏会出现一个hello.war文件;

六、部署;

即把刚才的war包拷贝到tomcat的webapps目录下;

step1、找到当前项目的目录中的hello.war文件;

step2、复制该文件到tomcat的webapps目录下;

step3、启动tomcat;

找到bin目录下的startup.bat,双击;

 七、验证程序;

在浏览器输入对应的地址http://127.0.0.1:8080/hello/hello

这里的第一个hello叫做content path;第二个hello是servlet path;(注意和自己创建的目录一致)

 运行结果;

二级路径和自己写的代码里的注解是相匹配的;

可以这样理解:一个 Tomcat 上可以同时部署多个网站;一个网站上又有多个页面;一个请求中的第一级路径,就告诉 Tomcat, 要访问的网站是哪个;第二级路径就告诉 Tomcat 要问的页面是这个网站中的哪个页面;

那么当前页面是通过Java代码生成的,和直接创建一个html文件;里面写个hello world有什么区别呢?

注意:前者的内容是可变的,根据用户不同的输入,可以得到不同的结果;后者页面的内容是固定的,是静态的,不变的;

上述七个步骤是针对一个新的项目来设计的;当当项目创建好了之后,后续只需要修改代码,前三个步骤就可以省略了;从4-7即可;重新部署的时候,不一定需要重启tomcat;

当看到tomcat中有这样的提示,表示已经重新部署了;

OK,有的小伙伴就会说每次都需要打包重新部署,感觉还是很麻烦,有没有什么自动打包部署的方法呢?

答案:还真有!我们可以通过一些第三方的工具来简化打包和部署这两步的操作;IDEA上有一个插件叫做smart tomcat就可以自动完成打包部署的操作;

下载步骤;

step1、打开idea,file->settings->plugin;在搜索栏搜索smart tomcat;

 step2、第一次使用需要配置一下;首先点击右上角红色箭头指向的地方;

 step3、点击+号,找到smart tomcat;name可以随便取;选择一下对应的版本、目录;注意这个content path路径要和URL的第一级路径保持一致;

 step4、点击右上角的这个绿色的三角,便可自动的进行打包部署;

 step5、点击三角箭头,打包部署;

!这怎么一堆红色的代码,报错了?并不是。这里的内容本身就是红色的,异常调用栈才是错误;

注意,打包部署的时候记得先把tomcat命令行给关了,然后再去点击绿色三角按钮,不然会占用端口号;导致错误;

OK,关于如何创建servlet程序以及如何使用smart tomcat插件相信大家已经很清楚了,我们下期来讲讲这里的一些报错信息,感谢您的三连支持!!!

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Java