Java编程笔记29:JSP

时间:2022-08-18 01:10:06

Java编程笔记29:JSP

Java编程笔记29:JSP

图源:Fotor懒设计

就像在上篇Java编程笔记28:Servlet II - 红茶的个人站点 (icexmoon.cn)中展示的那样,要向客户端输出一个页面,最简单的方式是直接用Java代码向输出流写入Html代码。这样的方式虽然简单直观,但存在很多隐患,而且很难用于编写复杂的Html代码。

此时我们就需要其他技术来输出Html页面,JSP就是早期的其中一种方式。

JSP是Java Server Pages的缩写,是Java服务器用于“组装”和生成Html页面的技术。其写法和作用与其它语言中常见的模版语言类似。利用JSP,我们可以很容易地将Java代码嵌入静态的Html代码中。

下面我们利用JSP编写一个简单的示例,在页面上显示当前时间,以及一个随机的欢迎语。

<%@ page import="java.time.format.DateTimeFormatter" %>
<%@ page import="java.time.LocalDateTime" %>
<%@ page import="java.util.Random" %><%--
  Created by IntelliJ IDEA.
  User: 70748
  Date: 2023/3/30
  Time: 10:49
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>now time is <%= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")) %></h1>
    <div>
        <%
            String[] messages = {"今天天气不错","你吃了吗","没吃"};
            Random random = new Random();
            int i = random.nextInt(messages.length);
            out.print(messages[i]);
        %>
    </div>
</body>
</html>

简单介绍一下示例中的JSP简单语法:

  • <%@ page import="xxx" %>可以向当前JSP中导入Java的包和类。
  • <%-- xxx --%>是JSP的注释。
  • <%= xxx %>可以将一个Java变量直接输出到最终的Html中。
  • <% xxx %>可以在JSP中嵌入Java代码。

此外,JSP还包含一些预定义局部变量:

  • out:代表输出响应报文的输出流,即HttpServletResponse.getWriter()返回的对象。
  • session:代表当前Http请求关联的Session,即HttpServletRequest.getSession()返回的对象。
  • request:代表HttpServletRequest对象。

这里的JSP命名为time.jsp,并保存到项目的/src/main/webapp/目录下。之后打包成war后由Tomcat加载,通过http://localhost:8081/hello/time.jsp访问就能看到效果。

Java编程笔记29:JSP

JSP是一个古早技术,现在已经被各种新的模版语言代替了,所以只需要了解即可。

谢谢阅读,本文的完整示例代码可以通过java-notebook/ch29 (github.com)获取。

参考资料