0
点赞
收藏
分享

微信扫一扫

JSP基础①


文章目录

  • ​​JSP初识​​
  • ​​JSP快速入门​​
  • ​​搭建环境​​
  • ​​导入 JSP 依赖​​
  • ​​创建JSP页面​​
  • ​​JSP原理​​

JSP初识

JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术,其中既可以定义 HTML、JS、CSS等静态内容,还可以定义 Java代码的动态内容,也就是 ​​JSP = HTML + Java​​。如下就是jsp代码

<html>
<head>
<title>Title</title>
</head>
<body>
<h1>JSP,Hello World</h1>
<%
System.out.println("hello,jsp~");
%>
</body>
</html>

上面代码 ​​h1​​ 标签内容是展示在页面上,而 Java 的输出语句是输出在 idea 的控制台。

JSP 作用:简化开发,避免了在Servlet中直接输出HTML标签。

我们可以通过一个例子来了解它的好处:

比如我们现在我们想要在打开网页之后动态的显示用户名,如下:

JSP基础①_intellij-idea


如果用Servlet来实现:

JSP基础①_tomcat_02


上面的代码有大量使用到 ​​writer​​ 对象向页面写标签内容,这样我们的代码就显得很麻烦;将来如果展示的效果出现了问题,排错也显得有点力不从心。如果用JSP来实现:

JSP基础①_java_03


上面代码可以看到里面基本都是 ​​HTML​​​ 标签,而动态数据使用 Java 代码进行展示;这样操作看起来要比用 ​​servlet​​ 实现要舒服很多。

JSP快速入门

想要使用JSP只需要三步:

  • 搭建环境
  • 导入JSP依赖
  • 创建JSP页面

搭建环境

创建一个maven的 web 项目,项目结构如下:

JSP基础①_maven_04


​pom.xml​​ 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
<artifactId>jsp-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>

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

<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
</project>

导入 JSP 依赖

在 ​​dependencies​​ 标签中导入 JSP 的依赖,如下

<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>

该依赖的 ​​scope​​​ 必须设置为 ​​provided​​,因为 tomcat 中有这个jar包了,所以在打包时我们是不希望将该依赖打进到我们工程的war包中。

创建JSP页面

在项目的 ​​webapp​​ 下创建jsp页面

JSP基础①_java_05

通过上面方式创建一个名为 ​​hello.jsp​​ 的页面。

接下来我们就可以编写代码了,例如:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>hello jsp</h1>

<%
System.out.println("hello,jsp~");
%>
</body>
</html>

启动服务器并在浏览器地址栏输入 ​​http://localhost:8080/jsp-demo/hello.jsp​​,我们可以在页面上看到如下内容

JSP基础①_java_06

同时也可以看到在 ​​idea​​​ 的控制台看到输出的 ​​hello,jsp~​​ 内容。

JSP原理

我们之前说 JSP 就是一个页面,那么在 JSP 中写 ​​html​​​ 标签,我们能理解,但是为什么还可以写 ​​Java​​ 代码呢?

因为 JSP 本质上就是一个 Servlet。接下来我们聊聊访问jsp时的流程

JSP基础①_maven_07

  1. 浏览器第一次访问​​hello.jsp​​ 页面
  2. ​tomcat​​​ 会将​​hello.jsp​​​ 转换为名为​​hello_jsp.java​​​ 的一个​​Servlet​
  3. ​tomcat​​​ 再将转换的​​servlet​​​ 编译成字节码文件​​hello_jsp.class​
  4. ​tomcat​​ 会执行该字节码文件,向外提供服务

我们可以到项目所在磁盘目录下找 ​​target\tomcat\work\Tomcat\localhost\jsp-demo\org\apache\jsp​​​ 目录,而这个目录下就能看到转换后的 ​​servlet​

JSP基础①_tomcat_08

打开 ​​hello_jsp.java​​ 文件,来查看里面的代码

JSP基础①_maven_09

由上面的类的继承关系可以看到继承了名为 ​​HttpJspBase​​​ 这个类,那我们在看该类的继承关系。到资料中的找如下目录: ​​资料\tomcat源码\apache-tomcat-8.5.68-src\java\org\apache\jasper\runtime​​​ ,该目录下就有 ​​HttpJspBase​​ 类,查看该类的继承关系

JSP基础①_maven_10

可以看到该类继承了 ​​HttpServlet​​​ ;那么 ​​hello_jsp​​​ 这个类就间接的继承了 ​​HttpServlet​​​ ,也就说明 ​​hello_jsp​​​ 是一个 ​​servlet​​。

继续阅读 ​​hello_jsp​​​ 类的代码,可以看到有一个名为 ​​_jspService()​​​ 的方法,该方法就是每次访问 ​​jsp​​​ 时自动执行的方法,和 ​​servlet​​​ 中的 ​​service​​ 方法一样 。

而在 ​​_jspService()​​ 方法中可以看到往浏览器写标签的代码:

JSP基础①_tomcat_11

以前我们自己写 ​​servlet​​​ 时,这部分代码是由我们自己来写,现在有了 ​​jsp​​ 后,由tomcat完成这部分功能。


举报

相关推荐

0 条评论