idea纯手动从零搭建JavaWeb

这篇blog主要教我们怎么从零搭建一个可以运行的javaweb的工程,本文的配置主要使用web.xml文件配置,使用注释配饰tomcat会有一点点点不同,这篇文章对那些接触过一点javaweb开发的人有可能友好些。原创不易,请勿装载。

首先说一下为什么要用纯手动的搭建方式,现在idea在搭建项目的时候会帮我们做很多事,甚至一键搭建项目。但这样导致的结果就是我们有可能不知道项目中某些文件的作用,对工程整体没有较好的把控。用纯手动的方式一反面让我们知道项目中文件的作用,另一方面,可以让我们对工程及idea各个按键模块有一些把控。下面开始把。

首先创建一个原生的Java项目:

创建成功后,我们看到是没有任何配置的完全普通的java工程(.ideal和.iml文件为idea自动生成的可不用理睬)。我们知道用tomcat作为容器的时候是需要web.xml文件。我们可以直接像我一样在tom的目录下直接创建web.xml文件,也可以为了好看在tom目录下创建一个WEB-INF的子目录,在其下面添加web.xml位置是没影响的,不过等下配置web.xml位置的时候要做相应的修改。

我为了方便直接在tom下面添加了web文件。

我们现在不妨开发一个servlet,如图

我们看到有些类是没有依赖到,所以导致问题。

注意:配置重头戏开始了:

右击tom项目->open module setting

这个界面几乎就是我们工程所以要配置的页面了首先我突出说明三个模块的功能:

1.Modules这个模块在我们创建项目的时候就会自动添加一个modules每个modules有自己的依赖,自己的配置文件。

我们刚才说了,因为我们缺少servlet的依赖,所以有些类找不到,所以就应该在这个地方进行配置,他的右边有个dependencies,点击他点击加号就可以添加这个依赖到该模块中来了。我们添加依赖进来后发现这个位置有个scope的按钮,因为servlet-api在tomcat会提供我们开发时期会是支持provided,如果有兴趣你们可以自行了解一下为什么这样设置。添加完点击应用。我们发现就不红了。

现在解决了依赖问题,也写好了servlet,那就将web文件配置好,看看可以运行不。web.xml配置如下:

<?xml version="1.0" encoding="utf-8" ?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>first</servlet-name>
        <servlet-class>com.miles.tomcat.FirstServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>first</servlet-name>
        <url-pattern>/first</url-pattern>
    </servlet-mapping>
</web-app>

现在我们代码部分就算完成了,因为代码运行在tomcat上,我们还需要配置tomcat。点击右上角的

添加一个本地tomcat。点击之后我们发现下边有个报错,这就涉及到我们三面三个模块的第二个了,但是我们姑且先直接点fix,配置好tomcat先。

一直点下去就配置好tomcat了。现在可以点击了,茂盛可以了,那我们点击启动看一下会发生什么。

Connected to server
[2020-03-10 04:32:41,794] Artifact unnamed: Artifact is being deployed, please wait...
[2020-03-10 04:32:41,857] Artifact unnamed: Error during artifact deployment. See server log for details.
[2020-03-10 04:32:41,861] Artifact unnamed: com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException: F:\JavaProject\tom\out\artifacts\unnamed not found for the web module

我们可以看到,他说找不到web modules。这个问题其实就出在刚才点击fix,生成artifact的时候。我们可以打开项目设置,查看我们的artifact是什么样的。

2.Artifacts其实就是我们项目的打包。为什么之前tomcat一定要我们添加artifact呢?其实就是让我们将我们的工程加入到tomcat中去。现在让我们了解一下我们刚才明明添加了artifact,现在为啥还说我们缺少artifact。我们可以看到,红圈圈有两侧,右侧是我们可以打包的项目,左侧其实就是我们打包后所呈现的样子,我们可以看到,左侧什么都没有,这也就是为什么idea会抱怨说没有web module了,我们现在双击右侧的compile output就可以添加其进入包理。我们可以发现,其自动为我们添加了一个WEB-INF文件夹。这是应为我们在选择artifact的时候选择了web类型的包。所以会自动帮我们打包成war包的标准形式。细心的人可以会发现web类型的包有两个,一个是带expoded的一个是不带的,他们的区别在于等下编译出来的时候一个是war包的形式,一个就是展开的形式。添加好后我们继续往下走。由于我们修改了artifact的结构,所以我们需要去tomcat哪里移除之前的artifact,重新添加一次。完成之后我们再启动一次tomcat。

我们可以看到,tomcat已经启动成功了。那我们可以访问了吗?我们可以用postman测试一下。在测试之前我提一下访问的地址。我们的servlet被映射成/first。那我们是直接访问localhost:8080/first吗?答案是不是。我们在tomcat部署项目的时候可以看到有个context,我们真正访问的地址应该加上他localhost:8080/unnamed/first。

现在我们访问一下。我们会发现根本访问不到,出了404很可能是路径问题,说到路径我们就要提到web.xml文件。这个目录其实就是我们项目打包后的文件,因为我们使用的是web exploded形式,所以是展开的,如果用另外一个,我们会发现他就是一个war包。通过这个文件我们看线根本没有web.xml文件。那肯定是刚才配置artifact出错了。我们可以回到刚才配置artifact那里,发现其实根本没有web.xml的文件然你添加到包中去。那么现在就要引入我们第三个模块了

3Facet

这个模块有可能让人疑惑他是干啥的,他其实提供了一种描述功能,他描述了一个模块使用到了什么技术或者资源。我们的项目要做的是一个web项目,所以就需要创建一个facet来描述它的功能,我们添加一个facet第一个我之前说路径其实就是我们的web.xml的路径,我之前说web文件在哪都不要紧就是因为这个地方可以配置。我们将其选择到我们的web文件的路径。第二条红线说我们的facet资源没有被添加。我刚才说了facet是用来描述模块的功能的,它带有一些重要的配置文件(本文中为web.xml)我们需要将它添加到对应的项目中,我们点击fix可以将其添加到对应项目中。但我们现在先不点,先点apply,然后再去查看artifact就会发现这里又多了个可以添加入包里面的东西,这个其实就是我们的web.xml文件。我们双击添加,并apply。我们再去tomcat那里重新添加artifact再启动然后观察一下看。

首先启动成功。发送请求

我们发现servlet调通了。自此,整个工程搭建完毕了。

 

总结:

第一次写博客就写了这么多,内容有点多,可能会比较乱,不过多看几遍有可能让你更加的了解一个工程到底是怎么运行起来的知其然知其所以然。如果有错的地方还希望大家指出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值