简单介绍:
JavaBean是一种解决前端样式代码和后端业务处理逻辑混淆的解决办法,在初期的代码编写的过程中,会发现在JSP中编写的很多的前端获取数据的代码和后端进行逻辑操作和对象封装的代码都写在了一起,在后期维护的时候就非常的不方便,这个时候就可以将不同的功能分别写在一个Java类中,在使用的时候调用不同的类完成相应的功能,达到业务和界面分离的效果,这种与前端HTML代码分离,且用Java代码进行封装的类就是一个JavaBean,JavaBean的本质就是一些封装了不同功能的具体的Java类。
注意事项:
注意事项,在我们编写Java类的时候,需要严格遵守变量和方法的编写规范,因为在JavaBean中,有一些方法和标签是固定格式的调用Get和Set方法,如果我们不遵守他给我们制定的规则就无法愉快的使用,首先我们来看看JavaBean是如何进行对象信息的封装的
需求描述:现在我们需要从表单中接受一个用户信息,并把用户信息封装进一个类中,并在另一个JSP页面中对封装的类的属性进行判断
登陆界面:
<%--
Created by IntelliJ IDEA.
user.User: Lenovo
Date: 2022/11/7
Time: 10:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆界面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/11_7JavaBen/verify2.jsp">
<table>
<tr>
<td>用户名:</td> <td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td> <td><input type="password" name="password"></td>
</tr>
<tr>
<td><button type="submit">提交</button></td>
</tr>
</table>
</form>
</body>
</html>
User类:也就是我们进行对象封装的类:
package user;
public class User {
private String username;
private String password;
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
}
在这里面有一个注意点就是在我们创建JavaBean的时候有一些注意事项:
首先就是必须要有一个无参的构造对象
然后就是属性全部都是私有化,也就使用private修饰符对内部属性进行修饰
最后就是设置外部可以识别的Set和Get方法,这个方法的名字一定要严格使用Get属性名的方式,并且属性名的首字母要大写
这三个注意事项一定要牢记,在我们我们会反复提起并一一解释这么做的目的和不这么做的后果
还有一个不太重要的注意事项就是我们创建的JavaBean类尽量不要直接放在src文件夹下面,最好是再创建一个二级目录放进去
验证登陆界面:
<%@ page import="user.User" %><%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2022/11/7
Time: 10:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆信息验证</title>
</head>
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
User u = new User(username,password);
if(u.getUsername().equals("")&&u.getPassword().equals("")){
out.write("登陆成功");
}else {
out.write("登陆失败");
}
%>
</body>
</html>
再度简化:使用标签的形式创建JavaBean对象并获取对象
在上一个案例中,我们是在JSP中插入了一段脚本代码写入的Java代码片段,但是在实际开发中,可能会出现由前端人员编写代码的情况,为了方便前端人员编码,就出现了可以用标签来代替Java代码的形式,我们直接来看简化后的代码:
<%--
Created by IntelliJ IDEA.
user.User: Lenovo
Date: 2022/11/7
Time: 10:31
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆验证界面</title>
</head>
<body>
<jsp:useBean id="user" class="user.User"/>
<jsp:setProperty name="user" property="password" />
<jsp:setProperty name="user" property="username" />
姓名:<jsp:getProperty name="user" property="username"/>
<br>
密码:<jsp:getProperty name="user" property="password"/>
</body>
</html>
被简化的代码就只有验证登陆界面,所以我们就只展示登录验证界面这一个界面就好了,其中的关键代码就是在body标签内部的jsp动作标签,我们来一行一行的看这些代码和Java代码对照关系
首先是创建对象的部分:
之前我们在Java中是这么写的:
在标签中,我们是这么写的:
其中<jsp:userBean>标签,也就是创建JavaBean对象实例的标签中中的id属性就是对象名,class属性就是对象类所在的位置,这个位置是相对于src目录的相对路径。还有就是在我们使用标签创建对象的时候,调用的是我们的无参构造方法,对应我们的JavaBean规范的第一条。那么为什么我们在写了一个Java带参的构造方法之后还需要些一个无参的构造方法呢?这里就涉及到Java的特性,就是在我们写构造方法的时候,如果不写构造方法,在创建对象的时候默认是有一个自带的无参的构造方法的,但是当我们写了一个带参的构造方法的时候,这个自带的无参构造方法就消失了,访问不到了,所以当我们调用无参的构造方法的时候就会报错,所以我们会在写构造方法的时候要么一个都不写,要么就写两个,一个带参的和一个无参的。
在<jsp:setProperty>标签,也就是用来设置类的属性值的标签中,name属性就是对象的名字,也就是对应<jsp:userBean>中的id指向的值,property属性就是我们要设置的值,这个值来自于我们之前在登陆界面传递进来的值,所以在登陆界面的时候,input标签的name属性的值,和<jsp:setProperty>的property属性的值,以及JavaBean中的属性最好要保持一致,这就是我们之前说的JavaBean的写法规范的第二条,如果不遵守他给我们设定的这些规范,在我们使用标签接收数据和传递数据的时候就会出现找不到这个属性对应的数据的情况。
那么在了解了JavaBean的基本概念,使用方法和注意事项之后,我们再来做一个简单的案例来巩固一下。
案例介绍:封装图书信息
图书信息录入界面:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2022/11/7
Time: 11:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>图书信息录入界面</title>
</head>
<body>
<form action="<c:url value="/11_7JavaBen/BookShow.jsp"/>">
<table>
<tr><td class="td1">书名:</td> <td><input type="text" name="bookName"></td></tr>
<tr><td class="td1">价格:</td> <td><input type="text" name="bookPrice"></td></tr>
<tr><td class="td1">作者:</td> <td><input type="text" name="bookAuthor"></td></tr>
<tr><td colspan="2"><button type="submit">提交</button></td></tr>
</table>
</form>
</body>
</html>
图书信息封装类:JavaBean类:
package user;
public class Book {
private String BookName;
private int BookPrice;
private String BookAuthor;
public Book() {
}
public Book(String bookName, int bookPrice, String bookAuthor) {
BookName = bookName;
BookPrice = bookPrice;
BookAuthor = bookAuthor;
}
public String getBookName() {
return BookName;
}
public void setBookName(String bookName) {
BookName = bookName;
}
public int getBookPrice() {
return BookPrice;
}
public void setBookPrice(int bookPrice) {
BookPrice = bookPrice;
}
public String getBookAuthor() {
return BookAuthor;
}
public void setBookAuthor(String bookAuthor) {
BookAuthor = bookAuthor;
}
}
图书信息展示界面:
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2022/11/7
Time: 11:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>图书展示界面</title>
</head>
<body>
<jsp:useBean id="Book" class="user.Book"/>
<%-- 当值为*号的时候表示导入所有的参数,说明这个参数传递支持正则表达式--%>
<jsp:setProperty name="Book" property="*"/>
<div style="text-align: center">
书名:<jsp:getProperty name="Book" property="bookName"/>
<br>
作者:<jsp:getProperty name="Book" property="bookAuthor"/>
<br>
价格:<jsp:getProperty name="Book" property="bookPrice"/>
</div>
</body>
</html>
注意点:
这里的注意点就是使用<jsp:setProperty name=”Book” property=”*”/>可以将所有的属性导入进JavaBean里面,还有就是我们反复提起的JavaBean编写时候变量和属性的规范性,以及在传递数据时候的变量统一原则
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153345.html