一 什么是JSP
Java server pages :java服务器端页面,用于动态web技术
与html区别:jsp页面中可以嵌入Java代码,为用户提供动态数据
html只能提供静态数据
二 原理
1.服务器内部工作
IDEA中使用Tomcat的会在IDEA的tomcat中产生一个work目录
我的电脑地址:
C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2021.2\tomcat\14243155-7ba0-4051-9234-f47d597a2f36\work\Catalina\localhost\hello\org\apache\jsp
发现页面转变成了java程序
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet
JSP最终也会转变成一个java类
JSP本质就是一个Servlet
//初始化
public void _jspInit() {
}
//销毁
public void _jspDestroy() {
}
//JSPService
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
1.配置请求
2.内置一些对象
final javax.servlet.jsp.PageContext pageContext; //页面上下文
javax.servlet.http.HttpSession session = null; //session
final javax.servlet.ServletContext application; //applicationContext
final javax.servlet.ServletConfig config; //config
javax.servlet.jsp.JspWriter out = null; //out
final java.lang.Object page = this; //page:当前
final javax.servlet.http.HttpServletRequest request //请求final javax.servlet.http.HttpServletResponse response //响应
3.输出爷面前增加的代码
response.setContentType("text/html"); //设置响应的页面类型
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;
4.以上对象可以再JSP页面中直接使用
在JSP页面中:
只要是JAVA代码就会原封不动的输出
如果是HTML代码,就会被转换为 out.write(“name:”),输出到前端
三 JSP基础语法
任何语言都有自己的语法,jsp作为java会输的一种应用,他拥有一些自己扩充的语法,Java所有语言都支持
JSP表达式
<%--JSP表达式 作用:用于将程序的输出,输出到客户端 <%= 变量或者表达式%> --%> <%= new java.util.Date()%>
JSP脚本片段
<%-- 脚本片段--%> <% int sum=0; for (int i =1;i<100;i++){ sum+=1; } out.println("<h1>Sum"+sum+"</h1>"); %>
脚本片段的再实现
<%-- 在代码中嵌入html元素--%> <% for (int i =0 ;i<5;i++){ %> <h1>Hello,word <%=i%></h1> <% } %>
JSP声明
<%--JSP声明--%> <%! static { System.out.println("Loading Servlet"); } private int globalVar=0; public void kuang(){ System.out.println("进入方法kuang"); } %>
会被编译到JSP声场Java类中,其他的会被生成到Service方法中,在jsp中,嵌入java代码即可
<%%>片段
<%=%>表达式输出一个值
<%!%>设置全局片段
<%--注释--%>注释
JSP<%----%>的注释不会在客户端显示,HTML的注释<!---->会显示
四 JSP指令
<%@page args....%>
<%@include file=“”%>
五 9大内置对象
PageContext 存东西
Request 存东西
Response
Session 存东西
Application {ServletContext} 存东西
Config {ServletConfig}
Out
Page
Exception
pageContext.setAttribute("name1","1");//保存的数据在页面中有效
request.setAttribute("name2","2");//保存的数据只在一次请求中有效,请求转发会携带这个书库
session.setAttribute("name3","3");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute("name4","4");//保存的数据只在服务器中有效,打开服务器到关闭服务器
request:客户端向服务发送请求,产生的数据,用户看完就没用了,比如新闻
session:客户端向服务发送请求,产生的数据,用户看完一会还有用,比如购物车
application:客户端向服务发送请求,产生的数据,一个用户用完了,其他用户还可能使用,聊天
六 JSP标签、JSTL标签、EL表达式
EL表达式: ${ }
获取数据、执行运算、获取web开发的常用对象
略