文章目录
JSP—java server pages
作用:代替servlet程序回传html页面数据
//因为servlet操作非常繁琐,需要一行一行write出来
//而且还需要在java代码里写html代码,极其恶心.
1. jsp本质上是一个servlet文件,第一次编译时,会当成java源文件去编译生成字节码文件.也就是说,被翻译出来的java文件继承了HttpServlet类.
2. 表达式脚本
格式:<%= 表达式%>
表达式脚本会被翻译到——jspService方法中
* 语句不能以分号结尾
直接输出内容,输出在前端界面上
3. 代码脚本
<%
for(int i = 0;i<10;i++){
sout(i);
}
%>
里面啥都能写,java代码
代码脚本里可以书写任意的 java 语句。
代码脚本的内容都会被翻译到 service 方法中。
所以 service 方法中可以写的 java 代码,都可以书写到代码脚本中
还可以分裂写,和表达式脚本一起用:(超级灵活)
4. 四个域对象
优先顺序从小到大
5. 静态包含(可将重复代码赋值过来)
<%--//静态包含,将其他文件的全部内容复制到此文件--%>
<%@include file="a.html"%>
<%--路径为工程名下web文件下的目录--%>
6. 动态包含可以传递参数
7. 转发标签
//将stu发送
req.setAttribute("std",stu);
//请求转发至
req.getRequestDispatcher("b.jsp").forward(req,resp);
<%
//接收参数
ArrayList<Student> stu = (ArrayList<Student>) request.getAttribute("std");
%>
8. EL表达式 Expression Lauguage
EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出.
因为EL表达式输出数据比之前要简洁很多
格式:
${表达式}
输出null时输出空值
获取map的值直接 .键 就可以
获取属性实际上调用的是get方法
- 判空
- 运算符
特殊字符()
- 特殊字符这样输出[ a.a.a]
- 11个隐含对象
- 可以输出对应的域中的信息, 以键值对形式保存
- 输出各种请求信息
9.JSTL标签库
为了替换代码脚本,简化代码区域
使用步骤:
-
先导taglib.jar包
-
在引入标签库(会自动导入)
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
${pageScope.abc}<br>
//设置某个参数值为
<c:set scope="page" var="abc" value="123456"/><br>
${pageScope.abc}
<br>
<c:if test="${requestScope.username != null}">
<h1>
用户名为空
</h1>
</c:if>
<br>
<%--与swich case default一样--%>
<c:choose>
<c:when test="${requestScope.std != null}">
<h1>
用户名为admin
</h1>
</c:when>
<c:when test="${requestScope.password != null}">
<h1>
密码为123456
</h1>
</c:when>
</c:choose>
- foreach
<c:forEach begin="0" end="10" var="i">
${i}
</c:forEach>
<hr>
<%--foreach(int i : arr)一样 items表示源数据-,item表示循环变量--%>
<c:forEach items="${requestScope.arr}" var="item" >
${item}
</c:forEach>
- foreach遍历map
for (Map.Entry<String,String> entry: map.entrySet()
) {
System.out.println(entry);
}
%>
<c:forEach items="${requestScope.map}" var="entry">
${entry}
</c:forEach>
- foreach属性