一、JSP(java server pages)
1、概念:
jsp是一种动态网页技术标准。jsp部署在服务器上,根据请求来动态生成html、xml和其他格式的网页,然后返回给请求者。jsp以java语言为脚本语言。
jsp将java代码和特定变动内容放在静态页面中,以静态页面为模板,动态生成其中的部分内容。jsp在运行时会先被jsp编译器编译成servlet.java文件,然后再被编译成class文件。
2、为什么要使用jsp
jsp就是一个特殊的servlet。
普通的servlet也可以通过wirte()来向客户端生成网页,但是css,html,java代码写在了一块,耦合度高,可读性差。所以官方就制定了一个标准,即可显示数据,又可以设置css和js.
3、JSP创建过程
①客户端发送请求到服务器,服务器根据请求来加载指定的jsp文件
②web服务器的jsp引擎编译将jsp文件加载为servlet.java文件
③jsp引擎将servlet.java文件再编译成class文件
④服务器执行class文件
⑤服务器将执行结果返回给客户端
4、jsp的组成
Ⅰ、指令
作用:用于配置jsp页面,加载资源文件
格式:<%@ 指令名称 属性名=属性值%>
<!--导入jar包--> <%@ page import="java.util.List" %> <%@ page import="java.util.Map" %> <!--设置页面的字符集编码 和mime 类型--> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
Ⅱ、注释
<!-- --> 只能注释html代码
<%-- --%>所有代码都可以注释
Ⅲ、9大内置对象:在jsp中不用创建对象,直接使用的对象
pageContext 、request、session、application、response、page、out、config、exception
Ⅳ、四大域对象
pageContext、request、session、application
注意:
<% %> 这个标签中写java代码
<%=变量名 %> 这种方式表示可以将java变量显示在jsp页面中
<%@ page import="java.util.Map" %> <%@ page import="java.util.List" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>用户信息展示</title> <style> table{ background-color: red; border: 2px solid blue; } td{ border: 1px solid green; } </style> </head> <body> <table> <thead> <tr> <th>编号</th> <th>用户名</th> <th>密码</th> </tr> </thead> <tbody> <% List<Map<String, Object>> maps = (List<Map<String, Object>>)request.getAttribute("maps"); for (Map<String, Object> map : maps) { %> <tr> <td><%=map.get("id")%></td> <td><%=map.get("username")%></td> <td><%=map.get("password")%></td> </tr> <% } %> ${requestScope.maps} ${sessionScope.msg} </tbody> </table> </body> </html>
二、EL表达式
概念:表达式语言:Expression language
作用:<%=变量名%> 这种写法有缺点,将html标签和java语言写在一块,用el来替代它
语法:${域对象.变量名}
使用:可以运算、取值
Ⅰ、支持运算符
算术运算符:+ - * % /
关系运算符:< > == !=
逻辑运算符:and or not
Ⅱ、值的获取
值只能在域对象中获取(四大内置域对象)
语法:${域名.键名}、${变量名}
域名称:pageScope、requestScope、sessionScope、applicationScope
示例一:取Map中的值
<%Map<Object, Object> map = new HashMap<>(); map.put("id",1); map.put("name","张大骚"); map.put("age",18); map.put("address","泰国"); request.setAttribute("map",map);//将map添加到request域对象中 %> ${requestScope.map.get("name")}
示例二:${变量名}
<% request.setAttribut("name","zhangsan"); %> ${name}
三、JSTL --标准标签库
JSTL(Java server tag library) 作用:为了替代<%%>
JSTL标签库是jsp的一个标签集合,它封装了jsp的通用核心功能。
5个类别:核心标签、sql标签、格式化标签、xml标签、jstl标签
使用步骤:
Ⅰ、导入jar包
jstl-1.2.jar 和 standard.jar
Ⅱ、在页面上引入指令
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Ⅲ、if判断和for循环的使用
①c:if判断
<%-- test:if是否执行的条件判断 没有else,如果需要else,就再写一个c:if --%> <c:if test="${requestScope.map1 !=null}"> ${requestScope.map1} </c:if>
②c:foreach循环
<%--遍历常量 begin:开始的初始值 end:结束的范围 step:步进表达式 var:临时变量 --%> <c:forEach begin="1" end="10" var="i" step="1"> ${i} </c:forEach> <%--遍历容器 items:需要遍历的数据 var:每次遍历的结果 varStatus:包含两个属性index 和 count,分别代表当前索引和当前循环的次数, --%> <c:forEach items="${lists}" var="cc" varStatus="aa"> <h5>${cc}------${aa.index}</h5> </c:forEach>