一、什么是JSP
Java Server Page:Java服务器端页面,也和Servlet一样,用于动态Web技术
最大的特点:
- 写JSP就像在写HTML
- 区别:
- HTML只给用户提供静态的数据
- JSP页面中可以嵌入JAVA代码,为用户提供动态数据
二、JSP原理
思路:JSP到底怎么执行!
- 浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!
- JSP最终也会被转换成也一个Java类
- JSP本质上就是一个Servlet
内置一些对象:
final javax.servlet.jsp.Pagecontext pagecontext; //页面上下文
javax.servlet.http.HttpSession session = nu11; //session
final javax.servlet.ServletContext application; //applicationContext
final javax.servlet.ServletConfig config; //config
javax.servlet.jsp.JspWriter out = nu11; //out
final java.lang.Object page = this; //page:当前
HttpServletRequest request //请求
HttpServletResponse response //响应
JSP访问流程:
在JSP页面中,只要是JAVA代码就会原封不动的输出;
如果是HTML代码,就会被转换为:
out.write("<html>\r\n");
以这样的格式输出到前端
三、JSP基础语法
jsp表达式
<%--写变量或者表达式--%>
<%= new java.util.Date()%>
jsp脚本片段
<%--写java语句--%>
<%
int sum = 0;
for(int i = 1; i<=100; i++){
sum+=i;
}
out.println("<h1>Sum="+sum+"</h1>");
%>
jsp声明
<%--写java方法的地方--%>
<%!
static {
System.out.println("Loading Serclet!");
}
private int globalVar = 0;
public void wang(){
System.out.println("进入了方法");
}
%>
**他们三个的区别:**会被编译到jsp生成java的类中!其他的,会被生成到 _jspServlet方法中
其他区语法:
<%--定制错误页面 这个500.jsp使我们自定义的一个错误页面--%>
<%@page errorPage="500.jsp" %>
<%--新建jsp默认生成的一段代码--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--显示声明这是一个错误页面--%>
<%@page isErrorPage="true" %>
<%--镶嵌页面--%>
<jsp:include page="common/yemei.jsp"/>
四、9大内置对象
- PageContext 存东西
- Request 存东西
- Ression
- Session 存东西
- Application ---->【ServletContext】 存东西
- config ---->【ServletConfig】
- out
- page
- exception
<body>
<%-- 四种存储对象 --%>
<%
pageContext.setAttribute("name1","张三"); //保存的数据只在一个一面中有效
request.setAttribute("name2","李四"); //保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","王五"); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute("name4","小明"); //保存的数据只在服务器中有效,从打开服务器到关闭服务器
%>
<%
//通过pageContext取出我们保存的值,我们通过寻找的方式来
String name1 = (String) pageContext.findAttribute("name1");
String name2 = (String) pageContext.findAttribute("name2");
String name3 = (String) pageContext.findAttribute("name3");
String name4 = (String) pageContext.findAttribute("name4");
%>
<%--使用EL来表达式 ${} --%>
<h1>取出的值为:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
</body>
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻
session:客户端向服务器发送请求,产生的数据,用户看完一会还有用,比如:购物车
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用
五、JSP标签、JSTL表达式、EL表达式
EL表达式:
- 获取数据
- 执行运算
- 获取web开发常用对象
<%--获取表单中的数据--%>
${param.参数名}