编程语言
首页 > 编程语言> > javaee之jsp、EL表达式、JSTL标签库

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