2021SC@SDUSC
本篇文章将继续分析模块module_page,此次分析module-page-web架构和module-page-web——文章管理的controller部分。
目录
1、module-page-web架构
1.1 html类文件
1.2 java类文件
2、pom依赖
3.Controller分析
3.1 _PageCommentController.java
3.1.1 父类AdminControllerBase.java
3.1.2 RequestMapping注解
3.1.3 AdminMenu注解
3.1.4 函数用途
3.2 _PageController.java
3.2.1 父类AdminControllerBase.java
3.2.2 EmptyValidate注解
3.2.3 函数用途
4.扩展内容:JFinal Interceptor拦截器
4.1 Interceptor
4.2 Before
4.3 Clear
5. 总结
1、module-page-web架构
1.1 html类文件
admin中的page包的html,对应的是页面功能中的几个功能:
- setting对应设置功能。
- page_write对应新建功能
- page_list对应页面管理功能。
commons中的page包对应的是默认评论和默认页面的显示。
1.2 java类文件
- controller包负责给页面提供接口,页面的表格、按钮等调用controller里面的包获取数据库相关资源。
- directive包负责给controller提供directive“指导性”方法,比如获得url、获得page等函数。
- sitemap使用JFinal的Enjoy模板引擎和core核心文件,进行页面模块的初始化和相关的数据库操作。
2、pom依赖
该模块多依赖于之前分析过的包,给页面提供具体的操作函数。
3.Controller分析
之前的文章中,因为代码和内容的联系不是很密切,我把注释和代码分开进行了分析。但是在controller中,注释和内容联系密切,本次结合在一起分析。
3.1 _PageCommentController.java
3.1.1 父类AdminControllerBase.java
- _PageCommentController继承自jpress.web.base包中的AdminControllerBase,有管理员操作的相关函数。
- AdminControllerBase中的方法使用了interceptor拦截器的相关内容,可以对用户、管理员、权限操作进行拦截,所以该类为管理员操作的基本。以下是AdminControllerBase中拦截器的配置。
- 拦截器相关内容请看4.扩展内容:Interceptor拦截器
3.1.2 RequestMapping注解
- 该注解来自Jboot,可以配置接口以及调用的界面。需要和SpringBoot的同名注解进行区分。
- value属性负责配置接口,页面通过使用“/admin/page/comment”来调用此接口。
- viewPath属性负责配置显示的界面,在这里页面路径为”/WEB-INF/views/admin/”,就是前文提到的所有html文件。
3.1.3 AdminMenu注解
- 该注解来自JPress,配置页面功能板块的评论功能。
- test配置功能显示文本。
- groupId配置功能群组,此处为评论功能属于页面板块的意思。
- order为五个种类。
- 本个注解加在函数的前面,所以函数是列出五个种类的评论列表。
3.1.4 函数用途
列出评论列表。
删除评论。
批量删除评论。
修改评论状态。
评论回复 页面。
进行评论回复。
3.2 _PageController.java
父类AdminControllerBase.java、RequestMapping注解、AdminMenu注解在上文已经提到过,用法、运用的地方都相同,这里会重点介绍其他注解和函数。
3.2.1 父类AdminControllerBase.java
- _PageCommentController继承自jpress.web.base包中的AdminControllerBase,有管理员操作的相关函数。在上一节已经介绍过,这里不再重点介绍。
3.2.2 EmptyValidate注解
- EmptyValidate注解来自Jboot的Validator数据验证模块,对调用数据的方法进行验证。
- 形象化一下,我们自己写表单验证的时候,需要自己写函数获取input的内容,判断是否为空,再返回相关信息,此处的注解能很方便地做到这一点。
- 如上代码,表格中如果传递过来的参数名为id,可以直接判断并且返回message“页面id不能为空”。
- @EmptyValidate放在方法的前面使用,当如果我们的 的方法没有参数的时候就可以使用。
如果有参数,Jboot准备了更多的注解给你使用!Jboot 从 V3.7.5 开始,增强 Jboot 的验证方式,在 Jboot 之前的 @EmptyValidate、@RegexValidate 等基础上,进一步基于 JSR 303 – Bean Validation 简化了验证方式,相比 Spring 更加优雅简单。
详情可以查看Jboot文档:数据验证 Validator | Jboot 官方 站
3.2.3 函数用途
列出页面管理的文章的列表
新建文章,开始编写新的内容
页面设置,包括评论功能、通知管理员等等。
文章撰写保存
删除文章
通过id删除文章
文章移动到垃圾箱
文章移动到草稿
文章移动到发布
4.扩展内容:JFinal Interceptor拦截器
Interceptor拦截器是JFinalAOP的最核心概念之一。JFinal采用极速化的AOP设计,专注AOP最核心的目标,将概念减少到极致,仅有三个概念:Interceptor、Before、Clear,并且无需引入IOC也无需使用啰嗦的XML。
4.1 Interceptor
- Interceptor 可以对方法进行拦截,并提供机会在方法的前后添加切面代码,实现 AOP 的核心目标。Interceptor 接口仅仅定义了一个方法 public void intercept(Invocation inv)。
- 以下代码中的 DemoInterceptor 将拦截目标方法,并且在目标方法调用前后向控制台输出文本。inv.invoke() 这一行代码是对目标方法的调用,在这一行代码的前后插入切面代码可以很方便地实现AOP。
4.2 Before
- Before注解用来对拦截器进行配置,该注解可配置Class、Method级别的拦截器。
- 如下代码所示,Before可以将拦截器配置为Class级别与Method级别,前者将拦截本类中所有方法,后者仅拦截本方法。此外Before可以同时配置多个拦截器,只需用在大括 内用逗 将多个拦截器进行分隔即可。
4.3 Clear
- 拦截器从上到下依次分为Global、Routes、Class、Method四个层次,Clear用于清除自身所处层次以上层的拦截器。
- Clear声明在Method层时将针对Global、Routes、Class进行清除。Clear声明在Class层时将针对Global、Routes 进行清除。Clear注解携带参数时清除目标层中指定的拦截器。
5. 总结
本篇文章内容非常多,且都是文件的核心内容。本次分析了两个controller java文件的父类、使用的注解、了解了JFinal的AOP重点内容,深入了解拦截器的作用、用法,解析每个方法的使用。下篇文章将继续深入了解controller,看JPress如何灵活运用JFinal、Jboot。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91534 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!