JSP
- 概念:Java Server Pages,JSP部署在Web服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。
JSP工作流程
-
1.客户端浏览器发送HTTP请求到服务器端
-
2.Web服务器会根据请求的URL地址或者.jsp文件识别到改请求是一个JSP网页请求,并将该请求转发给JSP引擎
-
3.JSP引擎会根据请加载对应的jsp文件,并将该jsp文件转化为servlet类文件(xxx.java)
-
4.同时JSP引擎会将该servlet类文件编译为可执行的类(xxx.class),并将对应的原始请求转发给Servlet引擎
-
5.接收到请求的Servlet引擎会根据请求加载对应的servlet文件
JSP的本质就是一个Servlet类
- 在jsp页面中:
- 如果是java代码就会原封不动的输出
- 如果是html代码,就会转化成out.write("\r\n")的格式输出到前端页面
JSP表达式
- <% %>————片段
- <%= %>———— 变量
- <%! %>————全局方法
- <%-- JSP注释–%>————注释
- < !-- html-- >————注释
- 注意:jsp注释页面中不会显示,html注释在查看代码中可以显示
自定义错误页面
- 编写页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--自定义错误页面--%>
<img src="../photo/500.jpg" alt="500">
</body>
</html>
- 在web.xml中配置
<error-page>
<error-code>404</error-code>
<location>/Error/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/Error/500.jsp</location>
</error-page>
JSP九大内置对象
- OUT ———— 输出流对象
- 服务器向客户输出的字符内容可以通过out对象输出
- Request ———— 请求对象————存东西
- 包含客户端的信息和请求信息
- 每次客户端的请求都会产生一个request实例
- Respense ———— 响应对象
- 服务器端的任何响应都由response对象输出到客户端浏览器
- 每次服务端都会响应一个response实例
- Config ———— 配置对象
- JSP中靠config获取参数
- 每个JSP文件中都有一个config对象
- Session ———— 会话对象————存东西
- session和cookie都是记录客户访问信息的机制
- session是保存在服务器端
- cookie是保存在客户端
- 每一个用户对应一个session对象
- Application ———— 应用程序对象————存东西
- 封装JSP所在Web应用程序的信息
- 每个Web对应一个application
- Page ———— 配置页面对象
- 代表当前jsp页面
- 是当前jsp编译后的servlet类对象
- 相当于java类中的this
- PageContext ———— 页面上下文对象————存东西
- 代表当前jsp页面编译后的内容
- Exception ———— 异常对象
- 封装了jsp中抛出的异常信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--jsp内置对象--%>
<%
// 存数据
pageContext.setAttribute("key01","当前页面数据"); // 当前页面有效
request.setAttribute("key02","新闻"); // 请求转发有效
session.setAttribute("key03","购物车"); // 浏览器从开到关有效
application.setAttribute("key04","聊天数据"); // 服务器从开到关有效
%>
<%
// 取数据
String key01 = (String) pageContext.findAttribute("key01");
String key02 = (String) pageContext.findAttribute("key02");
String key03 = (String) pageContext.findAttribute("key03");
String key04 = (String) pageContext.findAttribute("key04");
String key05 = (String) pageContext.findAttribute("key05"); // 不存在
%>
<h3>${key01}</h3>
<h3>${key02}</h3>
<h3>${key03}</h3>
<h3>${key04}</h3>
<%--不显示--%>
<h3>${key05}</h3>
<%--显示为null--%>
<h3><%=key05%></h3>
</body>
</html>
页面跳转01
</head>
<body>
<%
pageContext.forward("/pageContextDemo01.jsp");
%>
</body>
</html>
页面跳转02————此时key02数据会显示出来
<%
// 存数据
pageContext.setAttribute("key01","01当前页面数据"); // 当前页面有效
request.setAttribute("key02","02新闻"); // 请求转发有效
session.setAttribute("key03","03购物车"); // 浏览器从开到关有效
application.setAttribute("key04","04聊天数据"); // 服务器从开到关有效
%>
<%
pageContext.forward("/pageContextDemo02.jsp");
%>
JavaBean
- 概念:是一种JAVA语言写成的可重用组件。
- 要求:
-
- 类必须是具体的和私有的
-
- 并且具有无参数的构造器
-
- 必须有set/get方法
JavaBean可分为两种
- 一种是有用户界面(UI,User Interface)的JavaBean;
- 一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean
JSP通常访问的是后一种JavaBean
- 创建一个java类,和数据库中的表对应
public class people {
private String name;
private int age;
private String sex;
public people(){}
public people(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
......
- 编写javabean
<%@ page import="pojo.people" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--设置数据--%>
<jsp:useBean id="people" class="pojo.people" scope="page"/>
<jsp:setProperty name="people" property="name" value="张三"/>
<jsp:setProperty name="people" property="age" value="20"/>
<jsp:setProperty name="people" property="sex" value="女"/>
<%--输出数据--%>
<p>
姓名:<jsp:getProperty name="people" property="name"/>
</p>
<p>
年龄:<jsp:getProperty name="people" property="age"/>
</p>
<p>
性别:<jsp:getProperty name="people" property="sex"/>
</p>
</body>
</html>