JSP原理
JSP 本质上就是一个 Servlet
JSP 脚本分类 JSP 脚本有如下三个分类:
<%...%>:内容会直接放到_jspService()方法之中<%=...%>:内容会放到out.print()中,作为out.print()的参数<%!...%>:内容会放到_jspService()方法之外,被类直接包含
EL 表达式
EL(全称Expression Language )表达式语言,用于简化 JSP 页面内的 Java 代码。
EL 表达式的主要作用是 获取数据。其实就是从域对象中获取数据,然后将数据展示在页面上。
而 EL 表达式的语法也比较简单,${expression}
例如:${brands} 就是获取域中存储的 key 为 brands 的数据。
域对象取值的优先级
jstl表达式的使用步骤
导入坐标
<!--jstl 1.2版本后自带standard.jar,重复添加会报错-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>taglibs</groupId>-->
<!-- <artifactId>standard</artifactId>-->
<!-- <version>1.1.2</version>-->
<!-- </dependency>-->
在JSP页面上引入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
Demo演示 -
forEach标签
c:forEach的varStatus属性
current: 当前这次迭代的(集合中的)项
index : 当前这次迭代从 0 开始的迭代索引
count : 当前这次迭代从 1 开始的迭代计数
first : 用来表明当前这轮迭代是否为第一次迭代的标志
last : 用来表明当前这轮迭代是否为最后一次迭代的标志
begin : 返回begin属性值
end : 返回end属性值
step : 返回step属性值
jsp常用语法
<%@ page contentType="text/html; charset=UTF-8" %><%! 声明成员变量、方法 %><% 声明局部变量,操作成员变量、局部变量、方法 %><%= 表达式 %><jsp:include page="文件的url"/>或
//形式2:
<jsp:include page="文件的url">
<jsp:param name="属性名字" value=“属性的值”>
</jsp:include>
注意:
1,当include动作标记不需要param子标记时,必须使用第一种形式
2,使用tomcat服务器提供的request内置对象获取param子标记中name属性的值
//t2.jsp
<jsp:include page="t3.jsp">
<jsp:param name="age" value="39"/>
</jsp:include>
//t3.jsp
<%
String str = request.getParameter("age");
int age = Integer.parseInt(str);
%>
<p>我的年龄为:<%= age %></p>
<jsp:forward page="要转向的页面">或
//形式2:
<jsp:forward page="要转向的页面">
<jsp:param name="属性名字" value=“属性的值”>
</jsp:forward>
关键字
synchronized
可以在方法前面添加synchronized,保证所有用户同步调用该方法,一个用户使用时,其他用户都等待调用
注意事项
java程序片中,语句结尾必须要有分号p标签之间最好不要有回车,页面解析的时候会报错
isELIgnored的作用
如果设置为true,那么JSP中的表达式被当成字符串处理。
如果设置为false, 那么JSP中的表达式会生效
Web容器默认isELIgnored="false",
如果jsp页面表达式显示为字符串,可以在顶部page标签试一下
<%@ page isELIgnored="false"%>
中文乱码&成员变量&方法&java程序片
<!-- 下面这句注释必须用jsp注释方式,不然jsp解析时报错 -->
<%-- “<%@”是一个完整符号,中间不要有空格 charset=UTF-8" 可以解决浏览器中文显示乱码的问题--%>
<%@ page contentType="text/html; charset=UTF-8" %>
<HTML>
<BODY>
<%!
int a = 10,b=20;
<!-- 可以在方法前面添加synchronized,保证所有用户同步调用该方法,一个用户使用时,其他用户都等待调用 -->
synchronized int sumValue(int a, int b){
return a+b;
}
%>
<p>
a+b计算结果:
<!-- html注释 -->
<%-- jsp注释 --%>
<!-- “《%=”是一个完整的符号,中间不要有空格,下面就是java程序片 -->
<%=
sumValue(a,b)
%>
</p>
<p>123和456是好朋友789</p>
<font size=19 color=red>hehe</font>
</BODY>
</HTML>