javaee之jsp、EL表达式、JSTL标签库
作者:互联网
jsp:一个可以存放java与html混写的文件
从某种层面来说,它实际就是一个servlet
因此servlet里面能定义获取的,他也可以用,只不过方式不一样。
java在我们访问一个jsp的时候,会自动把jsp文件编译一个带有service方法的java文件。这个文件存放在IDE给我们配置项目的缓存目录里面,在work目录下面。work就是在我们的工作的过程中产生的文件
顺便看一个文件看看
很明显可以看到,内部也是给我们转化了servelt文件,然后给我们编译了一个service方法,然后把我们需要的东西放进去了。
下面说一下JSP定义代码的方式:
话不多说,直接上代码:
demo1.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2022/3/18
Time: 12:37
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
int i = 3;//这里就是定义到service里面的变量
%>
<%!
int i =10;//这个就是转换后java文件的成员位置上面
%>
<%=
i//这里就会把上面定义的i变量直接输出到浏览器,这里会打印3,就近原则,其实这里
//这是在service方法里面执行
%>
</body>
</html>
上面运行一下
这里会打印3,直接看一下转换后的源文件
上面可以看到i=10这个变量,被定义成了一个类的成员属性
上面i=3就把它定义到service方法里面,并且在service方法里面打印了数据。
我们还可以调用内部的内置对象
下面来说九个jsp内置对象
下面简单来说一下mvc开发模式:一种开发软件的方法
下面来说一下EL表达式,这玩意就是用在jsp页面,用来简化java代码页面编写,他不用放到<% %>这个里面
下面简单说一下EL表达式中的隐式对象:
EL有十几个隐式对象,就像上面四种,我们这里重点说一下pageContext隐式域,他可以获取JSP其他八个内置对象
${pageContext.request.contextPath}:动态获取虚拟目录
这里面request对象,里面有一个getContextPath()方法,所以可以通过.contextPath来获取虚拟目录
那么我们换句话说,我们获取虚拟目录可以这样${requestScope.contextPath},这样是不可以的啊
说一下这两者的区别,先看一下打印信息
一个打印的是这个域对象的地址,一个只是获取到这个域设置的值,这个只是给我们返回一个相应对象数据的map集合,里面存放了我们的数据而已。
下面来说一下JSTL标签
再来具体说一下foreach标签:
话不多说,上个代码
<%@ page import="domain.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Date" %>
<%@ 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>
<%
List<User> list = new ArrayList<User>();
list.add(new User("tom",25,new Date()));
list.add(new User("tonny",28,new Date()));
list.add(new User("jack",35,new Date()));
//在request域中
request.setAttribute("list",list);
%>
<table border = "1" width = "500" align = "center">
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>生日</th>
</tr>
<c:forEach items="${list}" var="user" varStatus="s">
<c:if test="${s.count % 2 == 0}">
<tr bgcolor="red">
<td>${s.count}</td>
<td>${user.age}</td>
<td>${user.name}</td>
<td>${user.birday}</td>
</tr>
</c:if>
<c:if test = "${s.count % 2 != 0}">
<tr bgcolor="green">
<td>${s.count}</td>
<td>${user.age}</td>
<td>${user.name}</td>
<td>${user.birday}</td>
</tr>
</c:if>
</c:forEach>
</table>
</body>
</html>
标签:EL,list,javaee,JSTL,jsp,user,一下,new 来源: https://blog.csdn.net/m0_67402823/article/details/123603158