技术标签: java web
为什么先说javabean呢?因为最开始学java web的时候,很多人都是从JSP学起的,从而开始认识 这种特殊的类:只包含私有属性,和set、get方法的类。而这种类,就是本篇所讲的重点。
ps:博主会尽量减少概念性的话语,多用白话文来解释,篇幅可能较长,但理解起来很容易
javabean是特殊的Java类,它与其它Java类相比而言独一无二的特征:
提供一个默认的无参构造函数。
需要被序列化并且实现了Serializable接口。
可能有一系列可读写属性。
可能有一系列的"getter"或"setter"方法。
entity:实体类。
我们都是知道java是很接近人类语言的一门“编程语言”,需要什么东西,去new一个对象就好了。但是真正去用的时候,往往需要一个实体,比如说创建一个学生对象,如果没有实体,将会是这样:
Object student = new Object();
这明明就是一个任意对象,只是给它起了一个 “student”的名字,没有姓名,没有年龄,什么都不是。
(如果不知道什么是Object,建议先去了解一下java中的Object)
所以说,要先定义一个实体:
public class Student {
private String name;
private int age;
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;
}
}
有了这个实体以后,再可以创建一个学生对象:
Student student = new Student();
这个实体中有"姓名"和"年龄"的属性,你才可以给实体对象设置姓名年龄。
而“Student”这个java类,就是一个实体类。
(实质是一个简化的javabean → 只有私有属性加 set、get方法)
有了javabean和entity的认识,再认识vo、pojo……就方便多了,它们都是通过这种“特殊的java类”演化而来,只是其中有细微的个别差异。
VO:表现对象 ---- value object
通常是Web向模板渲染引擎层传输的对象。再说白一点就是前端与后端交互的对象。
举个栗子,vo的两种用法:
后端返回前端:有时前端给后端传一个属性,后端要返回一堆的东西,这一堆东西又分布在很多张表里面,这时可以把需要返回的属性封装成一个vo类,返回给前端就可以了
前端请求后端:前端请求后端接口,可能会传很多属性,比如注册页,多的有十几个属性,后端如果每个都单独接收,就太麻烦了,这时就把属性封装成一个vo类,所有的属性都在vo里面,后端只需要接收这个vo就可以了
POJO:简单java对象 ---- plain ordinary java object
只包含private修饰的属性和与之对应的set、get方法。没有继承,没有接口,没有注解,没有被其它java框架入侵。(有时会直接做为与数据表一一对应的映射类)
PO:持久化对象 ---- Persistent Object
一般与数据库中,表结构形成一一对应的映射关系。
DTO:数据传输对象 ---- data transfer object
数据传输对象,Service向外传输的对象
DO:领域对象 ---- Domain Object
从现实世界中抽象出来的有形或无形的业务实体
(自黑时刻:什么场景使用本人其实也不知道,甚至这概念都不太懂,查了不少资料就他么这一句话!)
自我总结一波:这5种叫法实质内容都差不多,只是不同的业务场景使用不同的名字,能使整个项目更加清晰。
BO:业务对象 ---- business object
由Service层输出的封装业务逻辑的对象,没啥好解释的,说到底就是解耦吧。
DAO:数据访问对象 ---- data access object
持久化的操作,数据库的增删改查,一般以接口的形式存在。
博客推荐:
DAO,Service,BO的关系 我用的ssm架构就是这篇博客中所说的模式1
阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义
如有错误的地方,麻烦指出,谢谢!?
1、直方图法 方法描述:有两幅图像patch(当然也可是整幅图像),分别计算两幅图像的直方图,并将直方图进行归一化,然后按照某种距离度量的标准进行相似度的测量。 方法的思想:基于简单的向量相似度来对图像相似度进行度量。 优点:直方图能够很好的归一化,比如256个bin条,那么即使是不同分辨率的图像都可以直接通过其直方图来计算相似度,计算量适中。比较适...
1、本作品由完整演示、元件库版、框架模板三部分组成• 完整演示的.rp格式文件包含了全部元件和模板内容,以及相关元件类型的介绍和扩展的交互体验类文章分享,建议在使用前先熟悉完整演示的相关内容;• 元件库版的.rplib格式是用于导入到Axure元件库中可快速拖出使用的版本,相关元件类型已经分解成比较小的粒度且有对应的命名,在使用时可以使用名称快速查找。元件库版的导入方法下面有详细说明;• 框架模板是Axure元件库的设计方法和相关规范的应用,可以作为学习原型设计的极佳参考案例。同时,基于这些模板也可帮
{#是否开启debug模式 "Debug": true,#是否记录到系统日志 "EnableSyslog": false,#web 端口 "ListenAddress": ":3000",#被管理数据库用户 "MySQLTopologyUser": "orc_client_user",#被管理数据库密码 "MySQLTopologyPassword": "orc_client_password",#被管理的MySQL的用户密码配置文件 "MySQLTopologyCred
一直使用框架写东西,最近自己写一个简单脚本忽然发现最简单的连接数据库的知识记不太清楚了,特意记下来以便平时多复习。1.最简单的方式-mysql(面向过程)(不建议使用高版本PHP已经弃用,建议使用mysqli或PDO)<?php$con = mysql_connect("localhost","root","password");$select_db = mysql_select_db('test');if (!$select_db) { die("could n.
昨天深圳交投科技年会在深圳市福田区桂花路5号福朋喜来登酒店四楼香港厅进行,吃饭吃到差不多的时候开始抽奖,3-2-1这样,三等1000,二等2000,一等3000,分别是10个,5个,1个名额,抽完后又开始抽1000,2000或者5000的,那些就不说了,后面我以为没戏了,没想到抽了1个5000的,然后我中奖,上去说了些话,主持问我要干几年,然后五年,然后就叫我下去了,然后就这样过了?其他很多都是直...
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Collections;namespace ConsoleApplication1{ class Program { static void Main(string
PrettyPrinter是Python 3.6 及以上版本中的一个功能强大、支持语法高亮、描述性的美化打印包。它使用了改进的Wadler-Leijen布局算法,和Haskell打印美化库中的prettyprinter以及anti-wl-pprint、 JavaScript的Prettier、Ruby的prettypreinter.rb 以及 IPython的Ipython.lib.pretty类...
vue环境具体配置及创建项目的教程详见月泰的博客或者通过苹果终端命令来进行安装:安装node.js:/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”安装npm:1.获取node安装模块的权限:sudo chmod -R 777 /usr/lo...
mysql安装的时候一般都会指定字符集,如果没有指定,可能会出现数据库乱码问题。这里将mysql设置为utf8编码。一:登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,显示如下:一般来说,character_set_database和character_set_server编码格式正常就不会出现问题,如果还有问题那么就应该是连接层编码格式和数据编码格...
最近使用element-ui中的日期选择组件,发现选中日期却没有回显出来,但是提交到后台的日期数据却是正确的,即数据变了,视图没变。经过反复查找,终于发现问题出在给实例对象增加新属性时,直接通过 ‘=’形式赋值是不会触发视图更新的,应该使用Vue.set给实例对象添加新属性。例如:this.modeForm.validDate = [ response.startDate, response.endDate]this.modeForm是已经创建的实例对象,通过= 创建新属性,不会触发视图更新
步骤如下:特别注意:安装过程中,任何路径都不要出现中文路径,否则安装不成功,破解不成功,仿真不成功,所以保存工程文件时不要出现中文路径!!!1、安装前,先把任何的杀毒软件,防火墙,安全卫士等安全工具关闭,否则破解文件会被杀死!!2、先安装主程序feko_distrib_5.5_win323、安装完主程序后,打开FEKO5.5,会弹出一个窗口:CADFEKO:Lice
用js实现一个自动打字的效果