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

【沉浸式求职学习day47】【JSP详解】

沉浸式求职学习

  • JSP
    • 1.什么是JSP
    • 2.JSP原理
    • 3.JSP基础语法
    • 4.JSP指令

今天要写两篇~
只能说准备考试太累了,而且昨天又进行了一场AI面试,所以没空写了,今天补上

JSP

1.什么是JSP

Java Server Pages : Java服务器端页面,也和Servlet一样,用于动态Web技术!

  • 最大的特点:
    • 写JSP就像在写HTML;
    • 区别:
      • HTML只给用户提供静态的数据;
      • JSP页面中可以嵌入JAVA代码,为用户提供动态数据;

2.JSP原理

思路:JSP到底怎么执行的!

  • 代码层面没有任何问题;

  • 服务器内部工作:

    • tomcat中有一个work目录;
  • IDEA中使用Tomcat的会在IDEA的tomcat中生产一个work目录;

在这里插入图片描述
发现页面转变成了Java程序!
在这里插入图片描述

  • 浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!

  • JSP最终也会被转换成为一个Java类!

  • JSP 本质上就是一个Servlet

// 初始化public void _jspInit() {}
// 销毁public void _jspDestroy() {}
// JSPServicepublic void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)throws java.io.IOException, javax.servlet.ServletException {   
  1. 判断请求;

  2. 内置一些对象;

final javax.servlet.jsp.PageContext pageContext;  // 页面上下文
javax.servlet.http.HttpSession session = null;    // session
final javax.servlet.ServletContext application;   // applicationContext
final javax.servlet.ServletConfig config;         // config
javax.servlet.jsp.JspWriter out = null;           // out
final java.lang.Object page = this;               // page:当前
HttpServletRequest request                        // 请求
HttpServletResponse response                      // 响应
  1. 输出页面前增加的代码;
response.setContentType("text/html");       // 设置响应的页面类型
pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;

以上的这些个对象我们可以在JSP页面中直接使用!
在这里插入图片描述
在JSP页面中:

  • 只要是 JAVA代码就会原封不动的输出;
  • 如果是HTML代码,就会被转换为:
      out.write("<html>\n");out.write("  <head>\n");out.write("    <title>$Title$</title>\n");out.write("  </head>\n");out.write("  <body>\n");out.write("  $END$\n");out.write("  </body>\n");out.write("</html>\n");

这样的格式,输出到前端!

3.JSP基础语法

  • 任何语言都有自己的语法,JAVA中有,JSP 作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可!),Java所有语法都支持!
  • 配置必需的maven环境:
<?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"><parent><artifactId>JavaWeb-02-Servlet</artifactId><groupId>com.github</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>Jsp</artifactId><dependencies>
<!--   Servlet 依赖   --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency>
<!--        JSP 依赖   --><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.3</version></dependency>
<!--        JSTL表达式的依赖--><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency>
<!--        standard标签库--><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency></dependencies></project>

在这里插入图片描述
JSP表达式

<%@ page contentType="text/html;charset=UTF-8" %>
<html><head><title>$Title$</title></head><body><%--JSP表达式作用:用来将程序的输出,输出到客户端<%= 变量或者表达式%>--%><%= new java.util.Date()%></body>
</html>

jsp脚本片段

<%@ page contentType="text/html;charset=UTF-8" %>
<html><head><title>$Title$</title></head><body><%--jsp脚本片段--%><%int sum = 0;for (int i = 1; i <=100 ; i++) {sum+=i;}out.println("<h1>Sum="+sum+"</h1>");%></body>
</html>

JSP声明:会被编译到JSP生成Java的类中!其他的,就会被生成到_jspService方法中!
在这里插入图片描述
JSP的注释,不会在客户端显示,HTML就会!

4.JSP指令

404与500页面实现
在这里插入图片描述

在这里插入图片描述
jsp2.jsp:

<%@ page contentType="text/html;charset=UTF-8" %>
<%--定制错误页面--%>
<%--<%@ page errorPage="error/500.jsp" %>--%>
<html><head><title>Title</title>
</head>
<body><%int x = 1/0;
%></body>
</html>

404.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><img src="${pageContext.request.contextPath}/img/2-404.png" alt="404">
</body>
</html>

500.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h2>自定义500错误的界面</h2>
<img src="${pageContext.request.contextPath}/img/1-500.png" alt="500">
</body>
</html>

在这里插入图片描述

http://www.xdnf.cn/news/608365.html

相关文章:

  • Java—— 网络爬虫
  • Redis 8.0 新增数据结构深度解析:从核心功能到生态重构
  • 【数据架构04】数据湖架构篇
  • Flutter跨平台通信实战|3步打通Android原生能力,实现底层API调用!
  • Flutter - 国际化
  • Flutter 3.32 升级要点全解析
  • ros2 humble安装ros-humble-tf2-tools
  • 布丁扫描高级会员版 v3.5.2.2| 安卓智能扫描 APP OCR文字识别小助手
  • 数字人交互系统哪家强?品牌技术对比!
  • JavaScript进阶(十二)
  • 【AS32X601驱动系列教程】GPIO_点亮LED详解
  • 在bash中,如何打开特定文件,使用特定字符串替换特定字符串?请编写代码
  • 哈希表的实现(上)
  • mac将自己网络暴露到公网
  • ROS云课三分钟-cmake gcc g++ 默认版本和升级-250523
  • 前后端联调实战指南:Axios拦截器、CORS与JWT身份验证全解析
  • 提示词工程框架——CO-STAR 框架实战
  • 江科大DMA直接存储器访问hal库实现
  • 深度剖析 MCP SDK 最新版:Streamable HTTP 模式
  • 学习黑客Nmap 是什么?
  • 数据结构 -- 交换排序(冒泡排序和快速排序)
  • 信息安全管理与评估赛项参考答案-模块1网络平台搭建
  • 【软件测试】第三章·软件测试基本方法(基于需求的测试方法)
  • Trae+12306 MCP,10分钟搭建行程可视化助手
  • Gmsh 代码深度解析与应用实例
  • 【开源项目1】基于机器学习木马查杀引擎项目
  • 1.3 线性系统的时域分析法
  • kafka速度快的原理
  • 【时时三省】(C语言基础)对被调用函数的声明和函数原型
  • [Datagear] [SQL]实现分组统计同时带汇总行的两种方式对比分析