JavaWeb学习打卡13(JSP原理解析)
什么是JSP
JSP(全称:Java Server Pages):Java服务器端页面,也和Servlet 一样,用于动态Web 技术!
JSP最大特点:
- 写JSP就像写HTML
- 区别:
- HTML只给用户提供静态的数据
- JSP页面中可以嵌入JAVA代码,为用户提供动态是数据;
JSP原理
思路:JSP到底怎么执行的!
- 服务器内部工作
- tomcat 中有一个work 目录
- IDEA 中 使用 Tomcat 会在IDEA 的 tomcat 中生成一个work 目录
- 我电脑地址为:
D:\Environment\apache-tomcat-9.0.46\work\Catalina\localhost\ROOT\org\apache\jsp
发现页面转变成了Java程序!
JSP文件的经历过程:
由此可以知道:
- 浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet !
- JSP最终也会被转换成一个Java类
- JSP本质上就是一个Servlet
1、JSP 内置的一些对象:
2、JSP在输出页面前会增加以下代码:
3、以上这些 内置对象,我们可以在编写 JSP 页面时,可以直接使用!
在JSP页面中,只要是JAVA代码就会原封不动的输出;
如果是HTML代码,就会转换为 java 代码
eg:
我们我们在 index.jsp 文件同一目录下创建一个 hello.jsp 文件:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><%String name = "xiaoxu"; %> <%=name%></body> </html>
运行结果:
JSP 基础语法
任何语言都有自己的想法,JAVA中有。JSP 作为Java 技术的一种应用,它拥有一些自己扩充的语法(了解即可!),Java所有语法都支持!
JSP表达式和脚本片段 :
可以把JSP表达式: <%= a%> 用EL表达式代替 :${ a }
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html><head><title>$Title$</title></head><body><%-- JSP表达式 格式 : <%= 变量或者表达式 %> 作用:用来将程序的输出,输出到客户端 --%> <%= new java.util.Date()%><hr><%-- JSP 脚本片段 --%> <%int sum = 0;for (int i = 0; i <= 100; i++) {sum+=i;}out.println("<h1> Sum = "+sum+"</h1>"); %></body> </html>
运行结果:
JSP 声明 (在 % 后加 ! )会被编译到 SP 生成 Java 类中,而上面的Jsp表达式和脚本片段,就会被生成到_jspServlet 方法中
在JSP中,嵌入Java代码即可!
<%--JSP 声明--%> <%!static {System.out.println("Loading Servlet!");}private int globalvar = 0;public void xiaoxu(){System.out.println("进入了方法xiaoxu");} %>
JSP表达式语法总结:
<%%> //脚本片段 <%=%> //jsp 表达式输出一个值 <%!%> //定义全局的方法 <%-- JSP的注释 --%> //注释 <!-- HTML的注释 --> //注释
JSP的注释,不会在客户端显示,HTML的注释就会显示!
JSP自定义错误页面:
方法一:
我们先在 index.jsp 文件的同一目录下新建一个jsp2 .jsp 文件,用来填写错误,和发生错误的页面跳转:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%--自定义错误页面--%> <%@ page errorPage="error/500.jsp" %><html> <head><title>Title</title> </head> <body><%int x = 1/0; %></body> </html>
随后按以下目录创建文件夹和文件,并找一张500页面报错的png文件:
在500.jsp 文件中写:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <img src="../img/500.png" alt="500"> </body> </html>
运行结果:
自定义错误页面 ,方法二:
直接在 error 文件夹下 ,创建一个 404.jsp 文件,并编写该页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><h1>自定义的404页面 </h1> </body> </html>
然后在 web.xml 文件中定义错误发生时的页面跳转:
<error-page><error-code>404</error-code><location>/error/404.jsp</location></error-page>
运行结果: