javaweb - 210406 - 01
- JSP简介
- JSP原理
- JSP基础语法
- JSP表达式 JSP脚本片段 JSP声明
- 注释 页面错误 JSP标签 9大内置对象
JSP简介
JSP JavaServer Pages :Java服务器端页面,和Servlet一样,用于动态Web技术
JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
JSP原理
原理:
浏览器向服务器端发送请求,不管访问什么资源,其实都是在访问Servlet!
JSP最终也会转换成为一个Java类!
JSP本质上就是一个Servlet!
我的编译路径
C:\Users\白光一\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat
JSP 基础语法
JSP表达式
在jsp页面中:
只要是Java代码就会原封不动的输出,,,
如果是HTML代码,就换被转换成
out.write("name");
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jspTest01</title>
</head>
<body>
<%
String name = "白光一";
%>
name:<%=name%>
</body>
</html>
我的编译路径

JSP脚本片段
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jspTest2</title>
</head>
<body>
<%--
jsp表达式
作用:用来将程序输出,输出到客户端
<%=变量 / 表达式%>
--%>
<%=new java.util.Date()%>
<hr/>
<%--jsp脚本片段--%>
<%
int x = 10;
out.println(x);
%>
<br/><br/>
<%
int sum = 0;
for (int i = 0; i <= 100; i++) {
sum += i;
}
out.println("<h2>sum = " + sum +" </h2>");
%>
<hr/>
<%--在代码中嵌入HTML代码--%>
<%
for (int i = 0; i < 3; i++) {
%>
<h2>hello,bgy<%=i%></h2>
<%
}
%>
</body>
</html>
JSP声明
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jspTest3</title>
</head>
<body>
<%!
static {
System.out.println("Servle Is Loading!!!");
}
public int globalNum = 2021;
public void test(){
System.out.println("进入test()方法中!!!!!!!");
}
%>
<%
out.print(globalNum);
test();
%>
</body>
</html>
注释
HTML注释:
<!----> 网页会显示注释内容
JSP注释:
<%----%> 网页不会显示注释内容
错误页面
jspTest04.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page pageEncoding="UTF-8" %>
<%--<%–定制错误页面–%>--%>
<%--<%@ page errorPage="error/500.jsp" %>--%>
<%--显示的声明这是一个错误页面--%>
<%@page isErrorPage="true" %>
<html>
<head>
<title>error500</title>
</head>
<body>
<%
int x = 1/0;
System.out.println(x);
%>
</body>
</html>
404.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>error404</title>
</head>
<body>
<img src="/img/error404.jpg" alt=""/>
</body>
</html>
500.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>error500</title>
</head>
<body>
<img src="/img/error500.jpg"/>
</body>
</html>
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<error-page>
<error-code>500</error-code>
<location>/error/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
</web-app>
JSP标签
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jspTest05</title>
</head>
<body>
<%-- @include会把连个页面合二为一 --%>
<%@include file="common/header.jsp"%>
<h2>主体</h2>
<%@include file="common/footer.jsp"%>
<br/>
<hr/>
<br/>
<%--
JSP标签库
拼接页面,本质上还是三个
--%>
<jsp:include page="common/header.jsp"/>
<h2>主体</h2>
<jsp:include page="common/footer.jsp"/>
</body>
</html>
9大内置对象
PageContext 存东西
Request 存东西
Response
Session 存东西
Application 【ServletContext】存东西
config 【ServletConfig】存东西
out
page
exception
// 保存的数据只在一个页面中有效
pageContext.setAttribute("name01","bgy01");
// 保存的数据只在一次请求中有效,请求转发会携带这个数据
request.setAttribute("name02","bgy02");
// 保存的数据只在一次会话中有效,从打开浏览器到关闭
session.setAttribute("name03","bgy03");
// 保存的数据只在服务器中有效,从打开服务器到关闭
application.setAttribute("name04","bgy04");
// 从pageContext去出,通过find的方式来取出
// 作用域从低到高
String name01 = (String) pageContext.findAttribute("name01");
String name02 = (String) pageContext.findAttribute("name02");
String name03 = (String) pageContext.findAttribute("name03");
String name04 = (String) pageContext.findAttribute("name04");
String name05 = (String) pageContext.findAttribute("name05");
request:
客户端向服务器发送请求,产生的数据,用户看完了就没用了,比如,新闻。。。
session:
客户端向服务器发送请求,产生的数据,用户用完了可能还会用,,比如,购物车。。。
application:
客户端向服务器发送请求,产生的数据,一个用户用完了,可能下个用户还会用,,,
jspTest06.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--必须加上这东西--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>jspTest06</title>
</head>
<body>
<%--内置对象--%>
<%
// 保存的数据只在一个页面中有效
pageContext.setAttribute("name01","bgy01");
// 保存的数据只在一次请求中有效,请求转发会携带这个数据
request.setAttribute("name02","bgy02");
// 保存的数据只在一次会话中有效,从打开浏览器到关闭
session.setAttribute("name03","bgy03");
// 保存的数据只在服务器中有效,从打开服务器到关闭
application.setAttribute("name04","bgy04");
%>
<%--
脚本中的代码,会原封不动的生成到xxx.jsp.java中
这里的代码必须保证Java语法正确性
--%>
<%
// 从pageContext去出,通过find的方式来取出
// 作用域从低到高
String name01 = (String) pageContext.findAttribute("name01");
String name02 = (String) pageContext.findAttribute("name02");
String name03 = (String) pageContext.findAttribute("name03");
String name04 = (String) pageContext.findAttribute("name04");
String name05 = (String) pageContext.findAttribute("name05");
%>
<%-- 使用EL表达式输出 ${} --%>
<h3>${name01}</h3>
<h3>${name02}</h3>
<h3>${name03}</h3>
<h3>${name04}</h3>
<h3>${name05}</h3>
<hr/>
<%=name01%>
<%=name02%>
<%=name03%>
<%=name04%>
<%=name05%>
</body>
</html>
jspTest07.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jspTest07</title>
</head>
<body>
<%
// 可以手动把作用域改变,这里把他变成APPLICATION_SCOPE的作用域
// 就相当于 session.setAttribute("test01","test01");
pageContext.setAttribute("test01","test01",PageContext.APPLICATION_SCOPE);
%>
<%
pageContext.forward("/index.jsp");
request.getRequestDispatcher("/index.jsp").forward(request,response);
%>
</body>
</html>
本文深入介绍了JSP技术的基础知识,包括其工作原理、语法特点及九大内置对象的应用。通过实例展示了如何利用JSP动态生成Web页面,适用于初学者了解JSP的基本概念和技术要点。

被折叠的 条评论
为什么被折叠?



