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
访问就能看到效果。
JSP是一个古早技术,现在已经被各种新的模版语言代替了,所以只需要了解即可。
谢谢阅读,本文的完整示例代码可以通过java-notebook/ch29 (github.com)获取。