当前位置: 首页 > news >正文

JavaWeb 核心:JavaBean+JSP 动作标签 + EL 表达式全解析

在 JavaWeb 开发的入门阶段,JavaBean、JSP 标准动作标签、EL 表达式是绕不开的核心知识点,它们是实现数据封装、页面简化操作、数据快速展示的基础

一、什么是 JavaBean?规范 + 实战一步到位

1. JavaBean 核心概念

JavaBean 本质就是遵循特定规范的 Java 普通类,专门用来封装数据(实体类),比如学生、用户、商品等对象,让数据传递和管理更规范。

2. JavaBean 必须遵守的 4 大规范

  1. 类必须用public修饰
  2. 成员变量全部私有化(private
  3. 提供无参构造方法(必备)
  4. 为私有变量提供公共的getter/setter方法

3. 实战:学生实体类(Student)

package com.example.javabean; // 公共类 public class Student { // 1. 私有成员变量 private String no; // 学号 private String name; // 姓名 private int age; // 年龄 private String sdept; // 专业 // 2. 无参构造方法(必须!) public Student() { } // 3. 有参构造方法(按需定义,不影响规范) public Student(String no, String name, int age, String sdept) { this.no = no; this.name = name; this.age = age; this.sdept = sdept; } public Student(String no, String name, int age) { this.no = no; this.name = name; this.age = age; } // 4. 公共getter/setter方法 public String getNo() { return no; } public void setNo(String no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSdept() { return sdept; } public void setSdept(String sdept) { this.sdept = sdept; } }

4. JavaBean 测试

package com.example.javabean; public class Main { public static void main(String[] args) { // 无参构造创建对象 + set方法赋值 Student s1 = new Student(); // 错误写法:私有属性不能直接访问 s1.no = "4444"; s1.setNo("4444"); s1.setName("张三"); // 有参构造直接赋值 Student s2 = new Student("001","zhangsan",23,"qukuail"); Student s3 = new Student("001","李四",34); // get方法获取属性值 System.out.println(s2.getName()); // 输出:zhangsan } }

核心总结:私有变量必须通过set赋值、get取值,无参构造是 JavaBean 的硬性要求!


二、JSP 动作标签:操作 JavaBean 超便捷

JSP 提供了三个标准动作标签,专门用来创建 JavaBean 对象、赋值、取值,替代繁琐的 Java 代码,让页面更简洁。

核心标签一览

表格

标签作用
<jsp:useBean>创建 JavaBean 对象
<jsp:setProperty>给 JavaBean 属性赋值
<jsp:getProperty>获取 JavaBean 属性值

实战:JSP 操作 User JavaBean

1. 先准备 User 实体类
package com.example.javabean; public class User { private String userName; private String userPwd; public User() {} public String getUserName() {return userName;} public void setUserName(String userName) {this.userName = userName;} public String getUserPwd() {return userPwd;} public void setUserPwd(String userPwd) {this.userPwd = userPwd;} }
2. JSP 页面操作 JavaBean
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>JavaBean基础使用</title> </head> <body> <%-- 1. 创建JavaBean对象:id=对象名,class=全类名,scope=作用域 --%> <jsp:useBean id="user" class="com.example.javabean.User" scope="page"></jsp:useBean> <%-- 2. 给属性赋值 --%> <jsp:setProperty name="user" property="userName" value="admin"></jsp:setProperty> <jsp:setProperty name="user" property="userPwd" value="123456"></jsp:setProperty> <%-- 3. 获取属性值:方式1 动作标签 --%> 用户名:<jsp:getProperty name="user" property="userName"/> <br> <%-- 4. 获取属性值:方式2 Java代码 --%> <% String name = user.getUserName(); String pwd = user.getUserPwd(); // 简单登录判断 if("admin".equals(name) && pwd.equals("123456")){ out.println("<br>登录成功"); }else { out.println("<br>登录失败"); } %> </body> </html>

关键说明

  • id:自定义对象名,页面中唯一标识
  • class:必须写全类名(包名 + 类名)
  • scope:作用域,常用page(当前页面)

三、EL 表达式:简化 JSP 数据获取,告别 Java 代码

EL(Expression Language)表达式,专门用于在 JSP 页面中获取数据、执行运算,语法极简:${表达式},彻底告别页面中杂乱的<%= %>和 Java 代码。

1. EL 核心功能

  1. 执行算术、比较、逻辑运算
  2. 获取域对象数据(request/session/application)
  3. 获取 JavaBean 属性、集合数据
  4. 判断空值(empty 关键字)

2. EL 表达式实战大全

<%@ page import="com.example.javabean.User" %> <%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page isELIgnored="false" %><%--必须开启EL表达式--%> <html> <head> <title>EL表达式全解</title> </head> <body> <%-- 1. 算术运算符 --%> 5+3=${5+3},5-3=${5-3},5/3=${5/3},5%3=${5%3}<br> <%-- 2. 比较运算符 --%> 5>3--->${5>3}<br> <%-- 3. 逻辑运算符 --%> 5>3 && 2<3--->${5>3 && 2<3}<br> <%-- 4. empty运算符:判断空值(null/空字符串都为true) --%> <% String cart=null;%> ${empty cart?"购物车为空":cart} <br> <%-- 5. 点运算符:获取JavaBean属性 --%> <% User user=new User(); user.setUserName("admin"); user.setUserPwd("123456"); request.setAttribute("user",user); // 存入request域 %> 用户名:${user.userName} <%-- 等价于 user.getUserName() --%> 密码:${user.userPwd} <br> <%-- 6. []运算符:获取集合/数组元素 --%> <% ArrayList list = new ArrayList(); list.add("one"); list.add("two"); list.add("three"); session.setAttribute("list", list); // 存入session域 %> 第一个元素: ${list[0]},第三个元素: ${list[2]} <br> </body> </html>

重点:页面必须加isELIgnored="false",否则 EL 表达式会被当成普通文本!


四、实战:表单提交 + EL 接收参数

最常用的场景:表单提交数据,JSP 用 EL 表达式快速接收,无需手动获取 request 参数!

1. 登录表单页面(form.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <body> <%-- 表单提交到uint44.jsp --%> <form action="${pageContext.request.contextPath}/uint44.jsp"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="userpwd"><br> <input type="submit" value="登录"> </form> </body> </html>

2. 接收参数页面(uint44.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>表单参数接收</title> </head> <body> <%-- EL内置对象param:直接获取表单参数 --%> 你的用户名为: ${param.username}, 密码为:${param.userpwd} </body> </html>

神器${param.参数名}直接获取表单提交的数据,一行代码搞定!


五、知识点总结(必看)

  1. JavaBean:私有变量 + 无参构造 + get/set 方法,是数据封装的标准
  2. JSP 动作标签<jsp:useBean>创建对象、<jsp:setProperty>赋值、<jsp:getProperty>取值
  3. EL 表达式${}简化数据操作,支持运算、JavaBean、集合、表单参数
  4. 开发规范:EL 必须开启isELIgnored="false",JavaBean 必须有无参构造
http://www.jsqmd.com/news/684046/

相关文章:

  • FPGA实战:在Vivado里快速搭建一个可配置的偶数分频IP核(附源码)
  • 网络安全已进入“高频攻击、高复杂度、高不确定性”的新阶段
  • 数百种蛋白同步解析:抗体芯片如何重塑WB技术边界
  • ESP-C3-12F内置USB烧录实测:比传统串口快多少?省时技巧与常见错误排查
  • MySQL触发器在主从架构下的表现_MySQL触发器主从同步策略
  • 高效解决开发环境依赖问题:Visual C++运行库完整配置指南
  • 告别Office依赖!用Aspose.Slides for .NET在服务器端批量生成PPT(附C#代码示例)
  • 手把手教你理解芯片‘身份证’PUF:从制造误差到密钥生成,一次搞懂SRAM PUF的完整生命周期
  • 别再死记硬背了!用C语言手搓DES-CBC加密,从S盒到IV的实战避坑指南
  • 玩客云魔改指南:除了NAS还能跑Docker?Armbian系统下的5种隐藏玩法实测
  • 词袋模型(Bag Of Words)在文本分类中的原理与实践
  • 计算机毕业设计:Python大盘行情与个股诊断预测系统 Flask框架 TensorFlow LSTM 数据分析 可视化 大数据 大模型(建议收藏)✅
  • Dify .NET客户端源码AOT适配全链路分析(从IL修剪到NativeAOT陷阱避坑指南)
  • Phi-3-mini-4k-instruct-gguf效果对比:vs Qwen2-0.5B/Qwen1.5-1.8B在指令任务上的差异
  • 5块钱的2N3819 JFET到手实测:从真假辨别到搭建简易非接触验电笔
  • 从Simulink仿真到STM32烧录:手把手搭建SVPWM算法验证闭环(附模型和工程)
  • 手机信号屏蔽器考场屏蔽器会议室屏蔽器公司
  • 备忘录:微软开源MarkItDown,万能文档转Markdown神器
  • 2025届学术党必备的六大AI写作工具推荐榜单
  • 不止是模板:拆解APPLIED SOFT COMPUTING投稿要求背后的学术写作规范
  • 从‘存钱罐’到‘仓库’:图解C#值类型和引用类型在内存里到底怎么放的
  • 从HMM到BiLSTM-CRF:我的NER模型进化之路与性能对比实验报告
  • QMK Toolbox终极指南:零代码刷写机械键盘固件的免费开源工具
  • 告别‘白球’和黑块:图新地球LSV数据下载与加载的保姆级避坑指南
  • 2025最权威的十大AI科研方案解析与推荐
  • 别再死记命令!用Packet Tracer仿真思科ASA5505防火墙,可视化学习流量放行配置
  • Bili2text:当视频学习遇上文字效率的革命性解法
  • Win11Debloat终极指南:如何快速优化Windows系统性能
  • STM32+Android蓝牙示波器实战:从电路设计到App开发的避坑指南
  • 用两块74LS153芯片在Quartus II里搭个8选1数据选择器,附仿真与实战(三变量表决器/奇偶校验)