JavaWeb笔记之JSP

发布时间:2023年12月22日

? ??

一、引言

现有问题
在之前学习Servlet时,服务端通过Servlet响应客户端页面,有什么不足之处?
开发方式麻烦:继承父类、覆盖方法、配置Web.xml或注解。
代码修改麻烦:重新编译、部署、重启服务。
显示方式麻烦:获取流、使用println("");逐行打印。
协同开发麻烦:UI负责美化页面,程序员负责编写代码。UI不懂Java,程序员又不能将所有前端页面的内容通过流输出。
? ??

二、JSP

2.1 概念
简化的Servlet设计,在HTML标签中嵌套Java代码,用以高效开发Web应用的动态网页。
Java Server Pages。
??
2.2 作用
替换显示页面部分的Servlet(使用*.jsp文件替换XxxJSP.java)。
??

三、JSP开发

3.1 创建JSP
在web目录下新建*.jsp文件(与WEB-INF平级)。
??
3.1.1 编写代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>This is my first page</title>
</head>
<body>
    <%=new java.util.Date() %>
</body>
</html>
? ?
使用<%= %>标签编写Java代码在页面中打印当前系统时间。
??
3.1.2 访问JSP
在浏览器输入http://ip:port/项目路径/资源名称。
??
3.2 JSP与Servlet
关系
????????JSP文件在容器中会转换成Servlet执行。
????????JSP是对Servlet的一种高级封装。本质还是Servlet。
区别
????????与 Servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。

? ? ?
3.3 JSP实现原理
Tomcat会将xxx.jsp转换成Java代码,进而编译成.class文件运行,最终将运行结果通过response响应给客户端。

? ?

四、集成开发

4.1 脚本
脚本可以编写Java语句、变量、方法或表达式。
? ??
4.1.1 普通脚本
语法:<% Java代码 %>
<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>
<%
    //jsp中,使用小脚本嵌入java代码!
    out.println("hi");//打印内容在客户端页面
    System.out.println("hi");//打印内容在控制台
%>
</body>
</html>
? ?
经验:普通脚本可以使用所有Java语法,除了定义函数。
注意:脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套。
? ??
4.1.2 声明脚本
语法:<%! 定义变量、函数 %>
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Object object = new Object(); %>
<%!
    //定义方法
    public void m1(){
        System.out.println("你好");
    }
%>
? ?
注意:声明脚本声明的变量是全局变量。
声明脚本的内容必须在普通脚本<% %>中调用。
如果声明脚本中的函数具有返回值,可以使用输出脚本调用<%= %>。
??
4.1.3 输出脚本
语法:<%=Java表达式 %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp基本使用</title>
</head>
<body>
<p>
    今天的日期是: <%= new java.util.Date() %>
</p>
</body>
</html>
??
经验:输出脚本可以输出带有返回值的函数。
注意:输出脚本中不能加。
??
4.2 JSP注释
JSP注释主要有两个作用:为脚本代码作注释以及HTML内容注释。
? ??
4.2.1 语法

??
4.2.2 注释
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp基础教程</title>
</head>
<body>
<%-- JSP注释在网页中不会被显示--%>
<!-- HTML注释在网页源代码中会显示 -->
<p>
    今天的日期是: <%= new java.util.Date() %>
</p>
</body>
</html>
? ? ??
4.3 JSP指令
JSP指令用来设置与整个JSP页面相关的属性。

? ? ?
4.3.1 page指令
语法:<%@ page attribute1="value1" attribute2="value2" %>
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。

??
4.3.2 include指令
语法:<%@ include file = "被包含的JSP路径"%>
通过include指令来包含其他文件。
被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是当前JSP文件的一部分,会被同时编译执行(静态包含)。
<%@ include file="header.jsp"%>
...
...
<%@ include file="footer.jsp" %>
??
注意:可能会有重名的冲突问题,不建议使用。
??

4.3.3 taglib指令
语法:<%@ taglib uri="外部标签库路径" prefix="前缀" %>
引入JSP的标准标签库。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
? ?
文章来源:https://blog.csdn.net/m0_52514893/article/details/135151536
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。