【沉浸式求职学习day47】【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

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

  2. 内置一些对象;

java 复制代码
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. 输出页面前增加的代码;
java 复制代码
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代码,就会被转换为:
java 复制代码
      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 复制代码
<?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表达式

jsp 复制代码
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>

  <%--JSP表达式
  作用:用来将程序的输出,输出到客户端
  <%= 变量或者表达式%>
  --%>
  <%= new java.util.Date()%>

  </body>
</html>

jsp脚本片段

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:

java 复制代码
<%@ 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:

java 复制代码
<%@ 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:

java 复制代码
<%@ 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>
相关推荐
我爱Jack4 分钟前
时间与空间复杂度详解:算法效率的度量衡
java·开发语言·算法
米饭「」6 分钟前
C++AVL树
java·开发语言·c++
Zonda要好好学习14 分钟前
Python入门Day4
java·网络·python
SimonKing27 分钟前
告别传统读写!RandomAccessFile让你的Java程序快人一步
java·后端·程序员
Little-Hu29 分钟前
QML TextEdit组件
java·服务器·数据库
心愿许得无限大38 分钟前
Qt 常用界面组件
开发语言·c++·qt
2401_858286111 小时前
OS15.【Linux】gdb调试器的简单使用
linux·运维·服务器·开发语言·gdb
牛马baby1 小时前
MATLAB下载安装教程(附安装包)2025最新版(MATLAB R2024b)
开发语言·matlab
shenyan~1 小时前
关于 c、c#、c++ 三者区别
开发语言·c++
Ashlee_code1 小时前
什么是Web3?金融解决方案
开发语言·金融·架构·eclipse·web3·区块链·php