JSP
JSP简介
Java Server Page,是前端交互的页面,与静态页面不同,JSP可以动态的处理用户的数据,其本质上是一种Servlet。
Servlet+JSP模式:
Servlet职责:
-
接收参数
-
处理业务逻辑
-
将结果存到域对象中
-
跳转到JSP页面
JSP职责:
- 从域对象中取出数据
- 将数据打印到前端中
开发原则:尽量不要再JSP页面中放入过多的Java代码
JSP原理
在早期没有JSP的年代,开发人员还是用Servlet,调用写方法,将HTML文件一行一行的写出去,达到向网站输出HTML文件与动态数据的目的,但是由于过于繁琐,后面开发出一种新的文件JSP,JSP看上去与HTML文件没什么不同,只是可以嵌套Java代码,具体流程是:
当用户访问jsp资源时,服务器会根据jsp资源,自动生成java文件并且编译成class文件,而查看该class文件时可以发现, 该jsp会继承HttpJspBase类,而HttpJspBase类又是HttpServlet的子类,因此,访问jsp实际上就是在访问Servlet
本机的路径是C:\Users\12902\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Unnamed_JavaWeb_2\work\Catalina\localhost\Servlet_war_exploded\org\apache\jsp
在jsp所生成的class文件中,有些地方与servlet是类似的:
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(HttpServletRequest request,HttpServletResponse response){
}
另外,以index.jsp为例,打开其index_jsp.class文件,可以发现其中声明的内置对象:
final javax.servlet.jsp.PageContext pageContext; //页面上下文
javax.servlet.http.HttpSession session = null; //session对象
final javax.servlet.ServletContext application; //ServletContext对象
final javax.servlet.ServletConfig config; //config对象
javax.servlet.jsp.JspWriter out = null; //Writer对象
final java.lang.Object page = this; //当前Jsp对象
request //请求
response //响应
通用代码结构
JSP指令
JSP有三大指令,分别是page,include,taglib
指令的作用:对当前JSP页面进行配置,可以理解成注解?
指令的格式
<%@page 属性名1=属性 属性名2=属性%>
- page指令: