目录
JSP本质:JSP本质是一个JAVA程序(Servlet)。
通过查看JSP相关的帮助文档或源码,可以发现JSP和Servlet的关系。
在编译器中(示范为IDEA),任意写一个JSP程序。如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>
这是一个JSP_Demo
</h1>
</body>
</html>
启动服务器,通过浏览器进行访问后。得到如下页面:
在编译器上服务器的控制端,找到CATALINA_BASE,如图:
复制 CATALINA_BASE,在硬盘中找到对应的地址。会有如下的文件夹目录
其中,conf目录下是一些配置文件,logs目录下是日志,work就是服务器工作目录。进入work目录,点击Catalina/localhost/JSP/org/apache/jsp,找到如下的文件。
到这里,就验证了,JSP其实就是一个java程序的说法,进入Demo_jsp.java。 会发现,一个.jsp程序是继承一个HTTPJspBase程序,一个HTTPJspBase程序是继承HttpServlet。所以,JSP的本质其实就是一个Servlet。
public final class Demo_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {}
/***********************/
public abstract class HttpJspBase extends HttpServlet implements HttpJspPage {}
JSP实现原理:
JSP是通过Web服务器将.jsp文件翻译为.java文件,再进行编译生成.class文件,最后执行.class文件。
JSP基础语法:
JSP中最基础的语法有4个:
如果一段语句直接写在.jsp程序中,就会在服务器进行翻译时,直接输出到浏览器端,和输出流输出到浏览器端效果相同。
如果是在<%%>中写的内容,会被当做java代码,直接翻译在.java生成的service方法中。所以在这个标签中,写的所有内容必须符合在一个普通java方法中书写的规范。
在<%!%>中的内容,会被翻译到类体中,所以可以用来书写全局变量或者静态代码块,但是需要注意线程安全问题。
<%=%>相当于一个out.print();,在<%=%>标签中写的内容会直接放在out,print(String s),方法的参数中。
<%@page%>指令标签,可以使用可以设置多个变量的值,例如
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
就可以设置响应类型和字符类型。
当然JSP中的语句中还有许多别的属性会常常用到,这里仅列举小部分。