当前位置:   article > 正文

初试Jakarta EE项目 - Servlet + JSP

jakarta ee

一、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的概念

  • 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的概念

  • 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>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response); // 将客户端提交的POST请求转给doGet()处理方法
    }

    /**
     * 销毁方法,只执行一次
     */
    public void destroy() {
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98

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

  • 显示首页
    在这里插入图片描述
  • 单击【Hello Serlvet】超链接
    在这里插入图片描述
  • 录屏演示页面刷新与跳转
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/977639
推荐阅读
相关标签
  

闽ICP备14008679号