JSP(Java Server Pages)

常请求处理流程 发送/error请求以及得到error视图的详细原理 Spring MVC SpringBoot源码解析:异常请求处理流程;发送/error并返回error视图的详细原理 引言 一个错误请求的处理流程主要是这样的: 当发送一个错误请求时,spring mvc会尝试处理这个请求,比如尝试去寻找静态资源等等; 如果处理失败,会将错误信息保存,然后重新发送一个/error请求; /error请求会被errorController处理,返回一个error视图; 本文主要通过源码分析异常请求处理的整个流程,对于springboot提供的BasicErro 阅读详情

JSP

什么是 JSP,它有什么用?

jsp 的全换是 java server pages。Java 的服务器页面。 jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据。因为 Servlet 程序回传 html 页面数据是一件非常繁锁的事情。开发成本和维护成本都极高。

Servlet 回传 html 页面数据的代码:

public class PringHtml extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 通过响应的回传流回传html 页面数据

resp.setContentType("text/html; charset=UTF-8"); PrintWriter writer = resp.getWriter();
writer.write("<!DOCTYPE html>\r\n"); writer.write(" <html lang=\"en\">\r\n"); writer.write(" <head>\r\n");
writer.write("	<meta charset=\"UTF-8\">\r\n"); writer.write("	<title>Title</title>\r\n"); writer.write(" </head>\r\n");
writer.write(" <body>\r\n"); writer.write("	这是 html 页面数据 \r\n");
writer.write(" </body>\r\n"); writer.write("</html>\r\n"); writer.write("\r\n");

}
}

jsp 回传一个简单 html 页面的代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
这是jsp的html页面数据
</body>
</html>

如何创建JSP页面

在这里插入图片描述

JSP如何访问

jsp 页面和 html 页面一样,都是存放在 web 目录下。访问也跟访问 html 页面一样。

举个栗子:

在 web 目录下有如下的文件:

  • test.html 页面 访问地址是 =======>>>>>> http://ip:port/工程路径/test.html
  • test.jsp 页面 访问地址是 =======>>>>>> http://ip:port/工程路径/test.jsp

JSP的本质是什么

jsp 页面本质上是一个 Servlet 程序。

当我们第一次访问 jsp 页面的时候。Tomcat 服务器会帮我们把 jsp 页面翻译成为一个 java 源文件。并且对它进行编译成为.class 字节码程序。我们打开 java 源文件不难发现其里面的内容是:

在这里插入图片描述

我们跟踪原代码发现,HttpJspBase 类。它直接地继承了 HttpServlet 类。也就是说。jsp 翻译出来的 java 类,它间接了继承了 HttpServlet 类。也就是说,翻译出来的是一个 Servlet 程序:

在这里插入图片描述

所以说,通过翻译的 java 源代码我们就可以得到结果:jsp 就是 Servlet 程序。

可以去观察翻译出来的 Servlet 程序的源代码,不难发现。其底层实现,也是通过输出流。把 html 页面数据回传给客户端。

public void _jspService(final javax.servlet.http.HttpServletRequest request, final
javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {

final java.lang.String _jspx_method = request.getMethod();
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {

HEAD");

}

response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or return;


final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null;


try {
response.setContentType("text/html;charset=UTF-8");
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;

out.write("\r\n");
out.write("\r\n"); out.write("<html>\r\n"); out.write("<head>\r\n");
out.write("	<title>Title</title>\r\n"); out.write("</head>\r\n"); out.write("<body>\r\n");
out.write("	a.jsp 页面\r\n");
out.write("</body>\r\n"); out.write("</html>\r\n");
} catch (java.lang.Throwable t) {
if (!(t instanceof javax.servlet.jsp.SkipPageException)){ out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
if (response.isCommitted()) { out.flush();
} else {
out.clearBuffer();
}
} catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}

JSP的三种语法

JSP头部的 page 指令

jsp 的 page 指令可以修改 jsp 页面中一些重要的属性,或者行为。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  1. language 属性 表示 jsp 翻译后是什么语言文件。暂时只支持 java。
  2. contentType 属性 表示 jsp 返回的数据类型是什么。也是源码中 response.setContentType()参数值
  3. pageEncoding 属性 表示当前 jsp 页面文件本身的字符集。

以下属性是给out 输出流使用:

  • autoFlush 属性 设置当 out 输出流缓冲区满了之后,是否自动刷新冲级区。默认值是 true。
  • buffer 属性 设置out 缓冲区的大小。默认是 8kb

在这里插入图片描述

  • errorPage 属性 设置当 jsp 页面运行时出错,自动跳转去的错误页面路径。

  • isErrorPage 属性 设置当前jsp 页面是否是错误信息页面。默认是 false。如果是 true 可以获取异常信息。

  • session 属性 设置访问当前 jsp 页面,是否会创建HttpSession 对象。默认是true。

  • extends 属性 设置jsp 翻译出来的java 类默认继承谁。

JSP中的常用脚本

声明脚本**(**极少使用)

声明脚本的格式是: <%! 声明 java 代码 %>

<%--1、声明类属性--%>
<%!
 	private Integer id;
 	private String name;
 	private static Map<String,Object> map;
 	%>
<%--2、声明static 静态代码块--%>
<%!
 	static {
 	map = new HashMap<String,Object>();
 	map.put("key1", "value1");
 	map.put("key2", "value2");
 	map.put("key3", "value3");
 	}
 	%>
<%--3、声明类方法--%>
<%!
 	public int abc(){
 	return 12;
 	}
 	%>
 	<%--4、声明内部类--%>
<%!
 	public static class A {
 	private Integer id = 12;
 	private String abc = "abc";
 	}
 	%>
表达式脚本(常用)

表达式脚本的格式是:<%=表达式%>

表达式脚本的作用是:的 jsp 页面上输出数据。

表达式脚本的特点:

  1. 所有的表达式脚本都会被翻译到_jspService() 方法中
  2. 表达式脚本都会被翻译成为 out.print()输出到页面上
  3. 由于表达式脚本翻译的内容都在_jspService() 方法中,所以_jspService()方法中的对象都可以直接使用。
  4. 表达式脚本中的表达式不能以分号结束。
<%=12 %> <br>
<%=12.12 %> <br>
<%="我是字符串" %> <br>
<%=map%> <br>
<%=request.getParameter("username")%>
代码脚本

代码脚本的格式是:

<%
 	java 语句
 	%>

代码脚本的作用是:可以在 jsp 页面中,编写我们自己需要的功能(写的是 java 语句)。

代码脚本的特点是:

  1. 代码脚本翻译之后都在_jspService 方法中
  2. 代码脚本由于翻译到_jspService()方法中,所以在_jspService()方法中的现有对象都可以直接使用。
  3. 还可以由多个代码脚本块组合完成一个完整的 java 语句。
  4. 代码脚本还可以和表达式脚本一起组合使用,在 jsp 页面上输出数据
<%
int i = 13 ;	
if (i == 12) {	
%>	
<h1>国哥好帅</h1>
<%
 	} else {
 	%>
<h1>国哥又骗人了!</h1>
<%
 	}
 	%>
<br>
<%--2.代码脚本----for 循环语句--%>
<table border="1" cellspacing="0">
<%
 	for (int j = 0; j < 10; j++) {
 	%>
<tr>
<td>第 <%=j + 1%>行</td>
</tr>
<%
 	}
 	%>
</table>
<%--3.翻译后java 文件中_jspService 方法内的代码都可以写--%>
<%
 	String username = request.getParameter("username");
 	System.out.println("用户名的请求参数值是:" + username);
 	%>
JSP中的三种注释
html注释
<!-- 这是html 注释 -->

html 注释会被翻译到 java 源代码中。在_jspService 方法里,以 out.writer 输出到客户端。

Java注释
<%
 	// 单行java 注释
 	/* 多行java 注释 */
%>

java 注释会被翻译到 java 源代码中。

JSP注释
<%-- 这是jsp 注释 --%>

jsp 注释可以注掉,jsp 页面中所有代码。

JSP九大内置对象

JSP 中的内置对象,是指 Tomcat 在翻译 jsp 页面成为 Servlet 源代码后,内部提供的九大对象,叫内置对象。

在这里插入图片描述

JSP四大域对象

对象名类有效范围
pageContextPageContextImpl 类当前 jsp 页面范围内有效
requestHttpServletRequest 类一次请求内有效
sessionHttpSession 类一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
applicationServletContext 类整个 web 工程范围内都有效(只要 web 工程不停止,数据都在)

域对象是可以像 Map 一样存取数据的对象。四个域对象功能一样。不同的是它们对数据的存取范围。

虽然四个域对象都可以存取数据。在使用上它们是有优先顺序的。

四个域在使用的时候,优先顺序分别是,他们从小到大的范围的顺序。

pageContext ====>>> request ====>>> session ====>>> application

scope.jsp 页面:

<%@ page contentType="text/html;charset=UTF-8"
         errorPage="/error.jsp"
         language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>jsp页面</h1>
<%
    pageContext.setAttribute("key","pageContext");
    request.setAttribute("key","request");
    session.setAttribute("key","session");
    application.setAttribute("key","application");
%>
    pageContext域的值是:<%=pageContext.getAttribute("key")%><br>
    request域的值是:<%=request.getAttribute("key")%><br>
    session域的值是:<%=session.getAttribute("key")%><br>
    application域的值是:<%=application.getAttribute("key")%>
</body>
</html>

scope2.jsp 页面

<%@ page contentType="text/html;charset=UTF-8"
         errorPage="/error.jsp"
         language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>jsp2页面</h1>
    pageContext域的值是:<%=pageContext.getAttribute("key")%><br>
    request域的值是:<%=request.getAttribute("key")%><br>
    session域的值是:<%=session.getAttribute("key")%><br>
    application域的值是:<%=application.getAttribute("key")%>
</body>
</html>

JSP中的out输出和response.getWriter输出的区别

response 中表示响应,我们经常用于设置返回给客户端的内容(输出)

out 也是给用户做输出使用的。

在这里插入图片描述

由于 jsp 翻译之后,底层源代码都是使用 out 来进行输出,所以一般情况下。我们在 jsp 页面中统一使用 out 来进行输出。避免打乱页面输出内容的顺序。

out.write() 输出字符串没有问题

out.print() 输出任意数据都没有问题(都转换成为字符串后调用的 write 输出)

结论:在 jsp 页面中,可以统一使用 out.print()来进行输出

JSP的常用标签

JSP静态包含

<%--
<%@ include file=""%> 就是静态包含
file 属性指定你要包含的jsp 页面的路径
地址中第一个斜杠 / 表示为http://ip:port/工程路径/ 映射到代码的web 目录
--%>

<%@ include file="/include/footer.jsp"%>

静态包含的特点:

  1. 静态包含不会翻译被包含的jsp 页面。
  2. 静态包含其实是把被包含的jsp 页面的代码拷贝到包含的位置执行输出。

JSP动态包含

<%--
<jsp:include page=""></jsp:include>	这是动态包含
page 属性是指定你要包含的jsp 页面的路径
动态包含也可以像静态包含一样。把被包含的内容执行输出到包含位置
--%>
<jsp:include page="/include/footer.jsp">
<jsp:param name="username" value="bbj"/>
<jsp:param name="password" value="root"/>
</jsp:include>

动态包含的特点:

1.动态包含会把包含的jsp 页面也翻译成为java 代码

2.动态包含底层代码使用如下代码去调用被包含的jsp 页面执行输出。

​ JspRuntimeLibrary.include(request, response, “/include/footer.jsp”, out, false);

3.动态包含,还可以传递参数

在这里插入图片描述

JSP标签**-**转发

<%--
<jsp:forward page=""></jsp:forward> 是请求转发标签,它的功能就是请求转发
page 属性设置请求转发的路径
--%>
<jsp:forward page="/scope2.jsp"></jsp:forward>

九九乘法口诀表

<%@ page contentType="text/html;charset=UTF-8"
         errorPage="/error.jsp"
         language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1 align="center">乘法口诀</h1>
<table align="center">
<%
    for (int i = 1;i < 10;i++){%>
    <tr>
    <%for(int j = 1;j <= i;j++){%>
            <td><%=j+"x"+i+"="+i*j+" "%><td/>
    <%}%>
    </tr>
<%}%>
</table>
</body>
</html>

JSP输出一个表格,里面有 10 个学生信息

在这里插入图片描述

Student 类:

package com.jsp.pojo;

/**
 * ClassName: Student
 * Description:
 * date: 2022/1/24 17:57
 *
 * @author Ekertree
 * @since JDK 1.8
 */
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private String phone;

    public Student() {
    }

    public Student(Integer id, String name, Integer age, String phone) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.phone = phone;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", phone='" + phone + '\'' +
                '}';
    }
}

SearchStudentServlet 程序:

public class SearchStudentServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取请求的参数
        //发sql语句查询学生的信息
        //使用for循环模拟生成查询到的数据
        List<Student> studentList = new ArrayList<Student>();
        for (int i = 0; i < 10; i++) {
            int t = i + 1;
            studentList.add(new Student(1+t,"name_"+t, 18+t,"100860"+t));
        }
        //保存查询到的结果(学生信息)到request域中
        request.setAttribute("studentList",studentList);
        //请求转发到showStudent.jsp页面
        request.getRequestDispatcher("showStudent.jsp").forward(request, response);
    }
}

showStudent.jsp 页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
    <style type="text/css">
      table{
        border: 1px blue solid; width: 600px;
        border-collapse: collapse;
      }
      td,th{
        border: 1px blue solid;
      }
    </style>
  </head>
  <body>
  <%
    List<Student> students = (List<Student>) request.getAttribute("studentList");
  %>
  <table align="center">
    <tr>
      <td align="center">id</td>
      <td align="center">姓名</td>
      <td align="center">年龄</td>
      <td align="center">电话</td>
    </tr>
<%for (Student student : students) {%>
    <tr>
      <td align="center"><%=student.getId()%></td>
      <td align="center"><%=student.getName()%></td>
      <td align="center"><%=student.getAge()%></td>
      <td align="center"><%=student.getPhone()%></td>
    </tr>
<%}%>
  <table/>
  </body>
</html>

什么是 Listener 监听器?

  1. Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。
  2. Listener 它是 JavaEE 的规范,就是接口
  3. 监听器的作用是,监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做一些相应的处理。

ServletContextListener监听器

ServletContextListener 它可以监听 ServletContext 对象的创建和销毁。ServletContext 对象在 web 工程启动的时候创建,在 web 工程停止的时候销毁。监听到创建和销毁之后都会分别调用 ServletContextListener 监听器的方法反馈。

两个方法分别是:

 @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("对象被创建");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("对象被销毁");
    }

如何使用 ServletContextListener 监听器监听 ServletContext 对象。

使用步骤如下:

  1. 编写一个类去实现 ServletContextListener
  2. 实现其两个回调方法
  3. 到 web.xml 中去配置监听器

监听器实现类:

public class MyServletContextListenerImpl implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("对象被创建");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("对象被销毁");
    }
}

web.xml 中的配置:

<listener>
        <listener-class>com.jsp.listener.MyServletContextListenerImpl</listener-class>
</listener>
JSP的学习 JSP(全称 Java Server Pages)Java 服务端页面技术,是 JavaEE 平台下的技术规范。它允许使用特定的标签在 HTML 网页中插入 Java 代码,实现动态页面处理,所以 JSP 就是 HTML 与Java 代码的复合体。JSP 技术可以快速的实现一个页面的开发,相比在 Servlet 中实现页面开发将变得更加容易。3、请求转发案例需求:在 Servlet 中获取客户端浏览器所支持的语言,并通过 JSP 页面将客户端浏览器所支持的语言响应给客户端浏览器。 阅读详情

相关推荐

JSP(Java Server Pages)动态网页开发技术1

一:软件分为2种架构: 1. C/S client/server 客户端/服务器架构, 都是一些窗口式程序,也就是说,要使用cs架构的软件,我们必须下载客户端安装程序,安装好以后,才能用安装好的软件去连接服务器。比如: qq聊天软件。 2. B/S browser/server 浏览器/服务器架构,都是用浏览器直接连接服务器的,使用b/s架构的软件,不需要提前下载任何安装程序,只需要打

weixin_33645586的博客 7068

第 8 章 jsp

1、什么是 jsp, 它有什么用? jsp 的全换是 java server pages。 Java 的服务器页面。 jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据。 因为 Servlet 程序回传 html 页面数据是一件非常繁锁的事情。 开发成本和维护成本都极高。 Servlet 回传 html 页面数据的代码 : public class PringHtml extends HttpServlet { @Override protected void doGe

weixin_43514899的博客 581

28、Java Server Pages(JSP)的使用与实践

本文详细介绍了Java Server Pages(JSP)在Web开发中的使用与实践,涵盖jsp:param标签、JSP在MVC架构中的作用、调试方法、部署步骤以及具体的项目实战。通过构建ChalkTalk应用程序,演示了JSP页面、Servlet控制器、会话跟踪和过滤器的完整实现流程,并提供了关键技术点分析、注意事项和未来扩展方向,帮助开发者深入理解和应用JSP与Servlet技术。

flink9streamer的博客 66

JSP的使用

jsp全称Java Server Pages(Java 的服务器页面),是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。JSP是一种,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。JSP 这门技术的最大的特点在于,写 JSP 就像在写 HTML相比 html 而言,html 只能为用户提供静态数据,而 JSP 技术允许在页面中嵌套 java 代码,为用户提供动态数据。

喃灬疯的博客 4345

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 339

Isaac Sim 车辆动力学:从参数调优到户外仿真的挑战与实战

本文深入探讨了Isaac Sim在车辆动力学仿真中的应用,从参数调优到户外场景模拟的实战经验。详细解析了悬架系统、轮胎物理模型等核心参数的设置技巧,并分享了应对户外仿真挑战的实用方案。通过Vehicle Wizard高级使用和传感器配置,帮助开发者高效完成车辆仿真与算法开发。

weixin_29192211的博客 403

JSP基础 web服务器如何访问 jsp 页面

JSP JSP全名为Java Server Pages,中文名叫 java服务器页面,其简单来说就是一个servlet 。 JSP可以跨平台使用,既能运行在Linux操作系统上,也可以运行在Windows操作平台上。 在传统的HTML文件中,加入了java代码。 如何在jsp中写入java代码呢? 1.获得变量的值 <%=new Date()%>> 2. 定义局部变量...

你好,Java!的博客 3626

从Wi-Fi到蓝牙:手把手教你用Cadence Virtuoso搭建一个2.4GHz锁相环频率综合器(含PFD/CP/VCO模块设计)

本文详细介绍了如何在Cadence Virtuoso中设计一个2.4GHz锁相环频率综合器(PLL),涵盖从系统架构到模块级设计的全流程。重点解析了PFD、CP和VCO等核心模块的设计技巧与仿真验证方法,帮助模拟集成电路设计师掌握高频PLL的实现要点,满足Wi-Fi和蓝牙等无线通信标准的要求。

weixin_30315723的博客 417

JSP——Java Server Pages(java服务器页面)

JSP——Java Server Pages(java服务器页面) JSP页面实际上是一个简化的Servlet设计。 1.JSP和Servlet的优缺点: jsp  方便显示  不方便处理业务逻辑 servlet  方便处理业务逻辑  不方便显示 2.JSP页面运行原理: JSP容器将JSP转译成servlet,通过servlet容器来启动和执行 3.注解

qq_28316065的博客 3075

通达信股本变迁文件(gbbq)解密方法

近年来A股市场跌宕起伏真特么精彩,本人愚钝,被整爆仓,损失惨重 痛定思痛,认为交易这种对纪律要求极高,且必须完全排除情绪影响的勾当,还是应该交给程序来干 数据哪里来呢?当然是拿来主义。。。问券商的交易软件要呗 到处查资料,得知通达信的权息文件数据齐全,不仅含有除权除息数据,还含有限售解禁、增发、可转债上市等股本变化数据 ——这对于某些对成交量变化敏感的交易模型是非常重要的

不甘碌碌老,结庐铸宝刀 2万+

Arnold Denoise流程

参考:https://support.solidangle.com/display/ARP/Removing+Noise+Workflow Arnold生来不是一个以单帧渲染速度见长的渲染器,但这并不能作为一个简单场景渲染时间长达几个小时的借口。 个人认为高品质生产级渲染结果中,Unbiased renderer在渲染时最耗计算时间的其实就是降噪,以至于降噪专门成了一门灯光师必备的技术

机器猫的CG空间 5084

动态网页开发技术之JSP(Java Server Pages)

温馨提醒: 1)本文干货较多,如果只想了解其中的某一部分,也可以利用左边目录进行索引。 2)代码的具体实现可以参考代码中的注释,如果由于注释不清楚而不明白相应原理,可以与作者私聊,欢迎互相交流、进步。 3)文笔有限,如若有对该博客不清楚的地方可以私信作者或者在底下评论,我一定会第一时间回复。 4)码字不易,干货连连,有兴趣的小伙伴点个赞呗,大家相互学习。 1 前序知识——在IDEA中创建一个Web应用 2 JSP的定义 JSP的全换是Java Server Pages,表示的是Java的服务器页面。它.

weixin_44262126的博客 2119

spdk + fio测试nvme 设备的性能

fio的测试对象可以是块设备、文件等,在spdk的使用过程中会unbind默认的nvme driver,所以在系统中是看不到nvme块设备的,在spdk中可以通过fio_plugin的方式,将spdk的用户态driver部分的io功能打包成一个ioengine提供给fio使用,可以综合spdk的高性能和fio提供的复杂场景。更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加。这个jobfile是spdk中提供的例子。领取,关注我持续更新哦!2.7 jobfile的例子。

lingshengxiyou的博客 1088

JSP(Java Server Pages)— java服务器端页面

概念 JSP(Java Server Pages)— java服务器端页面 * 可以理解为:一个特殊的页面,在HTML界面写java代码,后缀名改成了.JSP的形式 * 运行在服务端的语言 * 用于简化书写! * JSP本质上就是一个Servlet,在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。 注释 1. html注释: ...

有道无术,术尚可求,有术无道,止于术。 770

YOLO26涨点改进 | 检测头改进篇 | 利用ASFF改进YOLO26检测头,自适应空间特征融合模块,在所有的目标检测上均有大幅度的涨点效果

本文提出了一种自适应空间特征融合(ASFF)检测头YOLO26,用于解决目标检测中特征金字塔跨尺度特征不一致的问题。ASFF通过学习空间权重图,自适应地融合不同尺度的特征,抑制特征层间的冲突信息。实验表明,该方法在MSCOCO数据集上显著提升了检测精度(45FPS下AP达42.4%),且仅引入极小推理开销。ASFF模块具有可微分性、模型无关性和计算成本低等优势,能够有效改善特征尺度不变性,实现速度与精度的良好平衡。文章详细介绍了ASFF的原理、实现代码及其在YOLO模型中的集成方法。

Ai缝合怪、助力小伙伴高效发论文 547

基于NSGA2算法的无人机三维路径规划MATLAB实现

传统的路径规划方法多采用启发式搜索算法,然而这些方法往往带着局限性,不能有效地克服无人机飞行任务中所遇到的复杂环境与约束。而基于遗传算法的NSGA2(Non-dominated Sorting Genetic Algorithm II)方法则可以在优化目标之间找到最好的平衡点,是一种十分优秀的解决方案。本文介绍了基于NSGA2算法的无人机三维路径规划MATLAB实现。NSGA2算法是一种多目标优化算法,通过非支配排序和拥挤度距离来评估个体的适应度和选择新个体,从而产生一组非支配解。3.选择新个体组成P1;

CyberLynxX的博客 982

[学习]Java Server Pages (JSP)[页端开发]

实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。是一种动态网页开发技术。网页中插入Java代码。特征: 通过请求来实行。

Metakazu的博客 485

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jsp(Java Server Pages)

1. JSP=Java Server Pages java服务器端页面2. 程序员在开发过程中,发现Servlet做界面非常不方便,所以产生了jsp技术,JSP其实是对Servlet进行了包装而已。3.jsp底层是基于Servlet封装, jsp + java类(service、javabean)+ servlet,就会构成mvc的开发模式,mvc模式是目前软件公司中相当通用的开发模式。

qq_53464269的博客 1821

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JSP简介-什么是Java Server Pages?

JSP全称是Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以&lt;%开始以%&gt;结束。 JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。 JSP通过网页表单获取用户输入数据、访问...

6069

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

JSP(Java Server Pages) 技术

目录 1.jsp简介 2.jsp的运行原理 3.jsp和servlet的区别和联系 4.JSP指令 5.EL表达式 6.JSP九大内置对象 7.JSP动作标签 8.JSTL(JavaServer Pages Standard Tag Libary,JSP标准标签库) 1.jsp简介 中文全称“java服务器页面”,其本质是一个简化的servlet Jsp的概念:是指java服务器...

qq_45521013的博客 4641

Java Server Pages (JSP):动态网页开发的基石

Java Server Pages (JSP) 作为Java Web开发的重要组成部分,不仅为开发者提供了强大的动态网页生成能力,还紧密集成了Java生态系统的各种工具和框架。尽管前端技术日新月异,但JSP在后端处理和动态内容生成方面的优势仍然不可替代。通过深入理解JSP的基本概念、核心特性、工作原理以及应用场景,开发者能够更好地利用这一技术,构建高效、可维护的Web应用。在未来的Web开发中,JSP将继续发挥其独特的作用,为构建更加智能、互动的Web体验贡献力量。

2403_86822198的博客 902

500错误无法为jsp编译类:_JSP(Java Server Pages)的相关使用

JSP,即Java Server Pages,可解释为ava服务器页面,其根本是一个简化的Servlet设计;Jsp也是一种动态网页技术!( 指数据的动态显示 )注:以下内容均是在tomcat服务器下1、JSP的执行过程【1】.浏览器输入一个jsp页面【2】.tomcat会接受*.jsp请求,将该请求发送到org.apache.jasper.servlet.JspServlet去处理【3】.Jsp...

weixin_39623713的博客 1478
上一篇: 数据结构与算法
下一篇: EL表达式与JSTL标签库
Sancean
博客等级 码龄6年 2472粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值