JSP——Java Server Page运行在服务器端的Java页面。JSP=HTML+Servlet。浏览器第一次访问JSP的时候,由Tomcat将JSP翻译成了Servlet,而且编译成字节码文件,只生成1次。若是这期间修改了JSP内容,就会从新生成。html
三种注释 | 说明 |
---|---|
HTML | <!-- 注释 --> 只能注释静态内容,不能注释Java代码。经过浏览查看源代码能够看到的 |
Java | 与之前是同样的,在网页中看不到,但在翻译之后Servlet中能够看到。 // 单行注释 /* 多行注释 / /* 文档注释 */ |
JSP | <%-- 动态内容 --%> 能够注释JSP上任何元素网页中没有,在生成的Java源代码中也没有 |
组成部分 | 功能 | 语法 |
---|---|---|
JSP代码片断 | 在JSP中执行Java代码 | <% Java代码; %> |
JSP脚本表达式 | 在JSP中输出变量值 | <%= 变量%> |
JSP声明 | 声明全局变量或方法 | <%! 声明 %> |
区别 | JSP脚本表达式 | EL |
---|---|---|
语法 | <%=m%> | ${m} |
输出哪里的值 | 输出的是脚本变量<% int m= 5; %> | 输出的是做用域中的值 <% request.setAttribute(“m”,5); %> |
用于输出做用域中的变量值java
用于进行各类运算:算术,逻辑,关系,三元运算等web
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <% //向页面域中添加一个字符串 //pageContext.setAttribute("name", "页面域"); //请求域 request.setAttribute("name", "请求域"); //会话域 session.setAttribute("name", "会话域"); //上下文域 application.setAttribute("name", "上下文域"); %> JSP写法: <%=pageContext.getAttribute("name")%> EL的写法: ${pageScope.name} <hr> JSP写法: <%=request.getAttribute("name")%> EL的写法: ${requestScope.name} <hr> JSP写法: <%=session.getAttribute("name")%> EL的写法: ${sessionScope.name} <hr> JSP写法: <%=application.getAttribute("name")%> EL的写法: ${applicationScope.name} <hr> JSP写法: <%=pageContext.findAttribute("name")%> EL的写法: ${name} <hr> </body> </html>
<%@ page import="java.util.ArrayList" %> <%@ page import="java.util.List" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h2>算术运算符</h2> ${1+1}<br> ${2-1}<br> ${1*1}<br> ${5 div 2}<br> ${5 /2 }<br> ${5 mod 2}<br> ${5%2}<br> <h2>比较运算符</h2> ${1 eq 1}<br> ${1 != 1}<br> ${1 lt 2}<br> ${1 <= 1}<br> ${1 > 2}<br> ${1 >=1}<br> <h2>关系运算符</h2> ${true and false}<br> ${true || false }<br> ${not true}<br> <h2>三元运算</h2> ${5>6?"男":"女"} <h2>判空表达式</h2> ${empty aaa} <br> <% pageContext.setAttribute("bbb",""); //集合中没有元素 List<String> names = new ArrayList<>(); names.add("白骨精"); pageContext.setAttribute("ccc", names); %> ${empty bbb}<br> ${empty ccc}<br> </body> </html>
Java Standard Tag Library Java标准标签库浏览器
<%--prefix表示前缀,固定为c,uri 标识 --%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
解释服务器
JSTL | 前缀 | URI固定写法,标识的做用 | 做用 |
---|---|---|---|
核心标签库 | c | http://java.sun.com/jsp/jstl/core | 用于页面上的逻辑控制,如:if、forEach |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--prefix表示前缀,固定为c,uri 标识 --%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>标签</title> </head> <body> <%--test后面使用EL表达式,判断是否为真,没有c:else标签--%> <c:if test="${2>3}"> 我是女生 </c:if> <c:if test="${2<3}"> 我是男生 </c:if> <%--html内容 --%> <form action="07-choose.jsp"> 请输入分数: <input type="text" name="score"> <input type="submit" value="评级"> </form> <%--判断输入的参数是否为空 --%> <c:if test="${not empty param.score}"> <%--使用c:choose标签,相似switch --%> <c:choose> <c:when test="${param.score >=80 && param.score<=100}"> <h2 style="color: red">优秀</h2> </c:when> <c:when test="${param.score >=60 && param.score<80}"> <h2 style="color: green">良好</h2> </c:when> <c:when test="${param.score >=0 && param.score<60}"> <h2 style="color: dodgerblue">不及格</h2> </c:when> <c:otherwise> <h2 style="color: orange">分数不正确</h2> </c:otherwise> </c:choose> </c:if> </body> </html>
使用<c:foreach>标签session
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> <table border="1"> <caption>学生信息表</caption> <tr> <th>状态</th> <th>学号</th> <th>姓名</th> <th>性别</th> <th>成绩</th> </tr> <%-- items: 表示要遍历的集合,要使用EL var: 变量名,表示集合中的每一个元素对象 varStatus: 表示一个对象名字,当前的行对象。 有四个属性: first: 第1个元素返回true last: 最后1个元素返回true count: 遍历到当前元素时,一共遍历了几个元素 index: 当前元素的索引号,从0开始 --%> <c:forEach items="${students}" var="stu" varStatus="row"> <tr> <td>${row.index}</td> <td>${stu.id}</td> <td>${stu.name}</td> <td>${stu.gender?"男":"女"}</td> <td>${stu.score}</td> </tr> </c:forEach> </table> </body> </html>