初试Jakarta EE项目 - Servlet + JSP

文章目录

  • 一、Jakarta EE概述
  • 二、Servlet概述
    • (一)Servlet的概念
    • (二)Servlet的工作原理
    • (三)Servlet的特点
      • 1、独立性
      • 2、灵活性
      • 3、生命周期管理
    • (四)Servlet的应用场景
    • (五)总结
  • 三、JSP概述
    • (一)JSP的概念
    • (二)JSP的工作原理
    • (三)JSP的特点
      • 1、易于学习和使用
      • 2、 与Java集成
      • 3、模块化开发
    • (四)JSP的应用场景
    • (五)总结
  • 四、利用Jakarta EE创建Web应用
    • (一)创建Jakarta EE项目
    • (二)启动服务器,查看运行效果
    • (三)修改构件名与服务器配置
      • 1、修改构件名
      • 2、修改服务器配置
    • (四)重启服务器,查看效果
  • 五、修改首页,显示时间
    • (一)按默认日期格式显示时间
    • (二)按中文日期格式显示时间
      • 1、方法一:使用toLocalString()方法
      • 2、方法二:使用日期格式类来处理
    • (三)修改字体颜色,居中显示
    • (四)课堂练习
  • 六、修改HelloServlet
    • (一)修改代码,显示问候、时间和学生信息
    • (二)重启服务器,查看效果

一、Jakarta EE概述

  • 在IntelliJ IDEA 2022.3中,Jakarta EE项目是指基于Jakarta Enterprise Edition(简称Jakarta EE)标准创建的Java Web应用程序。Jakarta EE是Eclipse基金会管理的一个开源企业级Java平台规范,用于构建和部署可扩展、安全且可靠的多层企业级Web应用。

  • 以前被称为Java EE(Java Platform, Enterprise Edition),但在Oracle将Java EE相关的技术和知识产权转移到Eclipse基金会后,这个技术栈被重新命名为Jakarta EE。因此,在IDEA中创建Jakarta EE项目时,你实际上是在使用一套遵循Jakarta EE标准的API和技术来开发企业级应用。

二、Servlet概述

  • Servlet菜鸟教程 - https://m.runoob.com/servlet/
    在这里插入图片描述

(一)Servlet的概念

  • Servlet是一种用于在服务器端处理HTTP请求和响应的Java程序。它扩展了服务器的功能,使得开发者能够动态生成基于客户端请求的内容。Servlet通常运行在支持Java的Web服务器上,例如Apache Tomcat。

(二)Servlet的工作原理

当客户端发送HTTP请求时,Servlet容器接收请求并将其传递给相应的Servlet。Servlet负责处理请求,生成响应,并将响应返回给客户端。这种动态生成内容的方式使得开发者能够根据用户请求实现个性化和交互性更强的Web应用。

(三)Servlet的特点

1、独立性

  • Servlet是独立于平台的,可以在任何支持Java的Web服务器上运行。

2、灵活性

  • 通过使用Java语言,Servlet提供了丰富的功能和灵活性,使得开发者能够处理各种复杂的业务逻辑。

3、生命周期管理

  • Servlet具有生命周期,容器负责管理Servlet的创建、初始化、服务和销毁过程,确保Servlet在运行时处于正确的状态。

(四)Servlet的应用场景

  • Servlet广泛应用于开发各种类型的Web应用,包括电子商务、社交平台、在线银行等。它作为处理Web请求的重要组件,为开发者提供了一个强大的工具来构建可扩展、高性能的Web应用。

(五)总结

  • 在Java Web开发中,Servlet扮演着至关重要的角色,为开发者提供了一种处理HTTP请求和响应的强大机制。通过Servlet,我们能够构建动态、交互性更强的Web应用,满足用户不断增长的需求。

三、JSP概述

  • JSP菜鸟教程 - https://m.runoob.com/jsp/

(一)JSP的概念

  • Java Server Pages是一种用于创建动态Web内容的Java技术。它允许开发人员通过嵌入Java代码在HTML页面中动态生成内容,从而实现更灵活、交互性更强的Web应用程序。

(二)JSP的工作原理

  • JSP的工作原理基于Servlet技术。当用户请求一个包含JSP的页面时,服务器会将其转换成一个Servlet,然后执行相应的Java代码生成HTML响应。这种动态生成的方式使得开发者能够根据用户请求动态地生成内容,与静态HTML相比更加灵活。

(三)JSP的特点

1、易于学习和使用

  • JSP使用标签语法,类似于HTML,因此对于熟悉HTML的开发者而言,学习曲线相对较低。

2、 与Java集成

  • JSP允许嵌入Java代码,利用Java的强大功能,使得开发者能够更好地控制应用程序的逻辑。

3、模块化开发

  • JSP支持模块化开发,通过使用自定义标签库和标签文件,可以将页面模块化,提高代码的可维护性和重用性。

(四)JSP的应用场景

  • JSP广泛应用于开发动态Web应用程序,例如电子商务平台、社交网络、在线银行等。其灵活性和强大的功能使得开发者能够轻松地实现复杂的业务逻辑和用户交互。

(五)总结

  • 在Web开发的演进过程中,JSP作为一种重要的技术,为开发者提供了强大的工具和灵活性。通过简洁的语法和与Java的紧密集成,JSP成为构建动态Web应用的理想选择。

四、利用Jakarta EE创建Web应用

(一)创建Jakarta EE项目

  • 新建项目
    在这里插入图片描述
  • 选择项目类型 - Jakarta EE,设置项目名、项目位置、模板、应用服务器、语言、构建系统、组、构件与JDK
    在这里插入图片描述
  • 选择Jakarta版本与项目依赖
    在这里插入图片描述
  • 单击【Create】按钮,得到一个可以运行Jakarta项目
    在这里插入图片描述

(二)启动服务器,查看运行效果

  • 单击工具栏上Tomcat 10.1.16右边的绿色运行按钮,启动Tomcat服务器,使用默认浏览器显示了首页(index.jsp)
    在这里插入图片描述
  • 单击Hello Servlet超链接,跳转到HelloServlet处理后的页面
    在这里插入图片描述

(三)修改构件名与服务器配置

1、修改构件名

  • 查看默认的构建名(项目名_war_exploded)
  • 打开项目结构窗口(File | Porject Structure…)
    在这里插入图片描述
  • 打开项目设置(Project Settings)下的构件(Artifacts)
    在这里插入图片描述
  • 修改构建名 - HelloWorld:war exploded,去掉后面的:war exploded,然后单击【Apply】按钮
    在这里插入图片描述
  • 单击【OK】按钮,关闭项目结构窗口

2、修改服务器配置

  • 单击Edit Configurations...
    在这里插入图片描述
  • 弹出服务器配置对话框
    在这里插入图片描述
  • 直接修改URL
    在这里插入图片描述
  • 重启服务器
    在这里插入图片描述
  • 结果是访问不了项目首页,报404错误,说明资源路径有问题
    在这里插入图片描述
  • 因为构件名已被修改,要重新部署到服务器上,打开服务器配置对话框,切换到【Deployment】选项卡
    在这里插入图片描述
  • 移除掉服务器上的HelloWorld构件
    在这里插入图片描述
  • 我们可以单击【+】按钮自己添加构件HelloWorld,也可以单击【Fix】按钮,让系统添加构件
    在这里插入图片描述

(四)重启服务器,查看效果

  • 修改构件名,重新部署到服务器,此时可以用新的URL访问项目首页
    在这里插入图片描述

五、修改首页,显示时间

(一)按默认日期格式显示时间

  • 打开index.jsp,添加显示时间的代码
    在这里插入图片描述
  • 重启服务器,查看效果
    在这里插入图片描述
  • 过一会儿,刷新页面,你会发现页面时间也变了
    在这里插入图片描述
  • 查看页面源码
    在这里插入图片描述

(二)按中文日期格式显示时间

1、方法一:使用toLocalString()方法

  • 调用日期对象的toLocalString()方法
    在这里插入图片描述
  • 重启服务器,查看效果
    在这里插入图片描述

2、方法二:使用日期格式类来处理

  • 修改代码,使用JSP脚本得到中国日期格式的当前时间字符串,然后利用JSP表达式输出当前时间字符串
    在这里插入图片描述
  • 重启服务器,查看效果
    在这里插入图片描述

(三)修改字体颜色,居中显示

  • 修改代码
    在这里插入图片描述
  • 重启服务器,查看效果
    在这里插入图片描述

(四)课堂练习

  • 做一个学生信息表格(学号、姓名、性别、年龄、专业、班级、电话),至少包含三条记录
    在这里插入图片描述

六、修改HelloServlet

(一)修改代码,显示问候、时间和学生信息

  • HelloServlet
    在这里插入图片描述
package net.huawei.helloworld;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {private String message;/*** 初始化方法,只执行一次*/public void init() {message = "Hello Servlet World!";}/*** 处理客户端的GET请求* @param request* @param response* @throws IOException*/public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {// 设置响应体内容类型response.setContentType("text/html; charset=utf-8");// 获取字符输出流PrintWriter out = response.getWriter();// 往客户端输出信息out.print("<!DOCTYPE html>");out.print("<html>");out.print("<head>");out.print("<meta charset=utf-8>");out.print("<title>个人信息</title>");out.print("</head>");out.print("<body style='text-align: center'>");out.print("<h1 style='text-align: center; color: red;'>" + message + "</h1>");SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String currentTime = sdf.format(new Date());out.print("<h3 style='text-align: center; color: blue;'>" + currentTime + "</h3>");out.print("<table border='1' align='center' cellpadding='10'>");out.print("<tr>");out.print("<td>学号</td>");out.print("<td>姓名</td>");out.print("<td>性别</td>");out.print("<td>年龄</td>");out.print("<td>专业</td>");out.print("<td>班级</td>");out.print("<td>手机</td>");out.print("</tr>");out.print("<tr>");out.print("<td>001</td>");out.print("<td>徐津</td>");out.print("<td>男</td>");out.print("<td>20</td>");out.print("<td>大数据应用</td>");out.print("<td>2022数据1班</td>");out.print("<td>15834567890</td>");out.print("</tr>");out.print("<tr>");out.print("<td>002</td>");out.print("<td>潘苗</td>");out.print("<td>女</td>");out.print("<td>21</td>");out.print("<td>大数据应用</td>");out.print("<td>2022数据2班</td>");out.print("<td>13967895645</td>");out.print("<tr>");out.print("<td>003</td>");out.print("<td>陈粮</td>");out.print("<td>男</td>");out.print("<td>19</td>");out.print("<td>大数据应用</td>");out.print("<td>2022数据3班</td>");out.print("<td>15845456780</td>");out.print("</tr>");out.print("</table>");out.print("</body>");out.print("</html>");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response); // 将客户端提交的POST请求转给doGet()处理方法}/*** 销毁方法,只执行一次*/public void destroy() {}
}

(二)重启服务器,查看效果

  • 显示首页
    在这里插入图片描述
  • 单击【Hello Serlvet】超链接
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始,利用ChatGPT学会写作的完整指南

文章目录 前言了解ChatGPT访问OpenAI平台使用ChatGPT进行简单的对话定义写作主题逐步生成文章段落添加个性化和细节编辑和润色反复修改直至满意 图书推荐内容简介作者简介获取方式 前言 在数字时代&#xff0c;人工智能技术日益成熟&#xff0c;为我们提供了全新的学习和创作机…

Linux CentOS本地部署SQL Server数据库结合cpolar内网穿透实现公网访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装sql server二. 局域网测试连接三. 安装cpolar内网穿透四. 将sqlserver映射…

AI报告专题:创造性和生成式人工智能

今天分享的AI系列深度研究报告&#xff1a;《AI报告专题&#xff1a;创造性和生成式人工智能》。 &#xff08;报告出品方&#xff1a;Capgemini&#xff09; 报告共计&#xff1a;64页 AI一代 生成式人工智能 (AI)正在迅速改变我们与技术的交互方式&#xff0c;使机器能够创…

基于ssm在线医疗服务系统论文

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此医疗服务信息的…

Linux---逻辑卷管理

本章主要介绍逻辑卷的管理。 了解什么是逻辑卷创建和删除逻辑卷扩展逻辑卷缩小逻辑卷逻辑卷快照的使用 前面介绍了分区的使用&#xff0c;如果某个分区空间不够&#xff0c;想增加空间是非常困难的。所以&#xff0c;建议尽可能使用逻辑卷而非普通的分区&#xff0c;因为逻辑卷…

贪心算法及相关题目

贪心算法概念 贪心算法是指&#xff0c;在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;算法得到的是在某种意义上的局部最优解 。 贪心算法性质&#xff08;判断是否可以使用贪心算法&#xff09; 1、贪…

el-menu标题过长显示不全问题处理

项目基于vue-element-admin 问题 期望 处理方式 \src\layout\components\Sidebar\index.vue 文件后添加CSS <style scped> /* 侧栏导航菜单经典 文字超长溢出问题 CSS折行 */ .el-submenu__title {display: flex;align-items: center; } .el-submenu__title span {white-…

5个免费实用的AI绘画软件,对新手极其友好!

分享5个实用的AI绘画软件&#xff0c;都可以免费使用&#xff0c;而且操作简单&#xff0c;对新手也比较友好&#xff0c;生成的图片也不错&#xff01; 1、AI-Chat 地址&#xff1a; https://mmm.aiyujiang.com 上传图片并输入AI提示词就能一键生成各类动漫、卡通风格头像&a…

一文让你知道企业真正需要一个怎样的远程协同运维平台?

随着企业业务的快速发展&#xff0c;各类系统也是越来越多&#xff0c;运维工作的作用也就越发突出&#xff0c;运维工作出现一点问题就会牵一发而动全身&#xff0c;所以企业需要一个远程协同运维平台。那企业真正需要一个怎样的远程协同运维平台呢&#xff1f;有空可以看看这…

多元线性回归(一)

基本概念 线性回归时机器学习中监督学习下的一种算法。回归问题主要关注是因变量&#xff08;需要预测的值&#xff0c;可以是一个也可以是多个&#xff09;和一个或多个值型的自变量&#xff08;预测变量&#xff09;之间的关系。 需要预测的值&#xff1a;即目标变量&#x…

Name or service not knownstname

Name or service not knownstname Hadoop 或 Spark 集群启动时 报错 Name or service not knownstname 原因时因为 workers 文件在windows 使用图形化工具打开过 操作系统类型不对引发的 在Linux系统上删除 workers 文件 使用 vim 重新编辑后分发即可

前端笔记(四)Flex 布局

标准流 标准流也叫文档流&#xff0c;指的是标签在页面中默认的派不规则&#xff0c;例如&#xff1a;块元素独占一行&#xff0c;行内元素可以一行显示多个。 但是很多的网页布局都是块元素在一行中显示的&#xff0c;这时候就需要浮动和 Flex 布局&#xff0c;浮动只需要了解…

Java 中的 Collection 容器

Java 中的 “容器” 在 Java 中&#xff0c;java.util.Collection 是一个接口&#xff0c;定义了一组常用的操作和方法&#xff0c;提供了一种方便的方式来管理和操作一组对象。 它是 Java 集合框架的基础之一&#xff0c;提供了统一的方式来处理对象的集合。 Collection 接口继…

OLED材料市场研究:预计2029年将达到1447亿元

由于技术优势突出&#xff0c;近年来OLED 率先在智能手机、可穿戴等中小尺寸领域的渗透率持续提升。OLED就是有机发光显示技术&#xff0c;其最大特点是每个像素独立自发光&#xff0c;具有非常完美的黑色显示能力&#xff0c;在亮度、色彩、响应速度等方面远胜LCD屏幕&#xf…

基于three.js生成动态波浪背景效果

文章目录 前言一、安装three二、新建waves.js文件三、引入waves.js文件比查看效果如有启发&#xff0c;可点赞收藏哟~ 前言 基于three.js生成动态波浪背景效果 一、安装three npm i three -S二、新建waves.js文件 注意geometry.setAttribute和geometry.addAttribute和在不同…

统计centos系统哪一个进程打开文件描述符

一&#xff1a;找出前10进程打开的描述符 # find /proc/ -print|grep -P /proc/\d/fd|awk -F/ {print $3}|uniq -c|sort -rn |awk {print "进程 "$2" 打开 "$1" 个文件描述符"}|head 二&#xff1a;通过进程id找出对应的进程运行的程序。 # ps…

一键AI智能改写,一键AI智能生成原创文章

在数字化时代&#xff0c;创作内容已经成为大家日常生活和工作中不可或缺的一部分。本文将深入探讨一键AI智能改写的概念&#xff0c;剖析其背后的技术原理&#xff0c;同时聚焦于147原创助手这一代表性工具&#xff0c;解读其在改写文案上的独特之处&#xff0c;以及在各大平台…

Java中实用的策略模式【Strategy】

一、简介 我们知道Java中有许多的设计模式&#xff0c;总共32个左右。常见的比如简单工厂、建造者、原型、代理、桥接等&#xff0c;这些设计模式相当于是一个规范&#xff0c;主要是总结出来便于大家理解开发的一种算法思路。 今天主要是给大家介绍一下我们常见的策略模式&a…

【ARM Coresight 系列 2 文章 -- Trace32 对 APBIC 地址的配置 介绍】

文章目录 APBIC RomtableAPBIC Romtable 图 1 APBIC 网络图 如上图所示,如果想通过Trace32/DS-5 去访问 AP, 这个时候需要怎么做呢?可以看到 APBIC 中ROMTABLE 中 APB-AP 的偏移是0x00200000,所以 APB-AP的基地址为 0x2b000000 + 0x00200000,又从 APB-AP 的romtable 中可以…

23款奔驰E350eL升级小柏林音响 13个扬声器 590w

小柏林之声音响是13个喇叭1个功放&#xff0c;功率是590W&#xff0c;对应普通音响来说&#xff0c;已经是上等了。像著名的哈曼卡顿音响&#xff0c;还是丹拿音响&#xff0c;或者是BOSE音响&#xff0c;论地位&#xff0c;论音质柏林之声也是名列前茅。 升级小柏林音响&#…