Java JSP示例

时间:2020-02-23 14:37:11  来源:igfitidea点击:

这个例子演示了如何创建一个简单的JSP页面

在我之前的教程中,我向我们展示了如何使用servlet处理请求、响应、请求参数和上载文件。然而,我们可能已经注意到使用servlet为web应用程序呈现HTML内容是多么的不方便。在上重复调用方法

ServletOutputStream

或者

PrintWriter

类来输出内容,并且必须将HTML内容放入Java字符串中,这需要引号转义,这是一个真正的痛苦。在本例中,我们将了解Java服务器页以及它们如何使生活更轻松。

什么是JSP?

javaee规范的创建者意识到,使用servlet生成纯HTML内容需要比所需更多的工作。纯HTML页面的问题是它们是静态的。使用servlet时,我们可以生成动态内容并将其呈现为HTML。JavaServer页面(也称为jsp)就是这个问题的答案。jsp本质上是一种混合解决方案,它将Java代码和HTML标记结合在一起。除了Java代码之外,jsp还可以包含任何HTML标记。

JSP示例

在下面的示例中,我们将显示一个简单的JSP页面,显示当前时间。

JSP项目结构非常简单。用于处理依赖关系和生成属性的Maven POM文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>net.theitroad.tutorials</groupId>
	<artifactId>JSPExample</artifactId>
	<version>1</version>
	<packaging>war</packaging>

 	<name>JSPExample</name>
 	<url>https://theitroad.local</url>

 	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>javax.servlet.jsp-api</artifactId>
			<version>2.3.1</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

	<build>
	<finalName>jspexample</finalName>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-war-plugin</artifactId>
              <version>2.3</version>
              <configuration>
                  <warSourceDirectory>src/main/webapp</warSourceDirectory>
              </configuration>
          </plugin>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.1</version>
              <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
              </configuration>
          </plugin>
      </plugins>
  </build>
</project>

简单的web.xml文件仅包含应用程序显示名称

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
						http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	version="3.1">

	<display-name>JSP Example</display-name>

</web-app>

以及实际的JSP文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.time.LocalDateTime" %>
<!DOCTYPE html>
<html>
	<head>
		<title>Simple JSP Application</title>
	</head>
	<body>
		<h1>Hello world!</h1>
		<h2>Current time is <%= LocalDateTime.now() %></h2>
	</body>
</html>

现在让我们仔细看看索引.jsp

jsp中可以使用几种不同类型的标记。在上面的例子中,我们使用指令类型<%@page…%>将页面编码设置为UTF-8

<%@ page contentType="text/html;charset=UTF-8" %>

默认情况下(如果我们没有在JSP文件中包含这一行),字符编码将被设置为ISO-8859-1,如果我们想使用非拉丁字母表中的特殊字符和字母,这是不方便的。

我们使用另一个指令来导入LocalDateTime

<%@ page import="java.time.LocalDateTime" %>

最后,为了显示当前时间,我们使用一个名为expression的特殊标记<%=…。表达式包含简单的Java代码,该代码返回可写入客户端输出的内容,表达式将该代码的返回变量输出到客户端:

<h2>Current time is <%= LocalDateTime.now() %></h2>

部署应用程序后,转到http://localhost:8080/jsp示例/索引.jsp