JSP
1、简介
java server pages:java服务器端页面,也和servlet一样,用于动态web
特点:
- 写jsp就像在写html
- 区别:
- html只给用户提供静态的数据
- jsp页面中可以嵌入java代码,为用户提供动态数据
2、jsp原理
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问servlet
JSP最终也会转换为java类,tomcat运行时转换
JSP本质上就是一个Servlet
在JSP页面中:
JAVA代码会直接输出,
HTML会被转换为
out.write("<html>\r\n");
此格式输出到前端
3、JSP基础语法
依赖
<dependencies>
<!--Servlet 依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!--JSP 依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<!--JSTL表达式依赖-->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!--standard 标签库-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
JSP作为java技术的一种应用,拥有自己扩充的语法,Java所有语法都支持
<body>
<%--JSP表达式 用来将程序的输出,输出到客户端--%>
<%= new java.util.Date()%>
<%--JSP脚本片段 --%>
<%
int sum=0;
for (int i = 0; i < 100; i++) {
sum+=i;
}
out.println("<h1>sum="+sum+"</h1>");
%>
<%--在代码中嵌入HTML元素 --%>
<%
for (int i = 0; i <5 ; i++) {
%>
<h1>Hello,world</h1> <%=i%>
<%
}
%>
<%--JSP声明 会被编译到JSP生成的java的类中,其他会被生成到_jspService方法中--%>
<%!
static{
System.out.println("Loading...");
}
private int globalvar=0;
public void p(){
System.out.println("kkk");
}
%>
$END$
</body>
在JSP,嵌入Java代码即可。
JSP的注释不会在客户端显示,HTML的注释会显示。
4、JSP指令
<%@page args... %>
<%@include file="" %> <!--拼接网页,会产生变量命名空间错误-->
5、九大内置对象
- PageContext 保存到东西在一个页面中有效
- Request 保存到东西在一次请求中有效
- Response
- Session 保存到东西在一次会话中有效
- Application ServletContext 存东西 保存到东西在服务器中有效
- config ServletConfig
- out
- page
- exception
应用场景:
- request:客户端向服务器发送请求,产生的数据,用户看完就没用了,如新闻
- session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,如购物车
- application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,如聊天数据
6、JSP标签,JSTL标签,EL表达式
EL表达式: ${}
- 获取数据
- 执行运算
- 获取web开发常用对象
JSP标签:
<jsp:forward page="/jsptag2.jsp">
<jsp:param name="name" value="lucas"></jsp:param>
</jsp:forward>
JSTL表达式:
JSTL标签库的使用就是为了弥补HTML标签的不足,标签的功能和java代码一样。
/jsptag2.jsp">
<jsp:param name=“name” value=“lucas”></jsp:param>
</jsp:forward>
**JSTL表达式:**
JSTL标签库的使用就是为了弥补HTML标签的不足,标签的功能和java代码一样。