1、JSP基础语法
<!--servlet依赖 https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!--jsp依赖 https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<!--jstl表达式的依赖 https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/javax.servlet.jsp.jstl-api -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>1.2.2</version>
</dependency>
<!--standard标签库 https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
1、JSP表达式
<%--JSP表达式
作用:用来将程序的输出,输出到客户端
--%>
<%=new java.util.Date()%>
2、JSP脚本片段
<%--jsp脚本片段--%>
<%
int sum=0;
for (int i = 0; i <50; i++) {
sum+=i;
}
out.println("<h1>sum="+sum+"</h1>");
%>
3、在Java代码中嵌入HTML语句
<%--在Java代码中嵌入HTML语句--%>
<%
for (int i = 0; i < 5; i++) {
%>
<h1>hello world<%=i%></h1>
<%
}
%>
4、JSP声明
<%!
static {
System.out.println("hello JSP");
}
private int globalvar =0;
public void kuang(){
System.out.println("进入了方法kuang");
}
%>
2、JSP指令
<%@ page%>
<%@ include%>
<%--@include会将多个页面合二为一--%>
<%@include file="common/header.jsp"%>
<h1>网页主体</h1>
<%@include file="common/footer.jsp"%>
<hr>
<%--jsp标签
jsp:include拼接页面,本质还是三个,灵活性更高(推荐按使用)
--%>
<jsp:include page="/common/header.jsp"/>
<h1>网页主体</h1>
<jsp:include page="/common/footer.jsp"/>
<%--内置对象--%>
<%
pageContext.setAttribute("name1","秦疆1号");//保存的数据只在一个页面中有效
request.setAttribute("name2","秦疆2号");//保存的数据只在一次请求中有效,请求转发会携带这个数据,==>pageContext.setAttribute("name2","秦疆2号",REQUEST_SCOPE);
session.setAttribute("name3","秦疆3号");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器,==>pageContext.setAttribute("name3","秦疆3号",SESSION_SCOPE);
application.setAttribute("name4","秦疆4号");//保存的数据在服务器中有效,从打开服务器到关闭服务器==>pageContext.setAttribute("name4","秦疆4号",APPLICATION_SCOPE;
%>
<%
//作用域:底层到高层,page——>request——>session——>application
/*
public static final int PAGE_SCOPE = 1;
public static final int REQUEST_SCOPE = 2;
public static final int SESSION_SCOPE = 3;
public static final int APPLICATION_SCOPE = 4;
*/
//jvm:双亲委派机制
String name1 = (String) pageContext.findAttribute("name1");
String name2 = (String) pageContext.findAttribute("name2");
String name3 = (String) pageContext.findAttribute("name3");
String name4 = (String) pageContext.findAttribute("name4");
String name5 = (String) pageContext.findAttribute("name5");
%>
<%--使用EL表达式输出--%>
<h1>取出的值为:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3>${name5}</h3>
<h3><%=name5%></h3>
<%--跳转--%>
<%
pageContext.forward("/test03.jsp");//==>request.getRequestDispatcher("/test03.jsp").forward(request,response);
%>
3、JSP标签、JSTL标签和EL表达式
-
使用前需要引入依赖的jar包
<!--jstl表达式的依赖 https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/javax.servlet.jsp.jstl-api --> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>javax.servlet.jsp.jstl-api</artifactId> <version>1.2.2</version> </dependency> <!--standard标签库 https://mvnrepository.com/artifact/taglibs/standard --> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
-
另外JSTL标签使用前还需要做以下步骤:
- 引入对应的taglib
- 在tomcat的lib目录下也要手动添加jstl和standard包,否则可能会报错:JSTL解析错误
-
JSTL标签
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--引入JSTL核心标签--%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> <h2>if测试</h2> <hr> <form action="coreif.jsp" method="get"> <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>