- SpringMVC架构介绍
丹_妮
spring
MVC框架要做的事情?1)将url映射到java类或java类的方法2)封装用户提交的数据3)处理请求-调用相关的业务处理-封装响应数据4)将响应的数据进行渲染jsphtml为什么要学习SpringMVC?性能较struts2好简单、便捷、易学天生和Spring无缝集成,使用Spring的IOC和AOP还有事务使用约定由于配置能够进行简单的junit测试支持restful风格异常处理本地化、国际化
- 如何进行架构技术方案选型?
猫咪张
系统架构设计strutsspringmvcjsf架构设计ejb
在架构设计时,通常面临的一个难题是,如何选择架构的技术方案.这也是各种项目都会碰到的问题.我们到底是选择C/S,B/S模式,如果选择C/S,那么到底是三层C/S还是两层,到底要不要分布式,B/S的展示层是自己写MVC,还是应用已有的开源的如SpringMVC,Struts2.0,JSF技术。总之,可选的确实是太多了。那么怎么去选择呢?这个问题确实有点难,但也有解决方法的。首先,我们需要研究我们项目
- Apache Struts2 S2-005 远程代码执行漏洞
夭-夜
strutsapachejava
文章目录基础知识一、通过BUMP构造数据包1.repeater模块构造post包2.浏览器访问以下链接二、反弹shell1.开启监听2.构造数据包总结基础知识ApacheStruts2ApacheStruts2框架是一个用于开发JavaEE网络应用程序的Web框架,质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Stru
- Java编程开发新手学习:数组方法的应用猜字母游戏
Java小辰
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。给你学习路线:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmv
- 现在程序员这么多,我学习java这块应该学到什么程度才能不被淘汰呢?
渡你眉间山河
一、夯实基础JavaSE这是基础,一定要好好学习!Java语法,面向对象(包括类、对象、方法、继承、封装、抽象、多态、消息解析等),常见API,数据结构,集合框架,设计模式(包括创建型、结构型、行为型),多线程和并发,I/O流,Stream,网络编程。JavaEEJavaEE是在JavaSE的基础上构建的,JavaEE容器,Web容器,常用框架(包括Struts2、Hibernate、Mybati
- JAVA Web学习(20)___第14章Struts2基础
岁月静好浅笑安然
第14章Struts2基础14.1Struts2概述14.1.1理解MVC原理14.1.2Struts2框架的产生14.1.3Struts2的结构体系14.2Struts2入门14.2.1Struts2的获取与放置开发struts项目必须添加的类库文件名称说明struts2-core-2.5.20.jarStruts2的核心类库xwork-core-2.1.6.jarXworkd的核心类库ognl
- struts2_ognl入门
小漫画ing
ognl的概述:1、之前在web阶段,学过el表达式,el表达式在jsp中获取域对象中的值。2、ognl也是一种表达式,而这个种表达式的功能更加强大。(1)在struts里面操作只栈数据。(2)一般把OGNL在Struts2操作,和Struts2标签一起使用操作值栈。3、OGNL不是Struts2的一部分,单独项目,经常和Struts2一起使用而已。(1)使用OGNL时候首先导入jar包,Stru
- SSH框架之Spring+Struts2+Hibernate整合篇
小小一技术驿站
回顾-Hibernate框架ORM:对象关系映射.把数据库表和JavaBean通过映射的配置文件映射起来,操作JavaBean对象,通过映射的配置文件生成SQL语句,自动执行.操作数据库.1:类名.hbm.xml映射配置文件.2:hibernate.cfg.xml核心配置文件.3:使用Hibernate提供的API操作.Struts2框架:和客户端进行交互1.在web.xml配置过滤器.2.str
- Struts2中的action中result中的type有哪些类型
阿立聊代码
strutsstruts2.0
Struts2框架默认配置中已经提供了很多的result类型,可以打开struts-default.xml配置文件来查看。chain:Action链式处理的结果类型,也就是将结果转发到这个action中。chart:整合JFreeChart的结果类型dispatcher:用于整合JSP的结果类型freemarker:用于整合freemarker结果类型。httpheader:用于控制特殊的HTTP
- java进阶学习第一天_Java全栈开发springmvc学习笔记第一天
35612123
java进阶学习第一天
SpringmvcJavaEE体系结构什么是mvc?原始的mvc:Mvc:什么springmvc?Springmvc是一个web层mvc框架,类似struts2.Springmvc和spring关系?Springmvc是spring的一部分。Springmvc执行原理(流程)Struts2:控制层:strutsPrepareAndExcuteFilter–前端控制器/*l接受请求l转发请求前端控制
- Strust2远程代码执行漏洞(S2-033)
锋刃科技
安全安全
前言ApacheStrut2REST插件存在漏洞,可以远程执行任意指令影响版本Struts2.3.20–Struts2.3.28(不包括2.3.20.3和2.3.24.3)。环境搭建dockerpullmedicean/vulapps:s_struts2_s2-033dockerrun-d-p80:8080medicean/vulapps:s_struts2_s2-033打开your-IP:80/
- [旧文系列] Struts2历史高危漏洞系列-part2:S2-007/S2-008/S2-009
xc8qanAFenlka@x1
struts安全web安全java
文章目录关于前言S2-007漏洞复现与分析可回显PoC漏洞修复S2-008漏洞复现与分析Vuln-1:RemotecommandexecutioninCookieInterceptorVuln-2:RemotecommandexecutioninDebuggingInterceptorVuln-2:可回显PoC漏洞修复S2-009漏洞复现与分析可回显PoC漏洞修复Reference关于系列是笔者将
- 0x26.Apache Struts2远程代码执行漏洞(S2-019)复现
半情调
墨者学院墨者学院S2-019
s2-019:动态方法调用是一种已知会施加可能的安全漏洞的机制,但到目前为止,它默认启用,警告用户应尽可能将其关闭;构造poc:?debug=command&expression=#f=#_memberAccess.getClass().getDeclaredField('allowStaticMethodAccess'),#f.setAccessible(true),#f.set(#_membe
- Struts2 S2-045漏洞复现
你能拿我咋的
渗透测试漏洞复现strutsjavaweb安全
1.漏洞概述OGNL是ObjectGraphicNavigationLanguage(对象图导航语言)的缩写,它是一个开源项目。Struts框架使用OGNL作为默认的表达式语言。struts2的rce本质都是一样的(除了S2-052以外),都是Struts2框架执行了恶意用户传进来的OGNL表达式,造成远程代码执行。可以造成“命令执行、服务器文件操作、打印回显、获取系统属性、危险代码执行”等,只不
- JavaWeb编程实战宝典(5)___ 第5章 编写Struts2第一个程序
岁月静好浅笑安然
第5章编写Struts2第一个程序5.1Struts2的MVC模式Struts2中的控制器主要有如下4个功能简单验证复制验证商业逻辑流控制Struts2框架结构可分为以下4部分JSP/Struts2标签(视图层V层)ActionSupport的子类(控制层C层)处理业务逻辑和数据逻辑的JavaBean(模型层M层)用于保存Struts2配置的struts.xml文件5.2Struts2的结构体系5
- OGNL
虫儿飞ZLEI
layout:posttitle:OGNLsubtitle:OGNLdate:2018-05-31author:ZLheader-img:img/20180531.jpgcatalog:truetags:-OGNLOGNL(对象视图导航语言)${user.addr.name}这种写法就叫对象视图导航.OGNL不仅仅可以视图导航.支持比EL表达式更加丰富的功能.使用导包在struts2的包中就已经包
- 2018年java编程发展空间大吗?
Java小辰
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。给你学习路线:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmv
- 墨者学院-Apache Struts2远程代码执行漏洞(S2-032)复现
nohands_noob
靶场地址:https://www.mozhe.cn/bug/detail/NWZ1OHFUbDgxV3JNdDhMa0RHQ3BnZz09bW96aGUmozhe漏洞编号:CVE-2016-3081影响范围:Struts2.3.20-StrutsStruts2.3.28(2.3.20.3和2.3.24.3除外)漏洞原理:当启用动态方法调用时,可以传递可用于在服务器端执行任意代码的恶意表达式任意命令
- struts2简介
活着_3840
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。struts2使用的是拦截器的概念,结合各种过滤器获取url,与struts1最大的区别在于1是单例的(所有请求共享一个实例),2是多例的(一个请求一个实例),还引入“值栈”概念,可以达到与servletAPI完全
- 当Struts2遇到防火墙,你的思路够骚吗?
CanMeng
一、背景偶然碰到一个小站存在st2-046代码远程执行漏洞,心里美滋滋。执行whoami查看自己是什么权限已经是root了,就尝试上传一个webshell但是却提示上传失败,页面不存在上传txt显示成功经过测试,服务器装有一些防火墙之类的东西或者是安全策略,只要上传的文件里包含可执行代码就上传失败但是转念一想我为什么非要传webshell,传上去之后不还是要提权,弄到他的ssh权限。于是冷静思考了
- CVE-2017-12149漏洞复现
黑客大佬
漏洞复现web安全安全网络python
服务攻防-中间件安全&CVE复现&Weblogic&Jenkins&GlassFish漏洞复现中间件及框架列表:IIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins,GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery等1、中间件-Web
- 过滤器和拦截器的区别
苦风
过滤器(Filter)过滤器,是在javaweb中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字符。拦截器(Inte
- Java编程学习:集合框架详解
Java小辰
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。给你学习路线:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmv
- struts2 向值栈中放数据的三种方式
DouDouZH
一、获取值栈的对象,调用值栈的set方法1、代码ValuesStackAction1.javapackagework.zhangdoudou.Action;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;importcom.opensymphony.xwork2.util
- POI异步导入Excel兼容xsl和xlsx
weixin_33775572
数据库jsonjava
项目架构:spring+struts2+hibernate4+oracle需求:用户导入excel文件,导入到相应的数据表中,要求提供导入模板,支持xls和xlsx文件思路分析:1、提供一个下载链接,点击下载,可以使超链接,src直接是项目路径加文件名。2、通过上传文件,服务器接收上传,返回一个上传后的服务器本地路径,通过ajax异步赋值到jsp的路径隐藏域。3、ajax异步提交导入请求,后台处理
- 定制datatable ajax发送给服务端的数据
金刚_30bf
官网描述http://www.datatables.club/manual/server-side.html#initdtDT自动请求的参数(Sentparameters)当开启了服务器模式时,DataTables会发送如下参数到服务器ps:需要说明的是如果你是Java开发者,那么使用struts2的需要注意,会有错误抛出,因为处理不了类似columns[i][search][regex]的变量如
- Apache Log4j2漏洞复现(反弹shell)
安全菜
apache
0x01漏洞描述ApacheLog4j2是一款优秀的Java日志框架。2021年11月24日,阿里云安全团队向Apache官方报告了ApacheLog4j2远程代码执行漏洞。由于ApacheLog4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,ApacheStruts2、ApacheSolr、ApacheDruid、Apa
- java编程新手入门基础知识学习
Java小辰
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。给你学习路线:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmv
- Spring、Spring MVC、Struts2、、优缺点整理大纲
冯匿
Spring及其优点大部分项目都少不了Spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢Spring是什么:Spring是一个轻量级的DI和AOP容器框架。说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类。DI:称作依赖注入(DependencyInje
- BUUCTF-Real-[struts2]s2-001
真的学不了一点。。。
漏洞复现与研究javastruts
漏洞描述struts2漏洞S2-001是当用户提交表单数据且验证失败时,服务器使用OGNL表达式解析用户先前提交的参数值,%{value}并重新填充相应的表单数据。例如,在注册或登录页面中,如果提交失败,则服务器通常默认情况下将返回先前提交的数据。由于服务器用于%{value}对提交的数据执行OGNL表达式解析,因此服务器可以直接发送有效载荷来执行命令。漏洞poc验证经过poc验证,我们发现[st
- PHP,安卓,UI,java,linux视频教程合集
cocos2d-x小菜
javaUIPHPandroidlinux
╔-----------------------------------╗┆
- 各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
bozch
.net.net mvc
在.net mvc5中,在执行某一操作的时候,出现了如下错误:
各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
经查询当前的操作与错误内容无关,经过对错误信息的排查发现,事故出现在数据库迁移上。
回想过去: 在迁移之前已经对数据库进行了添加字段操作,再次进行迁移插入XXX字段的时候,就会提示如上错误。
&
- Java 对象大小的计算
e200702084
java
Java对象的大小
如何计算一个对象的大小呢?
 
- Mybatis Spring
171815164
mybatis
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService userService = (CustomerService) ac.getBean("customerService");
Customer cust
- JVM 不稳定参数
g21121
jvm
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”
- 用户自动登录网站
永夜-极光
用户
1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码
2.思路:将用户的信息保存为cookie
每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接
- centos7 安装后失去win7的引导记录
程序员是怎么炼成的
操作系统
1.使用root身份(必须)打开 /boot/grub2/grub.cfg 2.找到 ### BEGIN /etc/grub.d/30_os-prober ### 在后面添加 menuentry "Windows 7 (loader) (on /dev/sda1)" { 
- Oracle 10g 官方中文安装帮助文档以及Oracle官方中文教程文档下载
aijuans
oracle
Oracle 10g 官方中文安装帮助文档下载:http://download.csdn.net/tag/Oracle%E4%B8%AD%E6%96%87API%EF%BC%8COracle%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3%EF%BC%8Coracle%E5%AD%A6%E4%B9%A0%E6%96%87%E6%A1%A3 Oracle 10g 官方中文教程
- JavaEE开源快速开发平台G4Studio_V3.2发布了
無為子
AOPoraclemysqljavaeeG4Studio
我非常高兴地宣布,今天我们最新的JavaEE开源快速开发平台G4Studio_V3.2版本已经正式发布。大家可以通过如下地址下载。
访问G4Studio网站
http://www.g4it.org
G4Studio_V3.2版本变更日志
功能新增
(1).新增了系统右下角滑出提示窗口功能。
(2).新增了文件资源的Zip压缩和解压缩
- Oracle常用的单行函数应用技巧总结
百合不是茶
日期函数转换函数(核心)数字函数通用函数(核心)字符函数
单行函数; 字符函数,数字函数,日期函数,转换函数(核心),通用函数(核心)
一:字符函数:
.UPPER(字符串) 将字符串转为大写
.LOWER (字符串) 将字符串转为小写
.INITCAP(字符串) 将首字母大写
.LENGTH (字符串) 字符串的长度
.REPLACE(字符串,'A','_') 将字符串字符A转换成_
- Mockito异常测试实例
bijian1013
java单元测试mockito
Mockito异常测试实例:
package com.bijian.study;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.
- GA与量子恒道统计
Bill_chen
JavaScript浏览器百度Google防火墙
前一阵子,统计**网址时,Google Analytics(GA) 和量子恒道统计(也称量子统计),数据有较大的偏差,仔细找相关资料研究了下,总结如下:
为何GA和量子网站统计(量子统计前身为雅虎统计)结果不同?
首先:没有一种网站统计工具能保证百分之百的准确出现该问题可能有以下几个原因:(1)不同的统计分析系统的算法机制不同;(2)统计代码放置的位置和前后
- 【Linux命令三】Top命令
bit1129
linux命令
Linux的Top命令类似于Windows的任务管理器,可以查看当前系统的运行情况,包括CPU、内存的使用情况等。如下是一个Top命令的执行结果:
top - 21:22:04 up 1 day, 23:49, 1 user, load average: 1.10, 1.66, 1.99
Tasks: 202 total, 4 running, 198 sl
- spring四种依赖注入方式
白糖_
spring
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我
- angular.injector
boyitech
AngularJSAngularJS API
angular.injector
描述: 创建一个injector对象, 调用injector对象的方法可以获得angular的service, 或者用来做依赖注入. 使用方法: angular.injector(modules, [strictDi]) 参数详解: Param Type Details mod
- java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待
bylijinnan
Integer
public class PC {
/**
* 题目:生产者-消费者。
* 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
*/
private static final Integer[] val=new Integer[10];
private static
- 使用Struts2.2.1配置
Chen.H
apachespringWebxmlstruts
Struts2.2.1 需要如下 jar包: commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-logging-1.0.4.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar spring.jar
struts2-core-2.2.1.jar struts2-sp
- [职业与教育]青春之歌
comsci
教育
每个人都有自己的青春之歌............但是我要说的却不是青春...
大家如果在自己的职业生涯没有给自己以后创业留一点点机会,仅仅凭学历和人脉关系,是难以在竞争激烈的市场中生存下去的....
&nbs
- oracle连接(join)中使用using关键字
daizj
JOINoraclesqlusing
在oracle连接(join)中使用using关键字
34. View the Exhibit and examine the structure of the ORDERS and ORDER_ITEMS tables.
Evaluate the following SQL statement:
SELECT oi.order_id, product_id, order_date
FRO
- NIO示例
daysinsun
nio
NIO服务端代码:
public class NIOServer {
private Selector selector;
public void startServer(int port) throws IOException {
ServerSocketChannel serverChannel = ServerSocketChannel.open(
- C语言学习homework1
dcj3sjt126com
chomework
0、 课堂练习做完
1、使用sizeof计算出你所知道的所有的类型占用的空间。
int x;
sizeof(x);
sizeof(int);
# include <stdio.h>
int main(void)
{
int x1;
char x2;
double x3;
float x4;
printf(&quo
- select in order by , mysql排序
dcj3sjt126com
mysql
If i select like this:
SELECT id FROM users WHERE id IN(3,4,8,1);
This by default will select users in this order
1,3,4,8,
I would like to select them in the same order that i put IN() values so:
- 页面校验-新建项目
fanxiaolong
页面校验
$(document).ready(
function() {
var flag = true;
$('#changeform').submit(function() {
var projectScValNull = true;
var s ="";
var parent_id = $("#parent_id").v
- Ehcache(02)——ehcache.xml简介
234390216
ehcacheehcache.xml简介
ehcache.xml简介
ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheManager的配置信息的。根据之前我们在《Ehcache简介》一文中对CacheManager的介绍我们知道一切Ehcache的应用都是从CacheManager开始的。在不指定配置信
- junit 4.11中三个新功能
jackyrong
java
junit 4.11中两个新增的功能,首先是注解中可以参数化,比如
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runn
- 国外程序员爱用苹果Mac电脑的10大理由
php教程分享
windowsPHPunixMicrosoftperl
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因:
1、Mac OS X 是基于 Unix 的
这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 wi
- 位运算、异或的实际应用
wenjinglian
位运算
一. 位操作基础,用一张表描述位操作符的应用规则并详细解释。
二. 常用位操作小技巧,有判断奇偶、交换两数、变换符号、求绝对值。
三. 位操作与空间压缩,针对筛素数进行空间压缩。
&n
- weblogic部署项目出现的一些问题(持续补充中……)
Everyday都不同
weblogic部署失败
好吧,weblogic的问题确实……
问题一:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [zip:E:/weblogic/user_projects/domains/base_domain/serve
- tomcat7性能调优(01)
toknowme
tomcat7
Tomcat优化: 1、最大连接数最大线程等设置
<Connector port="8082" protocol="HTTP/1.1"
useBodyEncodingForURI="t
- PO VO DAO DTO BO TO概念与区别
xp9802
javaDAO设计模式bean领域模型
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。
它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(指的是他们的属性)。这样,PO独立出来,数据持