第一个 JavaEE 应用程序

JavaEE 是 Java Web 开发当中事实上的标准,诸多框架也都是建立在 JavaEE 的 API 基础之上的。为了从头理解 Java Web 开发,我们将从一个最简单的 JavaEE Servlet 应用开始,一步一步进入 Java Web 开发的世界。

准备工作

要完成这个教程,你只需要有网络就可以了,首先下载 IntelliJ IDEA Community 版。没错,我们就是故意要使用 Community 版,尽管 Utimate 版对 JavaEE 开发的支持更好,但是更好的工具却可能让我们忽略底层的细节。Community 版对于入门来说已经足够。

然后你需要下载 JavaSE 的 JDK,也就是大家使用最多的 JDK 版本。示例使用的 1.8.0 版本。

最后你需要一个 Servlet Container,去 Tomcat 网站下载一个版本,主要要和 JDK 的版本要求相匹配。示例使用的是 Tomcat 8.5.0。

第一个 Servlet

首先创建一个工程,选择好 JDK 版本,一路 Next 就可以了。创建好工程之后,我们创建一个新的 Servlet。首先在左边的 src 上右键创建一个 package,然后在 package 上右键,创建一个 Java Class:

package com.skyline;

import javax.servlet.*;

import java.io.IOException;

import java.io.PrintWriter;

public class MyFirstServlet implements Servlet {

public void init(ServletConfig config) throws ServletException {

System.out.println("Init");

}

public void service(ServletRequest request, ServletResponse response)

throws ServletException, IOException {

System.out.println("From service");

PrintWriter out = response.getWriter();

out.println("Hello, Java Web.");

}

public void destroy() {

System.out.println("Destroy");

}

public String getServletInfo() {

return null;

}

public ServletConfig getServletConfig() {

return null;

}

}

这时候代码上会报很多错误,核心原因是 javax.servlet 这个包找不到。前面提的过 Servlet API 是包含在 JavaEE 当中的。为了方便,我们直接使用 Tomcat 附带的 servlet-api.jar 包。

在 IDEA 中打开 Library Settings(External Libraries 下面的任意一项右键 -> Open Library Settings。

加入依赖有两种办法。一种是在 Classpath 中加入 servlet-api.jar,这个 Classpath 会影响所有使用该 JDK 的工程(不只是当前工程):

另一种办法是只给当前工程添加依赖,在左侧选择 Modules,在 Dependencies 中加入所需依赖的路径:

为了避免对别的工程产生影响,推荐使用后一种方式添加依赖。

添加依赖完成之后,这时工程应该可以正常通过编译了。

部署

为了让 Servlet 跑起来,我们需要把它部署到 Tomcat 上。首先在 src 目录隔壁,创建一个 WEB-INF 目录(注意名字一定要正确),然后在里面创建一个 web.xml 文件:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

MyFirstServletName

com.skyline.MyFirstServlet

MyFirstServletName

/hello

可以看到 web.xml 的作用是告诉 Tomcat,我们想使用哪个 Servlet 来处理对应的请求。Tomcat 通过 web.xml 找到对应的 Servlet 完成请求以及响应过程。

下面是具体的部署过程。首先找到 Tomcat 的目录,其中有一个 webapps 文件夹,在里面创建一个新的 MyFirstServlet 文件夹,然后把整个 WEB-INF 文件夹拷贝过去,此时的目录结构应该是这样的:

webapps

- MyFirstServlet

- WEB-INF

- web.xml

下一步,将 IDEA 编译出的产物(默认应该在 out 文件夹中),把 package 结构已经对应的产物拷贝到 WEB-INF 中的 classes 文件夹里,完成之后的目录结构应该是这样的:

webapps

- MyFirstServlet

- WEB-INF

- classes

- com

- skyline

- MyFirstServlet.class

- web.xml

运行

完成部署工作之后,需要启动 Tomcat 服务器。找到 Tomcat 目录中的 bin 文件夹,使用 cmd 运行其中的 startup.bat。如果提示没有设置 JAVA_HOME 或 JRE_HOME,需要到环境变量中设置一下。完成设置之后,Tomcat 应该可以正常启动。

java ee 程序_第一个 JavaEE 应用程序 - JavaWeb 入门开发教程相关推荐

  1. python写一个完整的小程序_写一个python小程序

    在windows环境下进行操作 window+R 输入cmd  创建一个文件夹 mkdir pytxt 创建一个py文件 py.py  用notepad或者记事本等工具进行编辑 或 首先声明pytho ...

  2. Linux下 Qt界面程序嵌入另一个Qt界面程序_Qt应用嵌入外部进程窗口

    项目工程的实现,想要使用多个程序进行实现,在里面存在一定的调用的过程:调查的情况如下 Qt界面程序嵌入另一个Qt界面程序[Linux] Qt界面程序嵌入另一个Qt界面程序[Linux]_ptc321的 ...

  3. 候选人选票程序:设计一个候选人选票程序。假设有3个候选人,在屏幕上输入要选择的候选人姓名,有10个人进行投票,最后输出每个人的得票结果。

    候选人选票程序:设计一个候选人选票程序.假设有3个候选人,在屏幕上输入要选择的候选人姓名,有10个人进行投票,最后输出每个人的得票结果. 声明结构体类型并定义结构体变量.代码如下: struct ca ...

  4. java ee最新_从此再无 JavaEE,现在叫 JakartaEE

    各位小伙伴,你们都知道这个消息吗? Java EE 正式改名为 Jakarta EE 了. 以后小伙伴们自我介绍的时候 又多了一种方式. ("'▽'") :你是做什么的?( ̄▽ ̄) ...

  5. java ee论文_基于JavaEE的项目管理系统毕业论文.doc

    基于JavaEE的项目管理系统毕业论文 基于JavaEE的项目管理系统的设计与实现 摘 要 企业项目管理系统是为了使企业项目能够按照预定的成本.进度.质量顺利完成,而对人员.产品.过程和项目进行分析和 ...

  6. A002、java环境搭建_第一个java程序

    目录 1.内容介绍 2.软件开发概述 2.1 软件开发概念 2.2 软件开发示例 2.3 软件开发语言 2.3.1 计算机语言概述 2.3.2 计算机语言分类 2.4 小结 3.Java概述 3.1 ...

  7. Java编写学生类student程序_编写一个JAVA程序片断定义一个表示学生的类student.docx...

    编写一个JAVA程序片断 定义一个表示学生的类student,包括域"学号","班级","姓名","性别"," ...

  8. java程序员拜年代码_作为一个资深的程序员我们应该这么拜年

    作为一个资深的程序员我们应该这么拜年,瞬间高大上! C:printf("祝大家新年快乐"); C++ : cout< QBasic : Print "祝大家新年快乐 ...

  9. 精通C语言Java怎么样_作为一个优秀的程序员,真的需要精通C语言吗?

    从事嵌入式开发多年,使用C语言开发已经超过十个年头,除了C语言还用C++,java,python做过项目,程序员的优秀编程语言仅仅占据一部分,而且也不会只是针对C语言,现在很多的编程高手也不懂的C语言 ...

最新文章

  1. 详解OpenCV卷积滤波之边缘处理与锚定输出
  2. ruby gsub gsub! chomp chomp! 以及所有类似函数用法及区别
  3. 你知道面试必问的AOP吗(1),2021吊打面试官系列
  4. 云计算机玩大型游戏,云游戏实测点评:大部分都可以顺畅玩耍
  5. C++静态成员和静态成员函数
  6. LeetCode 1009. 十进制整数的反码(位运算)
  7. 经典案例获取数组里的对象是否匹配
  8. 图解Http学习第三章
  9. web安全day33:人人都要懂的LNMP--nginx的配置和文件理解
  10. 计算机二级excel经典操作题,计算机二级office经典题库
  11. 华为交换机Console口密码重置及配置
  12. Win10环境下VMware安装Mac OS虚拟机并在虚拟机中安装xcode
  13. 探索性测试的分类与测试用例
  14. linux富文本软件,CherryTree(技术人员专用富文本笔记软件)
  15. 深度学习敲门砖——神经网络
  16. 华为防火墙简介及其工作原理
  17. 前苏联切尔诺贝利辐射禁区拍摄到野生水獭吞食鱼
  18. 政务智能办体验升级、乳腺癌创新药加速研发,飞桨和文心大模型驱动应用智能涌现...
  19. 手把手教你快速搭建私服环境
  20. 主流的6个Go语言Web框架

热门文章

  1. 显示隐藏-visibility(HTML、CSS)
  2. opencv之CmakeLists.txt配置
  3. java重定向并保持同一个会话_当会话在Java Web应用程序中过期时,如何重定向到登录页面?...
  4. 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案...
  5. TestNG介绍 - 1
  6. Java大数据-Week2-Day3面向对象高级
  7. 苹果将投资10亿美元扩容位于美国雷诺的数据中心
  8. 一年前我在知乎上提了个愚蠢的问题:如何入门 Linux ?
  9. JavaScript数组快速入门
  10. Swift语言精要 - Dictionary(字典)