JSP原理分析
什么是JSP
Java Server Pages:Java服务器端页面,也和servlet一样,用于动态web技术。
最大的特点:
-
写JSP就像在写HTML
-
区别:
- :HTML只给用户提供静态的数据
- :JSP页面中可以嵌入Java代码,给用户提供动态数据
JSP原理:
思路:JSP到底怎么执行
- 代码里面没有任何问题
- 服务器内部工作
- tomcat中有一个work目录
- IDEA中使用tomcat的会在IDEA的tomcat中生产一个work目录
- tomcat中有一个work目录
- 浏览器向服务器发送请求,不管访问什么资源,都是在访问servlet。
JSP最终也会被转换成一个Java类,本质上就是servlet
初始化,销毁,jspservlet

- 判断请求
- 内置一些对象
- 输出页面前增加的代码
- 以上的内置对象可以在JSP页面直接使用
- 在JSP页面中只要是Java代码就会原封不动的输出,只要是HTML代码就会转换成:
out.print("<html>\r\n");
这样的格式输出到前端
JSP基础语法
任何语言都有自己的语法:jsp作为Java技术中的一种应用,它拥有一些自己的扩充的语法(了解,知道即可),Java所有语法都支持。
JSP表达式
tomcat选择war exploaded可以实现热部署
升级资源。(第二个)
JSP脚本片段
<%--JSP脚本片段--%>
<%
int sum=0;
for (int i=0;i<100;i++){sum+=i;}
out.println("<h1>sum"+sum+"<h1>");
%>
脚本片段的再实现
<%
int x = 10;
out.println(x);
%>
<P>这是一个JSP文档</P>
<%
for (int i=0;i<4;i++){
%>
<h1>HELLO <%= i%></h1>
<%}
%>
JSP声明
<%!static {System.out.println("loading servlet");}private int globalVar=0;public void xin(){System.out.println("进入了方法");}
%>
jsp声明:会被编译到jsp生成到Java类中!其他的就会被生成到jspservlet方法中!
在JSP中嵌入Java代码即可
jsp的注释不会在客户端显示,html就会
JSP指令
<%@page args...%>
例如设置一个500报错页面:
直接访问500.jsp会找不到图片,同样是路径问题,这里可以改成${pageContext.request.contextPath}/img/500.png,或者不把图片另放在img的包下,直接放在resource,或者不加前缀。第一种最实用。
-
<%@includefile="common/..."%>
,
include会将页面合二为一,变成一个页面,容易出现页面变量定义重复的问题。...是指需要嵌入的项目路径如:2.jsp -
<jsp:include page="...">
本质还是有三个页面
9大内置对象
- PageContext
- Request
- Response
- Session
- Application(servletcontext)
- config(serveltconfig)
- out
- page
- exception
1-5是用来存东西
pageContext
request
session
application
作用域从低到高
JSP,JSTL标签,EL表达式
</dependency><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency>
EL表达式:${}
- 获取数据
- 执行运算
- 获取web开发的常用对象
4. 调用Java