使用IDEA创建servlet JavaWeb 应用及使用Tomcat本地部署的实现

目录
  • 需要安装好的软件
  • 背景知识-Servlet是什么?
    • Servlet 是一种规范
    • Servlet 接口
    • JSP
    • Web 容器
  • 背景知识-JavaWeb应用的目录结构
  • 1.新建一个java项目
  • 2.将普通java项目转换成JavaWeb项目
  • 3.进行项目目录结构的设置
  • 4.引入Tomcat的jar包
  • 5.简单写一些代码用来测试
  • 6.设置Tomcat
  • 7.开启Tomcat
  • 总结

记录一下使用IDEA创建servlet并使用Tomcat本地部署的过程。

需要安装好的软件

首先IDEA社区版不支持Java EE,因此要使用Ultimate版本。

Tomcat版本是Tomcat9。Tomcat教程地址:Tomcat下载和安装(图解)

在安装好IDEA Ultimate版本和Tomcat9之后,我们还需要了解一些背景知识,以便我们更好的进行这个过程。

背景知识-Servlet是什么?

Servlet 是 Server Applet 的缩写,译为“服务器端小程序”,是一种使用 Java 语言来开发动态网站的技术。

Servlet 虽然被称作“小程序”,但是它的功能却异常强大,因为它是基于 Java 的,几乎可以使用所有的 Java API,Java 能做的事情,Servlet 也能做。

Java 是一种功能强大的通用型编程语言,可以处理 HTTP 请求,可以访问数据库,可以生成 HTML 代码,您完全可以使用原生 Java 来开发动态网站。但是,使用原生 Java 开发动态网站非常麻烦,需要自己解析 HTTP 请求的报头,需要自己分析用户的请求参数,需要自己加载数据库组件……种种原因导致使用原生 Java 开发动态网站几乎是一件不能被接受的事情。正是基于这种原因,Java 官方后来推出了 Servlet 技术,它对开发动态网站需要使用的原生 Java API 进行了封装,形成了一套新的 API,称为 Servlet API。

使用 Servlet 开发动态网站非常方便,程序员只需要集中精力处理业务逻辑,不需要再为那些基础性的、通用性的功能编写代码,这使得 Servlet 在动态网站开发领域具备了很高的实用性。

Servlet 基于 Java,可以使用几乎全部的 Java API,所以它的功能异常强大,完全可以胜任企业级开发,能够处理那些高并发、大吞吐量、业务逻辑复杂的应用场景。

您可以这样理解,Servlet 是 Sun 公司推出的一种基于 Java 的动态网站开发技术。编写 Servlet 代码需要遵循 Java 语法,一个 Servlet 程序其实就是一个按照 Servlet 规范编写的 Java 类。Servlet 程序需要先编译成字节码文件(.class文件),然后再部署到服务器运行。

Servlet 是一种规范

严格来说,Servlet 只是一套 Java Web 开发的规范,或者说是一套 Java Web 开发的技术标准。只有规范并不能做任何事情,必须要有人去实现它。所谓实现 Servlet 规范,就是真正编写代码去实现 Servlet 规范提到的各种功能,包括类、方法、属性等。

Servlet 规范是开放的,除了 Sun 公司,其它公司也可以实现 Servlet 规范,目前常见的实现了 Servlet 规范的产品包括 Tomcat、Weblogic、Jetty、Jboss、WebSphere 等,它们都被称为“Servlet 容器”。Servlet 容器用来管理程序员编写的 Servlet 类。

Servlet 接口

所有的 Servlet 功能都是通过一个名为Servlet的接口(Interface)向外暴露的,编写 Servlet 代码,可以从实现 Servlet 接口开始,就像下面这样:

public class ServletDemo implements Servlet { //TODO:}

直接实现 Servlet 接口比较麻烦,需要实现很多方法,所以 Servlet 规范又提供了两个抽象类,分别是 GenericServlet 类和 HttpServlet 类,它们都实现了 Servlet 接口的很多常用功能。和 GenericServlet 类相比,HttpServlet 类更加方便,所以实际开发中一般都继承自 HttpServlet 类。

JSP

Servlet 是第一代 Java Web 开发技术,它将 HTML 代码以字符串的形式向外输出,编写 HTML 文档就是在拼接字符串,非常麻烦,所以 Java 官方又推出了第二代 Web 开发技术——JSP。

JSP 才是现代化的 Web 开发技术,它允许 HTML 代码和 JSP 代码分离,让程序员能够在 HTML 文档中直接嵌入 JSP 代码。

现在没有人直接使用 Servlet 开发动态网站,大家都转向了 JSP 阵营。但是 JSP 依赖于 Servlet,用户访问 JSP 页面时,JSP 代码会被翻译成 Servlet 代码,最终,HTML 代码还是以字符串的形式向外输出的。您看,JSP 只是在 Servlet 的基础上做了进一步封装。

JSP 代码可以调用 Servlet 类,程序员可以将部分功能在 Servlet 中实现,然后在 JSP 中调用即可。

总之,Servlet 是 JSP 的基础,Servlet 虽然不直接面向用户,但是它依然是 JSP 的后台支撑,想玩转 JSP,必须先玩转 Servlet。

学习顺序:

  • 学习 Servlet 的正确顺序是:Java --> Servlet。
  • 学习 JSP 的正确顺序是:Java --> Servlet --> JSP。

Web 容器

我们知道,Servlet 是基于 Java 语言的,运行 Servlet 必然少不了 JRE 的支持,它负责解析和执行字节码文件(.class文件)。然而 JRE 只包含了 Java 虚拟机(JVM)、Java 核心类库和一些辅助性性文件,它并不支持 Servlet 规范。要想运行 Servlet 代码,还需要一种额外的部件,该部件必须支持 Servlet 规范,实现了 Servlet 接口和一些基础类,这种部件就是 Servlet 容器。

Servlet 容器就是 Servlet 代码的运行环境(运行时),它除了实现 Servlet 规范定义的各种接口和类,为 Servlet 的运行提供底层支持,还需要管理由用户编写的 Servlet 类,比如实例化类(创建对象)、调用方法、销毁类等。

Servlet 中的容器和生活中的容器是类似的概念:生活中容器用来装水、装粮食,Servlet 中的容器用来装类,装对象。

读者可能会提出疑问,我们自己编写的 Servlet 类为什么需要 Servlet 容器来管理呢?这是因为我们编写的 Servlet 类没有 main() 函数,不能独立运行,只能作为一个模块被载入到 Servlet 容器,然后由 Servlet 容器来实例化,并调用其中的方法。

一个动态页面对应一个 Servlet 类,开发一个动态页面就是编写一个 Servlet 类,当用户请求到达时,Servlet 容器会根据配置文件(web.xml)来决定调用哪个类。

下图演示了 Servlet 容器在整个 HTTP 请求流程中的位置:

您看,Web 服务器是整个动态网站的“大门”,用户的 HTTP 请求首先到达 Web 服务器,Web 服务器判断该请求是静态资源还是动态资源:如果是静态资源就直接返回,此时相当于用户下载了一个服务器上的文件;如果是动态资源将无法处理,必须将该请求转发给 Servlet 容器。

Servlet 容器接收到请求以后,会根据配置文件(web.xml)找到对应的 Servlet 类,将它加载并实例化,然后调用其中的方法来处理用户请求;处理结束后,Servlet 容器将处理结果再转交给 Web 服务器,由 Web 服务器将处理结果进行封装,以 HTTP 响应的形式发送给最终的用户。

常用的 Web 容器有 Tomcat、Jboss、Jetty、WebLogic 等,其中 Tomcat 由 Java 官方提供,是初学者最常使用的。

为了简化部署流程,Web 容器往往也会自带 Web 服务器模块,提供基本的 HTTP 服务,所以您可以不用再安装 Apache、IIS、Nginx 等传统意义上的服务器,只需要安装一款 Web 容器,就能部署 Servlet 网站了。正是由于这个原因,有的教材将 Tomcat 称为 Web 容器,有的教材又将 Tomcat 称为 Web 服务器,两者的概念已经非常模糊了。

将 Web 容器当做服务器使用后,上面的流程图就变成了下面的样子:

注意,Servlet 容器自带的 Web 服务器模块虽然没有传统的 Web 服务器强大,但是也足以应付大部分开发场景,对初学者来说是足够的。当然,您也可以将传统的 Web 服务器和 Servlet 容器组合起来,两者分工协作,各司其职,共同完成 HTTP 请求。

总结

Servlet 容器就是 Servlet 程序的运行环境,它主要包含以下几个功能:

  • 实现 Servlet 规范定义的各种接口和类,为 Servlet 的运行提供底层支持;
  • 管理用户编写的 Servlet 类,以及实例化以后的对象;
  • 提供 HTTP 服务,相当于一个简化的服务器。

背景知识-JavaWeb应用的目录结构

JavaWeb 应用由一组 Servlet/JSP、HTML 文件、相关 Java 类、以及其他的资源组成,它可以在由各种供应商提供的 Servlet 容器中运行。由 JavaWeb 应用的定义可知, Servlet 是 JavaWeb 应用的一个组件。

为了让 Servlet 容器顺利地找到 JavaWeb 应用的各个组件,Servlet 规范规定,JavaWeb 应用必须采用固定的目录结构,即每种组件在 JavaWeb 应用中都有固定的存放目录。

以 Tomcat 为例,通常将 JavaWeb 应用存放到 Tomcat 的 webapps 目录下。在 webapps 下,每一个子目录都是一个独立的 Web 应用,子目录的名字就是 Web 应用的名字,也被称为 Web 应用的上下文根。用户可以通过这个上下文根来访问 JavaWeb 应用中的资源。

webapps 的目录结构如下图。

下表中对 webapps 下各个目录进行了介绍。

目录 描述 是否必需
\servletDemo Web 应用的根目录,属于该 Web 应用的所有资源都存放在这个目录下。
\servletDemo\WEB-INF 存放 web.xml、lib 目录以及 classes 目录等。
\servletDemo\WEB-INF\classes 存放各种 .class 文件或者包含 .class 文件的目录,Servlet 类的 .class 文件也存放在此。
\servletDemo\WEB-INF\lib 存放应用所需的各种 jar 包,例如 JDBC 驱动程序的 jar 包。
\servletDemo\WEB-INF\web.xml web.xml 中包含应用程序的配置和部署信息。

下面我们一步一步开始这个过程:

1.新建一个java项目

先看一下默认建好的java项目的目录结构:

2.将普通java项目转换成JavaWeb项目

通过背景知识JavaWeb应用的目录结构,我们可以知道普通Java项目的目录结构和JavaWeb项目的目录结构差别是很大的,因此我们需要将普通项目转成JavaWeb项目。

在项目名上右键,选择 Add Framework Support

勾选Web Application

此时,我们可以看到项目的目录结构变成了如下所示情况

可以看到,和之前JavaWeb应用的目录结构已经差不多了,但是在目录WEB-INF下,还缺少两个目录classes和lib,我们自己新建一下这两个目录即可。

新建好之后,项目目录结构如下图所示:

3.进行项目目录结构的设置

我们知道JavaWeb应用的目录结构中:

\servletDemo\WEB-INF\classes目录存放各种 .class 文件或者包含 .class 文件的目录,Servlet 类的 .class 文件也存放在此。

\servletDemo\WEB-INF\lib目录存放应用所需的各种 jar 包,例如 JDBC 驱动程序的 jar 包。

因此我们要对编译生成的字节码文件的路径进行一下更改。

点击File-Project Structure

将Modules中的Paths改成你项目中的classes目录

继续,在Libraries中添加lib目录

选择 Jar Directory

4.引入Tomcat的jar包

此时我们想要新建一个servlet是新建不了的,因为JRE并没有包含这个包,这个包在Tomcat中存在,因此我们需要将这个包添加进来。

右键项目名,选择Open Module Settings

添加Tomcat安装目录下的servlet-api.jar包。

此时,我们新建文件即可发现servlet选项了!

设置类名和包名

5.简单写一些代码用来测试

此时我的Servlet.java文件内容如下:

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "Servlet", value = "/Servlet")
public class Servlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //使用PrintWriter.write()方法向前台页面输出内容
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.write("good good study, learn to change");
        writer.close();
    }
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //使用PrintWriter.write()方法gaifang向前台页面输出内容
        PrintWriter writer = resp.getWriter();
        writer.write("good good study, learn to change");
        writer.close();
        doGet(req, resp);
    }
}

6.设置Tomcat

因为我们是需要在IDEA中启动Tomcat,并把我们的项目部署上去。因此我们需要对Tomcat进行设置。

点击菜单栏上的Run-Edit Configuration

点击加号

选择Tomcat server中的Local

配置一下Tomcat安装目录,然后系统会自动识别出Tomcat的版本。

点击切换到Deployment下,点击下面的加号,选择Artifact。

7.开启Tomcat

设置好Tomcat信息之后,菜单栏右上侧会出现如下按钮。

点击绿色小三角,运行Tomcat。

在浏览器中输入下面网址:http://localhost:8080/blog_war_exploded/Servlet

为什么是这个地址呢?

前面Tomcat设置时,我们设置了一个路径/blog_war_exploded。Servlet是我们创建的类,因此通过这个地址就可以访问到我们的网页。

一切正常的话,我们可以看到如下画面

说明我们的servlet项目已经成功部署在本地运行的Tomcat上。

总结

其实上面的一个过程,是我们将一个非常简单的Servlet项目部署到Tomcat上,只是为了让大家了解这样一个过程,这样后面只需要专注于项目的开发。

到此这篇关于使用IDEA创建servlet JavaWeb 应用及使用Tomcat本地部署的实现的文章就介绍到这了,更多相关IDEA创建servlet JavaWeb 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • IDEA2020.2.3中创建JavaWeb工程的完整步骤记录

    前言 在使用IDEA2020.2.3版本时,创建web工程遇到了一些问题,经过一番摸索之后得到解决方案. 一.新建javaweb工程 1.先创建一个java项目 2.在新建好的项目上点击右键,点Add Framework Support 3.点击导入Web Application,点击ok即可 二.配置TomCat启动项目 1.配置Tomcat (1)点击右上角的编辑配置 (2)点击+号,找到Tomcat Server 3.选择一个本地下载好的Tomcat 4.在右边的部署栏Deployment

  • JavaWeb 入门篇:创建Web项目,Idea配置tomcat

    目录 创建一个maven项目 项目结构 添加框架 在pom.xml 中添加如下依赖 配置tomcat 添加完如下图: 解决导入包问题: 启动测试: 总结 创建一个maven项目 项目结构 添加框架 在pom.xml 中添加如下依赖 dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <versi

  • Idea2020.2创建JavaWeb项目(部署Tomcat)方法详解

    Idea2020.2创建JavaWeb的方式略有改动,以下做个记录 1.创建项目不再是Java Enterprise了,而是先New 一个普通Java项目 2.创建项目后,选择Run->Edit Configuration->左上角加号->Tomcat Server(注意不是TomEE)->Local 3.点击Application右边的Configure,找到你放置的Tomcat的目录,点击OK 4.选择你运行项目调试项目的浏览器,我的电脑安装的是New Edge,你可以自行选择

  • IDEA创建Maven工程Servlet的详细教程

    IDEA创建Maven工程servlet Servlet(Servlet Applet),全称Java Servlert,用于开发动态web资源的技术.是用Java编写的服务器端程序,主要功能在于处理服务器请求. Tomcat:由Apache组织提供的一种Web服务器,提供对jsp和Servlet的支持.它是一种轻量级的javaWeb容器(服务器),也是当前应用最广的JavaWeb服务器(免费). jsp:(java server page),java提供的一门开发web网页的技术. web应用

  • 使用IDEA创建servlet JavaWeb 应用及使用Tomcat本地部署的实现

    目录 需要安装好的软件 背景知识-Servlet是什么? Servlet 是一种规范 Servlet 接口 JSP Web 容器 背景知识-JavaWeb应用的目录结构 1.新建一个java项目 2.将普通java项目转换成JavaWeb项目 3.进行项目目录结构的设置 4.引入Tomcat的jar包 5.简单写一些代码用来测试 6.设置Tomcat 7.开启Tomcat 总结 记录一下使用IDEA创建servlet并使用Tomcat本地部署的过程. 需要安装好的软件 首先IDEA社区版不支持J

  • idea中MavenWeb项目不能创建Servlet的解决方案

    问题 学习完maven后,用maven创建了一个web项目,然后在这个web项目中创建了一个java文件夹并标记这个目录为源码根目录,当我准备创建一个Servlet的时候发现没有,如下图 解决办法 1.菜单栏File中找到File-Project Structure打开 打开后如图所示: 设置好后创建servlet时发现可以创建了,如图 总结 以上所述是小编给大家介绍的idea中MavenWeb项目不能创建Servlet的解决方案,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧!

  • IntelliJ IDEA2020.2.2创建Servlet方法及404问题

    第一次用IntelliJ IDEA写java代码,之前都是用eclipse,但eclipse太老了. 下面为兄弟们奉上IntelliJ IDEA创建Servlet方法,写这个的目的也是因为在网上找了很多资料但都过时了,所以把我走过的坑和弯路直接告诉兄弟们,为大家节省点宝贵的时间. 说一下现在创建Servlet或者是web和之前的主要区别,之前是直接创建,现在是先要创建java项目 然后通过添加支持框架变成Servlet或者web项目 下面这些截图最好都看完,因为有的地方有坑,都在后面的截图里.

  • IDEA创建Servlet并配置web.xml的实现

    module与project区别 IntelliJ IDEA 中,project相当于eclipse的WorkSpace,module相当于eclipse的project: IntelliJ中一个 Project  可以包括多个  Module : Eclipse中一个 Workspace  可以包括多个  Project.  创建module 创建一个 module 选择Java项目 输入项目名称,选择存储空间,点击 finish 完成创建 添加框架 选中创建的module,右键选择Add F

  • 没有编辑器的环境下是如何创建Servlet(Tomcat+Java)项目的?

    简介 巨坑,有时候没有编辑器时,启动一个Servlet巨麻烦,在此做个记录 # 配置环境变量 Java修改环境变量就不演示了,下面记录的是添加servlet-api到环境变量中 1.找到tomat目录,打开tomcat目录下的lib目录,记住servlet-api.jar中的路径 2.添加系统环境变量,注意classpath小写(有一次我写大写servlet怎么都启动不起来,emmm) classpath 创建web目录 找到tomat目录下的webapps文件,此目录为tomcat的web项目

  • JavaWeb开发之【Tomcat 环境配置】MyEclipse+IDEA配置教程

    MyEclipse配置 IDEA配置Tomcat 环境 IDEA:2020.2 Tomcat:apache-tomcat-9.0.38 创建Web项目 Q1:Tomcat启动输出乱码 Q2:Servlet中使用 System.out,Tomcat控制台输出乱码 一:创建Web项目 1> 创建普通项目,添加框架支持 2> 为项目配置Tomcat 3> 部署项目到Tomcat 4> 手动添加依赖包 二:Tomcat启动输出乱码 -Dfile.encoding=UTF-8 三:Servl

  • 浅谈JavaWeb中的web.xml配置部署描述符文件

    1. 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码. DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义). 所有部署描述符文件的顶层(根)元素为web-app.请注意,XML元素不像HTML,他们是大小写敏感的.因此,web-App和WEB-APP

  • 使用IDEA创建Web项目并发布到tomcat的操作方法

    Web开发 1.web开发概述 •学习web开发,需要先安装一台web服务器,将开发好的web项目部署在web服务器中供外界访问. WEB服务器有很多,流行的WEB服务器有Tomcat. WebSphere .WebLogic.Jboss等. 在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器: Apache 的Tomcat,该服务器支持全部JSP以及Servlet规范. Tomcat安装配置 Tomcat官方站点:http://tomcat.apache.org 获取Tom

  • Docker创建一个mysql容器并保存为本地镜像

    查找docker hub上的镜像 [root@wls12c ~]$ docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relati... 2903 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Crea... 190 [OK] centurylink/mysql

  • IDEA运行导入的javaweb项目tomcat正常,但是运行失败404问题

    首先我这个项目能在eclipse中运行,可能eclipse对于这种web项目更好配置吧,直接导入,然后在wind中server run运行环境中配置下tomcat,选择好对应的jdk版本即可.但是idea配置有点不一样啊,具体导入web项目不仔细说了. 说下我这个错,tomcat是正常的吧??但是运行失败404 首先,我检查了项目配置是否是直接访问不需要项目名, 这好像对的吧????? 最后又仔细看了下,发现 这生成了个web莫名其妙,原来是一般来说导入idea本身创建的javaweb项目并启动

随机推荐