门户安全管理(ssh+jpa)

Spring常用注解

Spring中的注解大概可以分为两大类:
1、spring的bean容器相关的注解,或者说bean工厂相关的注解。
spring的bean容器相关的注解,先后有:@Required, @Autowired, @PostConstruct, @PreDestory,还有Spring3.0开始支持的JSR-330标准javax.inject.*中的注解(@Inject, @Named, @Qualifier, @Provider, @Scope, @Singleton)
2、springmvc相关的注解。
springmvc相关的注解有:@Controller, @RequestMapping, @RequestParam, @ResponseBody等等。

  • @Component :可以注解其他类注解(带有此注解的类看作组件、当使用基于此注解的配置和类路径扫描时,这些类会被实例化)把普通的pojo实例化到Spring容器中。不属于归类(@Controller、@Services等)可用该注解标注。

  • @Resource:实现依赖注入(name(解析为bean名字)、type(解析为bean类型))默认使用byName自动注入

  • @Override 提示编译器(必须和Override父类或者java.lang.Object中一个方法同名)为我验证方法名、验证重写的方法名正确性、也可以当注解用

  • @Autowired:自动注入

  • @Service: 为实例化后的对象取个名字(一般用于Service层)

  • @JsonIgnoreProperties: 类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

  • @Repostory: @Repository用于标注数据访问组件,即DAO组件

  • @Transactional: 是声明式事务管理 编程中使用的注解
    Interface接口中的注解:

  • @Path:描述跟资源、子资源方法或子资源位置(@Path("/queryById"))

  • @Produces:转换返回数据格式(返回的内容类型)

  • @Consumes:处理清的提交内容类型,与上者相反

  • @Context、@WebParam、@QueryParam、@QueryParam

  • **@Controller:**控制器(注入服务)

  • @RequestMapping: 当所有的方法都将映射为相对于类级别的请求,表示该控制器处理的所有的请求都将被映射到value属性指示的路径下,例:@RequestMapping("/config")

  • @RequstBody: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

  • @PathVariable: 映射URL绑定的占位符。例:
    门户安全管理(ssh+jpa)_第1张图片

  • **@service:**服务(注入dao)

  • @repository:(实现dao访问)

doc数据库表及一些SQL文件

bonc-portal-core门户模块

pojo、javaBean、Entity区别:
1、javaBean(表示层):JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。更多的是一种规范,即包含一组set和get方法的java对象。

2、pojo:POJO在持久层的体现,对POJO持久化后就成了PO。PO更多的是跟数据库设计层面相关,一般PO与数据表对应,一个PO就是对应数据表的一条记录。
简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。一般在web应用程序中建立一个数据库的映射对象时,我们只能称他为POJO。理想的讲,一个POJO是一个不受任何限制的java对象。
与javaBean相比,javaBean则复杂很多,JavaBean是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于JavaBean是被容器创建的,所以JavaBean应具有一个无参的构造器。

3、entity(业务层):实体bean,一般是用于ORM对象关系映射,一个实体映射成一张表,一般无业务逻辑代码。
负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于创建一条记录,删除一个EntityBean对象会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。
Java中DAO层、Service层和Controller层的区别
总结:
个人理解DAO面向表,Service面向业务。后端开发时先数据库设计出所有表,然后对每一张表设计出DAO层,然后根据具体的业务逻辑进一步封装DAO层成一个Service层,对外提供成一个服务。

1、DAO层:
DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。

2、Service层:
Service层叫服务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。

3、Controler层:
Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。

src.java.com.bonc.portal

  • bean(实体类–表示层)
    BaseBean:(作为父类,被继承BaseBean)pageInfo(分页显示)、idList(id列表)、objectList(目标列表)
    MessageBean:(继承BaseBean)Message(公告)、userList(用户列表)
    MessageLoginIdBean:(继承BaseBean)messageLoginId
    OnlineUserBean:userLoginLog
    OnlineUserInfoBean:menuName(菜单名称)、tenantId(租户id)、moduleMenuId(归属模块(一级)菜单ID)、moduleMenuName(归属模块(一级)菜单名称)
    PortalLayoutBean(门户布局):portalLayout
    PortalMenuClickLogBean:(菜单点击日志)PortalMenuClickLog
    PortalMenuIconBean:(门户菜单图标)portalMenuIcon
    PortalMenuinfoBean:(门户菜单信息)menuinfo
    PortalPageBean:(门户分页)portalPage
    PortalPortletBean:()portalPortlet、eventIds(事件)、eventNames(事件名字)
    PortalPortletConfigBean:(上一个配置)portalPortletConfig
    PortalPortletConfigInstanceBean:(配置实例)portalPortletConfigInstance
    PortalPortletInstanceBean:portalPortletInstance(例子)
    PortalPortletThemeBean:(主题)portalPortletTheme
    PortalPortletTypeBean:(类型)portalPortletType、eventIds、eventNames
    PortalThemeBean:(门户主题)portalThemeBean
    PortletEventBean:(门户事件)portletEventBean
    ResultInfo:(统一返回结果)success(结果 boolean类型)、message(信息)、params(参数)

    • dao(数据访问层,具体到对于某个表的增删改查 DaoImpl中有sql语句)
      门户安全管理(ssh+jpa)_第2张图片

    IBaseDao(作为父类,被继承):saveOrUpdate(保存或更新、两个,参数(entity)不同)、delete(通过id删除)、deleteByCollection(根据集合删除)、findById、loadAll、findList(两个,参数(pageInfo页面信息、criterion(负载))不同)
    IMenuinfoDao:findMenuinfos(查找菜单信息)、findAllMenus(查找全部菜单)、findMenusByIdAndIsDisable(查找菜单通过id并且isDisable为0或者isDisable 为空–使用hql(HQL是Hibernate Query Language的缩写,是一种面向对象的查询语言,类似于SQL,但不是针对表和列进行操作,而是针对对象和属性.))、findAllMenusBySql(通过sql语句进行查询菜单)、findMenusToEidt(通过???查找菜单)、findMenusByParent(通过???查找菜单)、findMenusByCode(通过编码查找菜单,两个方法,不同参数(菜单编码、菜单id))、updateMenuId(更新菜单id)、findMunuByProperty(通过???查找菜单)、updateMenuinfoByMenuinfoTypeId(更新菜单信息通过菜单类型id)、findMenuList(查找菜单列表)、findMenusByMenuCode(查找菜单通过菜单编码)
    IMessageByLoginIdDao:(查找信息、删除)findListByLoginId(通过登录id)、findListByLoginIdAndMessageId(通过登录id和信息id)、deleteMessageUserRel(通过登录id、信息id)
    IMessageDao:selCountByNoReadMsg(查询未读消息条数)、selCountByNoReadMsg(查询未读消息列表)、selCountMessage(查询消息条数)、modifyStatusAll(批量 修改消息已读状态)、modifyStatusAsNoReadAll(批量 修改消息未读状态)、delMsgByArray(批量 删除消息)、modifyStatus(单条修改状态)、selNoDeleteMessageList(查询未被删除消息列表)、selNoDeleteMessageCount(查询未被删除消息条数)、selNextNoReadMessage(查询下几条未读消息)、sendMessage(发送消息)、selAlreadySendMessage(查询已发送消息)、selAlreadySendMessageCount(查询已发送消息条数)、updateMessage(修改消息)、selMsgForRight(收件箱动态查询)、selMsgForRightCount(收件箱动态查询个数)、selMsgForSend(已发送动态查询)、(selMsgForSendCount)收件箱动态查询个数、selNextMessageList(查询有效的)、findMessagesList(管理员查询公告信息)、findMessagesCount(查询系统公告总条数)
    IOnlineUserInfoDao:queryOnlineUserInfo(查询登录日志信息)、queryLastLogoutTime(获取退出后的最近一次登录时间)
    IPortalFileDao:findFileByName(听过名字查找文件)
    IPortalLayoutDao:getId(根据布局器内容获取布局器id)、getPortalLayout(根据布局器类型获取布局器)、findLayout、findLayoutDefault
    IPortalMenuClickLogDao:querySumList(按菜单分组分页查询菜单点击统计)、querySumListDetail(按租户和菜单分组分页查询菜单点击统计)、queryUserClickLog(根据条件分组分页查询操作信息)
    IPortalMenuIconDao: findIcons(查找图标)
    IPortalMenuinfoTypeDao: findMenuinfoTypeByCode(查找菜单信息类型通过编码)
    IPortalPageDao: getId(根据页面编码和名称获取页面id)、getPortalPage(根据页面编码获取portalPage)、updatePortalPageByThemeId(更新门户分页信息通过主题id)、findPortalPageByCode(查找门户信息通过编码)
    IPortalPageExtDao: findByCode(根据code查询页面信息)、findPagesByCode(查出code为“code”的所有页面信息)
    IPortalPortletDao: updatePortletByPortletTypeId(更新门户通过门户类型id)、findPortalPortletByCode(查找门户通过编码)
    **IPortalPortletConfigInstanceDao: ** findByPorletId(通过用户id查找配置实例)、findByPortalPorletConfigId(通过用户配置id查找配置实例)、updateConfigInstanceByConfigId(通过配置id跟新配置信息)、updateConfigInstanceByInstanceId(通过实例id跟新配置信息)
    IPortalPortletConfigDao: findByPorletId、findByPropCode、findOneByPropcode、updatePortletConfigByPortletId
    IPortalPortletInstanceDao: findPortalPortletInstanceByPageId(通过页面id查找查找门户实例)、updatePortletInstanceByThemeId(通过主题id更新门户实例)、updatePortletInstanceByPortletId(通过PortletId更新门户实例)、updatePortletInstanceByPageId(通过页面id更新门户实例)
    IPortalThemeDao: findThemeByCode(查找主题通过密码)、findThemeByThemeType(查找主题通过主题类型)
    IPortletEventDao: deletePortletEventRel(删除门户事件)、findEventByPortletIdAndCode(通过门户组件id和密码查找事件)

  • entity(实体类–业务层–对数据库表的操作)
    PageInfo(分页实体类): pageSize(分页大小)、totalPages(总页数 —计算 (this.totalCounts - 1) / this.pageSize + 1))、currentPage(当前页)、totalCounts(记录总条数)、firstResult(当前页开始显示记录数(limit第一个参数)(currentPage - 1) * pageSize)、sortType(排序类型(ASC(升序)、DESC(降序)))、sortAttribute(排序属性)、querys(精确匹配and)、matchMaps(模糊匹配or)
    DbConnection(连接属性): dataurl、datausername、datapassword
    Message(信息实体类): id、msgTitie、msgStatus(0/1)、msgSender(发件人)、msgCotent(信息内容)、startTime、endTime、timeSpan(时间跨度)、isEnable(是否确认)、msgReceiver(信息接收人)、msgPosition(邮件保存位置 0为接收者,1为发送者)、msgPosition(信息类型0为公告信息,1为私信信息)、name、receiverName(接收者姓名)、nextMessageTitle(下一个信息标题)、nextId(下一个信息id)、receiveType(接收类型)、encodeId(编码id)
    .hbm.xml: 文件配置,Hibernate的核心就是对象关系映射,对象和关系型数据库之间的映射通常使用XML文档来实现。
    主体框架

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping 可指明JavaBean所在包的全路径,例如---package="com.bonc.portal.entity.Message",与class 中那么功能一致,二选一>

    <class name="类名"(可指明JavaBean所在包的全路径,例如---name="com.bonc.portal.entity.Message") table="表名">
    	//主键
        <id name="属性(数据库中主键在JavaBean中的属性名称)" type="JavaBean中主键对象的类型属性类型">
            <column name="数据库中表的字段名"/>
            <generator class="主键映射方式"/>
	            hibernate中主键映射方式:
				assigned:外部程序对id赋值
				native:由数据库对id赋值
				identity:采用数据库提供的主键生成机制
				increment:主键按照数值顺序递增
				sequence:采用数据库提供的sequence机制生成主键
				foreign:使用外部表的字段作为主键
        </id>
        //表中字段映射
        <property name="属性(数据库字段在JavaBean中属性名称)" type="属性类型">
            <column name="数据库中真实字段,与JavaBean一一对应"/>
        </property>
        
        <!-- One-To-Many attributes -->
		<!-- Many-To-One attributes -->
		<!-- Many-To-Many attributes -->
        //一对多关系:用在一个表与另一个表存在外键关联的时候,例如:一为组织表,多为用户表(一个组织包含多个用户,一个用户只能隶属于一个组织),“一”方要在映射文件中添加:
		<set name="java映射类中对应的属性(JavaBean)" inverse="true" lazy="true">
    		<key column="表中对应字段"/>
    		//一对多:
     		<one-to-many class="多方的类(com.bonc.portal.entity.MessageFile)"/>
     		//多对一:
     		<many-to-one name="java映射类中对应的属性" column="表中对应字段" class="类名" not-null="true" />
     		//一对一
     		<!-- 其中主表的配置 -->
			<one-to-one name="主表对象中子表对象的属性名" class="子表对象的类名"cascade="save-update"/>
			<!-- 子表的配置 -->
			<one-to-one name="子表对象中主表对象的属性名" class="主表对象的类名" constrained="true" />
			//多对多
			<many-to-many class="另一个表的对象类" column="另一个表的字段"/>

		</set>
    </class>
</hibernate-mapping>  

Message.hbm.xml(例):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.bonc.portal.entity.Message" table="PORTAL_MESSAGE">
        <id name="id" column="ID" type="java.lang.Long">
            <generator class="native"/>
        </id>
		<property name="msgTitle" type="java.lang.String">
            <column name="MSG_TITLE" length="50" not-null="false" unique="false"/>
        </property>
        <property name="receiveType" type="java.lang.Integer">
            <column name="RECEIVE_TYPE" length="2" not-null="false" unique="false"></column>
        </property>
		<!-- One-To-Many attributes -->
		<!-- Many-To-One attributes -->
		<!-- Many-To-Many attributes -->
        <set name="messageFiles" table="PORTAL_MESSAGE_FILE_REL"  lazy="false" cascade="none" inverse="false" >  
            <key column="MESSAGE_ID"/>
            <many-to-many class="com.bonc.portal.entity.MessageFile" column="MESSAGE_FILE_ID"/>  
        </set>  
    </class>
</hibernate-mapping>

MessageByLoginId(根据登录id的信息): id、loginId、messageId、readTime
MessageFile(信息文件): id、filePath(文件路径)、fileName、createDate
OnlineUserInfoHistory(在线的用户信息记录): id、appCode(app密码)、clientip(客户ip)、clientType、loginId、loginTime(登陆时间)、logoutTime(退出时间)、tenantId(租户id)
PortalFile(门户文件): id、fileName(文件名字)、saveName(保存名)、uploadDate(下载时间)
**PortalLayout(门户布局): ** isDefault(0/1)、layoutName(布局名称)、layoutTemplet(布局模板)、layoutData、id
PortalMenuClickLog:(菜单点击日志) id、menuId、menuCode(菜单编码)、menuUrl(菜单url)、menuName(菜单名称)、groupMenuId(归属分组(二级)菜单ID)、groupMenuName(归属分组(二级)菜单名称)、moduleMenuId(归属模块(一级)菜单ID)、moduleMenuName(归属模块(一级)菜单名称)、userId(用户id)、userLoginId(用户登录名 )、creatDate
PortalMenuIcon(用户菜单图标): id、iconCode(图标密码)
PortalMenuinfo:(用户菜单信息)
门户安全管理(ssh+jpa)_第3张图片
PortalMenuinfoType(门户菜单信息类型): menuinfoTypeName(菜单信息类型名称)、menuTypeCode(菜单类型码)、id
PortalPage(门户页面): id、pageName、description(描述)、org、role(角色)、code(码)、user、clientType(客户类型)
PortalMenuinfoType(门户菜单信息类型):
PortalTheme: id、description(描述)、themeName(主题名字)、themeType(默认为0,0代表门户主题,1代表页面主题)、themeFilePath(主题文件路径)

  • factory
    **SpringWiredBean: ** (自动装配注解会让Spring通过类型匹配为beanFactory注入示例)getBeanById(实例方法,使用的时候先通过getInstance方法获取实例)

  • service(服务层对一个或多个dao进行再次封装,封装成一个服务需要事务控制)

  • util
    ClassUtil: DeepClone(克隆对象)
    ConstantUtil:
    MessageTimeUtil: setTimeSpan(循环消息列表)

bonc-security-core安全模块

src.java.com.bonc.security

  • api
  • bean(实体类–表示层)
  • client
  • common
  • dao(数据访问层,具体到对于某个表的增删改查)
  • entity(实体类–业务层–对数据库表的操作)
  • factory
  • listener
  • service(服务层对一个或多个dao进行再次封装,封装成一个服务需要事务控制)
  • util

cas 登录模块

security安全模块

1、 src-main-java(com.bonc.security 处理后端逻辑)
integration.accountCenter

  • api
    AccountRestApiImpl:syncDo(新增用户、添加用户、修改用户、删除用户)
  • utils
    ResultMessage(api统一返回值类):code、msg、data
    ResultCode(接口状态码):
/* 成功状态码 */
    SUCCESS(1, "成功"),

    /* 参数错误:10001-19999 */
    PARAM_IS_INVALID(10001, "参数无效"),
    PARAM_IS_BLANK(10002, "参数为空"),
    PARAM_TYPE_BIND_ERROR(10003, "参数类型错误"),
    PARAM_NOT_COMPLETE(10004, "参数缺失"),

    /* 用户错误:20001-29999*/
    USER_NOT_LOGGED_IN(20001, "用户未登录"),
    USER_LOGIN_ERROR(20002, "账号不存在或密码错误"),
    USER_ACCOUNT_FORBIDDEN(20003, "账号已被禁用"),
    USER_NOT_EXIST(20004, "用户不存在"),
    USER_HAS_EXISTED(20005, "用户已存在"),

    /* 业务错误:30001-39999 */
    SPECIFIED_QUESTIONED_USER_NOT_EXIST(30001, "某业务出现问题"),

    /* 系统错误:40001-49999 */
    SYSTEM_INNER_ERROR(40001, "系统繁忙,请稍后重试"),

    /* 数据错误:50001-599999 */
    RESULE_DATA_NONE(50001, "数据未找到"),
    DATA_IS_WRONG(50002, "数据有误"),
    DATA_ALREADY_EXISTED(50003, "数据已存在"),
    DATA_HAS_BEEN_DELETED(50004,"数据已被删除"),

    /* 接口错误:60001-69999 */
    INTERFACE_INNER_INVOKE_ERROR(60001, "内部系统接口调用异常"),
    INTERFACE_OUTTER_INVOKE_ERROR(60002, "外部系统接口调用异常"),
    INTERFACE_FORBID_VISIT(60003, "该接口禁止访问"),
    INTERFACE_ADDRESS_INVALID(60004, "接口地址无效"),
    INTERFACE_REQUEST_TIMEOUT(60005, "接口请求超时"),
    INTERFACE_EXCEED_LOAD(60006, "接口负载过高"),

    /* 权限错误:70001-79999 */
    PERMISSION_NO_ACCESS(70001, "无访问权限"),

    /*租户错误: 80001-89999*/
    TENANT_IS_INVALID(80001,"无效租户");
  • cloudiip
    CloudiipService(集成cloudiip用户中心):receiveDataFromCloudiip(根据kafka获得消息保存入库)
    CloudiipSyncBody(cloudiip用户实体类)
    2、 src-main-java-web(前端页面jsp):有一些什么功能

portal门户模块

1、 src-main-java(com.bonc 处理后端逻辑)
portal

  • api
    impl
    BaseApiImpl抽象类(queryById通过id查询、queryAll、queryList)
    MenuinfoApi(@Commpontent)继承BaseApiImpl实现ImenuinfoApi接口:IMenuinfoService(@Resource(name = “menuinfoService”))、IBaseService父类方法、findParentMenu和findMenuinfos(根据菜单名称、菜单编码查询 菜单)
    MessageApiImpl(@Commpontent)继承BaseApiIMpl实现ImessageApi:ImessageService(@Resource(name = “messageService”))name自动依赖注入、IBaseService父类方法、、queryMsgInfo方法(创建消息列表、从数据库中查询未读消息列表、获取未读消息条数、创建消息时间设置工具、设置未读消息列表的时间差、创建JSON数组对象 、消息大于十条只读取十条(创建JSON对象,发送到前台))、alreadyRead(通过id找到message,设置状态为1更新message)、sendMessage(发送公告)、privateSendMessage(发送私人公告,request无法获取用户,通过参数传递参数)
    PortalLayoutApiImpl(@Component)继承BaseApiImpl实现IportalLayoutApi:portalLayoutService(@Resourse 通过name依赖注入)、IBaseService父类方法、findPortalPages(通过Id获取PortalPages)
    PortalLayoutApiImpl:findPortalPages
    PortalPageApiImpl:findLayout(布局)、findTheme(主题)
    PortalPortletApiImpl:findSubscriptionEvent、findPortalPortletInstances、findPortletEvents、findPortalPortletConfigs
    PortalPortletConfigApiImpl:findPortlet、findPortalPortletConfigInstances
    PortalPortletConfigInstanceApiImpl:findPortlet、findConfigProp
    PortalPortletThemeApiImpl:findPortalPortletInstances
    PortalThemeApiImpl:findPortalPages
    PortletEventApiImpl:findPortlet、findPortalPortlets
    RestApiImpl:findAllMenus、findMenusByParent、querySysPropertyAtPortletConfig、saveHomePageAtPortletConfig、findMenuByCode、findMenuByProperty、menuSaveOrUpdate、menuDelete(删除菜单)、initPage(添加页面、取默认布局器)、deletePage(删除页面)、setHomePageAtPortletConfig、findMenus(查找菜单)、changeSecretKey(更新密钥)、setHomePage(设置主页面)、queryMessage(查询公告)、updateMsgStatus(更新消息已读/未读公告状态)、getRole(获取角色)

  • util
    util-designer
    Designer:实体类
    DesignerVo:Designer实体类
    LoadPropertiesUtil:selectProperty、setProperties、getProperties
    TestCurl:doGet、main
    util
    BasicApplication:getClasses、getSingletons
    ChangeDataUtil:change(解密key、获取数据库连接信息、将数据库连接信息解密)、getNewDbConnection(解密secretKey、对数据库连接信息加密)、WriteDb(将加密后的数据库连接信息密文写入配置文件中)
    ChangeSecretKeyUtil:getProperties(获取Properties对象)、setValue(新增/修改数据)
    DESUtil:(通过三重DES算法,加密或解密数据)encrypt(加密)、decrypt(解密)、decrypt(DES数据解密)、encrypt(DES数据加密,使用默认的key)、encrypt(DES数据加密,参数不同)、byte2hex(二进制转字符串)
    FileOprateUtil:( ZIP压缩文件操作工具类 支持密码)、delDirOrFile(删除文件)、unZipFiles(解压文件到指定目录)、imageToBase64(图片转BASE64)、base64ToImage(BASE转图片)、saveFileToPath(保存文件到指定路径)、getFileType(根据文件路径获取文件的文件头)
    HtmlUtil:delHTMLTag(删除Html标签)、getTextFromHtml(过滤操作 )
    HttpRequestDeviceUtils:(判定web请求的终端设备是手机吗)isMobileDevice(根据当前请求的特征,判断该请求是否来自手机终端,主要检测特殊的头信息,以及user-Agent这个header )、isIPadDevice(判断是否是Ipad 登录)
    MyMenuinfoComparator:(菜单表比较器)
    PatternTest:main(按照指定模式在字符串中查找)
    PortletInitUtil:getTenantData(布局器初始化、主题初始化、页面初始化、组件主题初始化、获取配置文件路径、获取内容)、initWeather(门户组件初始化)、initCurrentUser(当前用户组件)、initCustomization(个性化定制组件)、initOnlineUser(在线用户组件)、initMessage(消息组件)、initHorizMenu(横向菜单组件)、initWorkspace(工作区间组件)、initTitleAndLogo(标题和和logo组件)、initColumMenu(列式菜单组件)、initPosition(地区组件)、queryIndex(查询数组中某一个元素的索引值)
    QueryAnnounceUtil:(查询宣告)
    ServletUtil:joinUriAndParms、getForwardRequestURI、getServletPath、getRequestValue、sendAsJson、sendAsText
    TestUnicom:main(测试连通性)、ping(返回值为boolean,ture说明host是可用的,false为不可用)
    Utils:getStringValue(根据key读取value)
    WebClientUtil:baseRequest(rest方式获取网络资源)

  • vo实体类
    OnlineUserInfoVO:id(主键)、orderId(序号、数据库动态生成)、loginId(租户登录id)、username(登录用户)、appCode(登陆方式)、clientip(用户IP)、loginTime(登陆时间)、tenantId(登录id)、tenantId(租户id)
    PortalMenuClickLogSumVO:menuCode(菜单编码)、menuName(菜单名称)、groupName(归属分组名称)、moduleName(归属模块名称)、clickSum(点击次数)、clickProportion(点击占比)、tenantName(租户名称)
    PortalMenuClickLogVO:id、orderId(序号、数据库动态生成)、createDate(创建时间)、menuName(菜单名称)、moduleMenuName(模块菜单名称)、groupMenuName(组菜单名称)
    PortletInstanceVO:portletName(组件名)、portletThemeId,portletId(组件id)、height,width(实例height,width)、portalLayoutData(布局器layoutType)、isFloat(是否悬浮)、id,name(实例id、name)、sizeStatus(大小状态:最小,最大,普通)、integrateMethod(集成方式)、layoutData(布局定位数据)、viewUrl(查看地址)、maxUrl(最大化界面地址)、configUrl(配置界面地址)、icon(图标文件)、theme(主题风格)、code(组件编码)、registeEvents(注册的事件名称)、subscriptEvents(订阅的事件名称列表)、propertyValues(可配置属性的值集合)

  • web
    action
    filter
    PortalTempletFilter实现Filter接口(处理url请示,读取真实的文件流,发到客户端)
    listener
    servlet
    PortalServlet( * PortalServlet作用为拦截 *.page请求,取得页面的编码,然后到库里加载页面配置信息,然后再结合主题布局等模板, 最终縇染出html页面)
    DecryptPropertyPlaceholderConfigurer:(配置文件数据源加密)
    2、 src-webapp-WEB-INF(前端页面jsp):有一些什么功能

主要去看bonc-portal-core、bonc-security-core,需讲解有那儿写模块名,是干什么的,有什么功能,用了什么技术

你可能感兴趣的:(ssh+jpa,安全,ssh,spring)