当前位置: 首页 > news >正文

JSP基础知识概述

目录

  • JSP
    • 一、什么是JSP
      • 1.1 概念
      • 1.2 创建JSP
      • 1.3 JSP编写Java代码
      • 1.4 JSP实现原理
    • 二、JSP与HTML集成
      • 2.1 普通脚本
      • 2.2 声明脚本
      • 2.3 输出脚本
      • 2.4 JSP指令
      • 2.5 动作标签
    • 三、内置对象
      • 3.1 四大域对象

JSP

一、什么是JSP

1.1 概念

  • 简化的Servlet设计,在HTMl标签中嵌套Java代码,用以高效开发Web应用的动态网页。

  • 作用:替换显示页面部分的Servlet(使用*.jsp文件替换XxxJSP.java)

1.2 创建JSP

在web目录下新建*.jsp文件(与WEB-INF平级)

1.3 JSP编写Java代码

<%@ 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代码在页面中打印当前系统时间
  • 访问JSP

在浏览器输入http://ip:port/项目路径/资源名称

例如:http://127.0.0.1:8080/项目路径/资源名称

1.4 JSP实现原理

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

在这里插入图片描述

二、JSP与HTML集成

2.1 普通脚本

语法:<% Java代码 %>

<html>
<head><title>Hello World</title></head>
<body><%//jsp中,使用小脚本嵌入Java代码!out.println("hi");//打印内容在客户端System.out.println("hi");//打印内容在控制台%>    
</body>
</html>
  • 经验:普通脚本可以使用所有java语法,除了定义函数。
  • 注意:脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套

2.2 声明脚本

语法:<%! 定义变量、函数 %>

<%! int i = 0; %>
<%! int a,b,c; %>
<%! Object object = new Object(); %>
<%!//定义方法public void m1(){System.out.println("你好");
}
%>
  • 注意:声明脚本声明的变量是全局变量。
  • 声明脚本的内容必须在普通脚本<% %>中调用。
  • 如果声明脚本中的函数具有返回值,使用输出脚本调用<%= %>。

2.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>
  • 经验:输出脚本可以输出带有返回值的函数
  • 注意:输出脚本中不能加;

2.4 JSP指令

JSP指令用来设置与整个JSP页面相关的属性。

  • 指令

    • <%@ page … %>:定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
    • <%@ include … %>:包含其他文件
    • <%@ taglib … %>:引入标签库的定义,可以是自定义标签
  • page指令

语法:<%@ page attribute="value1" attribute2="value2" %>

在这里插入图片描述

  • include指令

语法:<%@ include file="被包含的JSP路径" %>

被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是当前JSP文件的一部分,会被同时编译执行(静态包含)。

<%@ include file="header.jsp" %>
...
...
<%@ include file="footer.jsp" %>
  • 注意:可能会有重名的冲突问题,不建议使用。

  • taglib指令

语法:<%@ taglib url="外部标签库路径" prefix="前缀" %>

<%@ taglib url="http://java.sun.com/jsp/jstl/core" prefix="c" %>

2.5 动作标签

  1. include
  • 语法:<jsp:include page=“相对URL地址” />
  • jsp:include动作元素会将外部文件输出结果包含在JSP中(动态包含)。

在这里插入图片描述

  • 注意:前面已经介绍过include指令,它是将外部文件的输出代码复制到了当前JSP文件中。而这里的jsp:include动作不同,是将外部文件的输出结果引入到了当前JSP文件中。
  1. useBean
  • 语法:<jsp:useBean id=“name” class=“package.className” />
  • jsp:useBean动作用来加载一个将在JSP页面中使用的JavaBean。
<jsp:useBean id="user" class="com.qf.entity.User" />
  • 在类载入后,我们可以通过jsp:setProperty和jsp:getProperty动作来修改和获取bean的属性。
  1. setProperty

可以在jsp:useBean元素之后使用jsp:setproperty进行属性的赋值

在这里插入图片描述

<jsp:useBean id="user" class="com.qf.entity.User" />
<jsp:setProperty name="user" property="name" value="gavin" /> 
  1. getProperty

jsp:Property动作提取指定Bean属性的值,转换成字符串,然后输出。

在这里插入图片描述

<jsp:useBean id="user" class="com.qf.entity.User" />
<jsp:setProperty name="user" property="name" value="gavin" /> 
<jsp:getProperty name="user" property="name" />
  1. forward

语法:<jsp:forward page="相对URL地址" />

在这里插入图片描述

<jsp:forward page="index.jsp" />
  1. param

语法:<jsp:param name="" value="" />

<jsp:forward page="index.jsp"><!-- http请求参数传递--><jsp:param name="sex" value="nan" />
</jsp:forward>

三、内置对象

  • 由JSP自动创建的对象,可以直接使用

在这里插入图片描述

3.1 四大域对象

  • JSP有四大作用域对象,存储数据和获取数据的方式一样,不同的是取值的范围有差别

    • pageContext:当前JSP页面范围

    • request:一次请求有效

    • session:一次会话有效(关闭浏览器失效)

    • application:整个web应用有效(服务器重启或关闭失效)

    • 以上都是通过setAttribute(“name”,value);存储值;通过getattribute(“name”);获取值

http://www.lryc.cn/news/382237.html

相关文章:

  • 国产编程—— 仓颉
  • 0X JavaSE-并发编程(锁)
  • 云计算【第一阶段(18)】磁盘管理与文件系统 分区格式挂载(一)
  • Flask-cache
  • 【面试题】面试小技巧:如果有人问你 xxx 技术是什么?_面试问你对什么技术特别了解
  • 简单分享Python语言(发现其实并不难)
  • 基于VTK9.3.0+Visual Studio2017 c++实现DICOM影像MPR多平面重建
  • 【论文精读】ViM: Out-Of-Distribution with Virtual-logit Matching 使用虚拟分对数匹配的分布外检测
  • 【面试题】前端 移动端自适应?_前端移动端适配面试题
  • 在Maven工程中手动配置并测试SpringBoot(巨详)
  • c# 去掉字符串首尾的 特殊符号
  • 在容器中共享本地文件
  • Java Matcher类方法深度剖析:查找和匹配、索引方法
  • Redis-数据类型-zset
  • 手撕RPC——前言
  • Vite: 关于预构建的毫秒级响应
  • Docker 中 MySQL 迁移策略(单节点)
  • 猫头虎 分享已解决Error || API Rate Limits: HTTP 429 Too Many Requests
  • 开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全量压缩图片
  • 【数据结构与算法 经典例题】使用栈实现队列(图文详解)
  • 不知大家信不信,竟有这么巧的事,我领导的老婆,竟然是我老婆的下属,我在想要不要利用下这层关系,改善下领导对我的态度,领导怕老婆
  • 使用pkg -r 命令选项向jail虚拟子系统里安装软件@FreeBSD
  • Go语言开发框架GoFly已集成数据可视化大屏开发功能,让开发者只专注业务开发,本文指导大家如何使用
  • PR模板 | RGB特效视频标题模板Titles | MOGRT
  • python替换文件内容
  • SD-WAN是什么?它有哪些应用领域?
  • PHP-CGI的漏洞(CVE-2024-4577)
  • 人工智能前沿讲座——AIGC
  • CCF 第33次CCF计算机软件能力认证第二题
  • python 学习积累