JPS
1.1、什么是JSP
jsp=java server pages: java服务器页面,是一种动态的web技术
最大的特点:
-
写jsp,就和写html一样
-
区别:
- HTML只给用户提供静态的数据
- JSP页面中可以嵌套java代码,为用户提供动态数据
- JSP的注释,在网页中查看源码是看不见的,HTML的注释,在网页中查看源码是能看见的!
-
需要的依赖包
<!--导入Servlet的依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</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>
1.2、JSP基础语法
1.2.1、JSP表达式
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试</title>
</head>
<body>
Hello World
<%--我是jsp的注释--%>
<hr/>
<%--JSP表达式
作用:用来将程序的输出,输出到客户端
<%= 变量或者表达式%>
--%>
<%= new java.util.Date()%>
<hr/>
</body>
</html>
现在都用EL表达式${},很少用<%= %>了!
1.2.2、JSP脚本片段
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试</title>
</head>
<body>
Hello World
<br/>
<%--下面是jsp的脚本片段,里面可以填写java的代码!--%>
<%
out.print("ip地址为:"+request.getRemoteAddr());
%>
<%--我是jsp的注释--%>
</body>
</html>
1.2.3、JSP声明
jsp声明<%!声明的内容%>;一个声明语句可以声明一个或者多个变量、方法,供后面的java代码使用
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试</title>
</head>
<body>
Hello World
<%--jsp声明--%>
<%!
public void kuang(){
System.out.println("进入了方法框");
}
%>
<%
kuang();
%>
</body>
</html>
1.2.4、jsp注释
<%–我是jsp的注释–%>,jsp的注释不会在客户端显示,HTML的注释就会在客户端响应
1.2.5、jsp指令
- 自定义跳转到500的页面(方式1)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--跳转到自定义的500界面--%>
<%@ page errorPage="error/500.jsp" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
int x = 1/0;
%>
</body>
</html>
如果上述的脚本发生错误,则跳转到指定的500页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>自定义500的jsp页面</h1>
</body>
</html>
- 第二种方式,在web.xml中进行配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<error-page>
<error-code>404</error-code>
<location>/error/500.jsp</location>
</error-page>
</web-app>
- 设置欢迎界面,也是在web.xml中进行配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<error-page>
<error-code>404</error-code>
<location>/error/500.jsp</location>
</error-page>
<welcome-file-list>
<welcome-file>welcom.jsp</welcome-file>
</welcome-file-list>
</web-app>
- include 标签 (一般情况下,用于引入外部的资源,比如网页的头部和网页的脚部)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- 这是第一中使用方式--%>
<%@include file="common/header.jsp"%>
<h1>我也网页主题</h1>
<%@include file="common/footer.jsp"%>
<%--一般情况下会使用第二种方式--%>
<%--第二种方式jsp标签--%>
<jsp:include page="/common/header.jsp"></jsp:include>
</body>
</html>
1.3 JSP标签、JSTL标签、EL表达式
使用之前需要导入需要的依赖包!!!
-
EL表达式:${}
- 获取数据
- 执行运算
- 获取web开发的常用对象
-
JSP标签(常用的就是包含和转发)
- <jsp:include page=“”> 融合两个不同的页面
- <jsp:forward page=“”> 进行页面的转发
-
JSTL标签
JSTL标签库的使用就是为了弥补HTML标签的不足;它自定义许多标签,可以供我们使用,标签的功能和java代码一样!
-
引入对应的taglib标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
-
c:if 标签的使用(与我们在程序中用if的一样)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>jstl核心标签</title> </head> <body> <form action="core.jsp" method="get"> <%-- EL表达式获取表单中的数据 ${param.参数名} --%> <input type="text" name="username" value="${param.username}"> <input type="submit" value="登录"> </form> <%--判断用户提交的用户是不是管理员--%> <c:if test="${param.username=='admin'}" var="isadmin"> <c:out value="管理员欢迎您!"/> </c:if> <%--下面使用自闭和的标签--%> <c:out value="${isadmin}"/> </body> </html>
-
c:set 和 c:choose 标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%-- Created by IntelliJ IDEA. User: 26287 Date: 2022/6/9 Time: 10:53 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>c:when标签</title> </head> <body> <%--使用set先定义一个变量,值为85--%> <c:set var="score" value="85"></c:set> <%--下面使用choose when进行判断--%> <c:choose> <c:when test="${score>=90}"> 你的成绩为优秀 </c:when> <c:when test="${score>=80}"> 你的成绩为中等 </c:when> <c:when test="${score>=60}"> 你的成绩为及格 </c:when> </c:choose> </body> </html>
-
c:forEach标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="java.util.ArrayList" %><%-- Created by IntelliJ IDEA. User: 26287 Date: 2022/6/9 Time: 11:12 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>foreach的练习</title> </head> <body> <% ArrayList<String> people = new ArrayList<>(); people.add(0,"0号同学"); people.add(1,"1号同学"); people.add(2,"2号同学"); people.add(3,"3号同学"); people.add(4,"4号同学"); request.setAttribute("list",people); %> <%-- 注释详解 var,每一次遍历出来的变量 items,要遍历的对象 begin,哪里开始 end,到哪里结束 step,步长!!! --%> <c:forEach var="people" items="${list}"> <c:out value="${people}"/> <br> </c:forEach> <c:forEach var="people" items="${list}" begin="1" end="3" step="1" > <c:out value="${people}"/> <br> </c:forEach> </body> </html>