JavaWeb 核心:JavaBean+JSP 动作标签 + EL 表达式全解析
在 JavaWeb 开发的入门阶段,JavaBean、JSP 标准动作标签、EL 表达式是绕不开的核心知识点,它们是实现数据封装、页面简化操作、数据快速展示的基础
一、什么是 JavaBean?规范 + 实战一步到位
1. JavaBean 核心概念
JavaBean 本质就是遵循特定规范的 Java 普通类,专门用来封装数据(实体类),比如学生、用户、商品等对象,让数据传递和管理更规范。
2. JavaBean 必须遵守的 4 大规范
- 类必须用
public修饰 - 成员变量全部私有化(
private) - 提供无参构造方法(必备)
- 为私有变量提供公共的
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 核心功能
- 执行算术、比较、逻辑运算
- 获取域对象数据(request/session/application)
- 获取 JavaBean 属性、集合数据
- 判断空值(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.参数名}直接获取表单提交的数据,一行代码搞定!
五、知识点总结(必看)
- JavaBean:私有变量 + 无参构造 + get/set 方法,是数据封装的标准
- JSP 动作标签:
<jsp:useBean>创建对象、<jsp:setProperty>赋值、<jsp:getProperty>取值 - EL 表达式:
${}简化数据操作,支持运算、JavaBean、集合、表单参数 - 开发规范:EL 必须开启
isELIgnored="false",JavaBean 必须有无参构造
