活博之文—–JavaWeb之EL表达式和JSTL标签库(一)

      为了能使这段文字醒目,我使用了font标签(不重要),本篇文章将带着我的誓言,伴随大四至结束,后续的日子,我将对csdn和我的粉丝一起走下去;2022将至,我对2021的自己还算满意,至少每天都很充实,也对得起自己,较为不足的地方就是csdn这块,由于一时的粉丝上升让自己迷失,一味看重粉丝的数量,而忘了还有那么多热爱我的粉丝们。大三下学期也即将到来,我愿意和你们一起走下去,后续300个日日夜夜,我将在考研的路上伴随着你们,愿我们都有目标,前程似锦!

(一) 前言

  javaweb是每一个java程序员必须学习的技术,同时也潜移默化将后端程序员全
栈化。在javaweb中虽然对前端知识所用不多,但合理的使用前端知识将会使你
的界面可观性增强,乃至给别人留下较好的印象。由于初期jsp的设计结构不太合
理,将数据的处理与页面的渲染合并在了一起,于是在后面便出现了各种分离技术
。像"EL"和"JSTL"等,后面学习的servlet将充分分离mvc三层架构,使各层任务清
晰,下面就让我们一起学习jsp中的"EL”和"JSTL".

(二) EL表达式

EL表达式:${expression}
expression是表达式
如果没有指定expression的范围,浏览器将会从page,request,session.application
四个作用域以次寻找,找不到则置为null

/*
page:只在本页面内有效
request:在本次请求有效,forward后仍为一个request;重定向后不能访问
session:在本次会话有效,只要浏览器不关闭!
application:全局有效,即使更换浏览器也可以访问到
*/

例1:表达式的基本使用

代码:

<%@ page import="java.util.*" %><%--
  Created by IntelliJ IDEA.
  User: 123
  Date: 2021/12/26
  Time: 15:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>page</title>
</head>
<body>

<%
    //数组型
    String city[]={"西安","青岛","济南"};
    request.setAttribute("citys",city);
    //列表型
    List<String> food=new ArrayList<>();
    food.add("饺子");
    food.add("面条");
    food.add("老八汉堡");
    session.setAttribute("foods",food);
    //Map集合型
    Map person=new HashMap();
    person.put("1","小明");
    person.put("2","小红");
    application.setAttribute("persons",person);
%>
${requestScope.citys[0]}
${sessionScope.foods[0]}
${applicationScope.persons["1"]}

运行:
在这里插入图片描述
重要代码说明:
request.setAttribute(“citys”,city);
request的方法,将city字符串数组存放到request作用域中
session.setAttribute(“foods”,food);
session的方法,将food列表存放到session作用域中
application.setAttribute(“persons”,person);
application的方法,将person集合存放到application作用域中

${requestScope.citys[0]}
${sessionScope.foods[0]}
${applicationScope.persons[“1”]}

注意其中的红字部分,并不是所定义的数组名,列表名和集合名,而是将其加入各个域中的名字!!

例2:访问权限示例

为了节省空间,下面代码将只给出body部分

代码:(<jsp:forward page=“test.jsp”></jsp:forward>示例)
测试界面t.jsp

<%request.setCharacterEncoding("utf-8");%>

<%
    String city[]={"西安","青岛","济南"};
    request.setAttribute("citys",city);
%>
<jsp:forward page="test.jsp"></jsp:forward>

显示界面test.jsp

<%="我是forward后的:"%>
${requestScope.citys[0]}

运行:
在这里插入图片描述

代码:(response.sendRedirect(“testt.jsp”)示例)
测试界面t.jsp

<%request.setCharacterEncoding("utf-8");%>

<%
    String city[]={"西安","青岛","济南"};
    request.setAttribute("citys",city);
    response.sendRedirect("testt.jsp");
%>

显示界面testt.jsp

<body>

<%="我是sendRendirt后的:"%>
${requestScope.citys[0]}

</body>

运行:
在这里插入图片描述

例3:内置对象param,paramValues

这两个对象是和表单共同使用的,用于获取表单的值,
按name属性获取,param返回单个值;paramValues
获取多个name相同的值,返回数组型.
示例(单个值和多选框):

代码:
表单界面form.jsp

<body>
<%request.setCharacterEncoding("utf-8");%>
<form action="handle.jsp" method="post">
    姓名:<input type="text" name="name"><br>
    爱好:篮球<input type="checkbox" name="hobby" value="篮球">
    足球:<input type="checkbox" name="hobby" value="足球">
    排球:<input type="checkbox" name="hobby" value="排球">
    <input type="submit" value="提交">
</form>
</body>

处理界面handle.jsp:

<body>
<%request.setCharacterEncoding("utf-8");%>
${param.name}
${paramValues.hobby[0]}
</body>

运行:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例4:empty判断是否为空

格式:${empty expression},其中expression是表达式

代码示例:

<body>

${empty requestScope.jj}
</body>

由于request域并没有加入jj的值,所以结果应为空.
在这里插入图片描述

以上就是本期的所有内容,后续将不间断更新,点个关注吧!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>