从OFCMS出发,浅析JavaWeb项目技术结构及其功能

  1. ofcms简介,技术选型介绍
  2. Tomcat运行原理浅析
  3. Maven功能浅析
  4. ofcms项目结构分析

 

壹   ofcms简介

ofcms是一款基于java开发的内容管理系统,也就是我们俗称的建站系统,国内建站系统大多由php开发而来,java开发的少之又少

ofcms由JFinal框架开发,而JFinal是在Spring MVC的基础上开发而来的

本打算基于ofcms入手,开始java代码审计的学习流程,后发现自身知识盲区实在太多,于是便开始从底层一步步的开始学习

ofcms建于Tomcat 8.5+之上,使用Maven内容管理模块,数据库使用MySQL 5.7+,其项目结构大致如下所示:

在RAEDME.md中作者对技术选型如下介绍:

可见整站的建设并未使用完整的框架进行开发,使用前后端分离的设计思想,将各个现成组件整合而成,是一款不错的的java建站系统。

 

 

 

贰   Tomcat运行原理浅析

本人未曾系统学习过javaweb开发相关知识,都是零散从不同方面接触过,知识储备少之又少,大厦始于地基,便开始从下往上开始慢慢补充;

什么是Tomcat?

Tomcat是一个web中间件,位于JVM虚拟机和java项目之间的中间人,也就是负责处理请求包和响应包的转发人

我们的WEB项目,本质是一个资源堆和无数的实例化java类方法,我们的Tomcat通过java方法去调用处理那些个资源堆,从而吧用户想得到的数据和资源返回给用户浏览器,就得到了我们的“web”网站;

Web项目部署进Tomcat的WebApp文件夹中的目的是很明确的,那就是希望Tomcat中间件去调用写好的方法去为客户端返回需要的资源和数据;

再往下分析:

Tomcat作为一个java程序可以运行起来,那必然有一个main方法去指导它的工作,那么对于Tomcat而言,他的main方法是被部署进WebApp文件夹下才得以确定的

Tomcat如何确定调用什么方法呢。这取却于客户端的请求:

例如:http://127.0.0.1:8080/ofcms-admin/index.java?show这样的一个请求,通过http协议,在浏览器发往本机的8080端口,携带的参数show方法,包含此方法的路径为/ofcms-admin文件下的java类文件,文件名为:index.java

在ofcms里,核心java方法代码放在了 .../src/main/java/中

在WebApp中存放的是web应用部署的资源文件,大都是前端的资源文件,Tomcat通过核心java代码去调用前端资源,再去利用核心java代码访问数据库,最终吧资源和数据都整合后通过http协议以响应包的形式发送给客户端的浏览器。

至于为何ofcms的核心代码是在java文件夹里,这里则需要讲一下Maven项目包管理器:

 

 

 

叁   Maven功能浅析

什么是Maven?

这里举一个栗子(摘自知乎大佬):

我要做一盘红烧排骨,我需要下列材料:

  1. 小排500克。
  2. 酱油20克
  3. 盐5克。
  4. 糖20克。
  5. 茴香5克。
  6. 姜,一个。

那么,我就要先去菜市场买小排,去超市买酱油,去南北货店买茴香。而且我还要自己去记。麻烦吗?

这个时候,有个超市,卖一个红烧排骨的一个包,把这些材料打包好,放在橱柜里卖。你要做的就是:

  1. 去超市
  2. 买这个红烧排骨包,里面包含了小排和所有要用到的材料。

然后,你就可以开始烧红烧小排了。至于这个红烧小排的配料怎么配,不用你操心,这个是超市做个包的配菜师傅的事情。当然,你要宫保鸡丁的配料,这个师傅也会给你配好。

Maven就是这个超市,只是它卖的不是红烧排骨,而是一个jar包已经和它有依赖关系的其他jar包。这样,你就不用再开撸java代码前,去各个网站下载各种不同的jar包了,也不用考虑它们之间的依赖关系。

这个就是Maven的作用。

一个玩针对各Java项目需要用到不计其数的依赖包,而且我们还需要将各个分类整理,放入相对应的文件夹中,以便于资源的调用,手动来做,理论上可行,但是这是一个十分复杂繁琐的工程,所以Apache公司就专门为Java项目的开发打造了Maven包管理工具,其主要功能是:

  • 提供了一套标准化的项目结构;
  • 提供了一套标准化的构建流程(编译,测试,打包,发布……);
  • 提供了一套依赖管理机制。

一个最基本的Maven目录如下:

a-maven-project                项目名称
├── pom.xml                    |--项目描述文件
├── src                        |--源文件夹
│   ├── main                   |  |--源码
│   │   ├── java               |  |  |--存放java源码
│   │   └── resources          |  |  |--存放资源文件
│   └── test                   |  |--测试源码
│       ├── java               |     |--存放测试源码
│       └── resources          |     |--存放测试资源文件
└── target                     |--所有编译、打包生成的文件

这些目录都是Maven协议好的标准目录,不可随意更改目录结构,直接使用就可以。

其中我们看pom.xml文件:其中随便截取了一段

其中

  • <groupId>类似于java的包名,通常是公司和组织的名称
  • <artifactId>类似于Java的类名,通常是项目名称
  • <version>就是简述版本号

整个pom.xml就是由这三个唯一标识构建起来的项目描述文件

在我们声明一个依赖以后,Maven就会自动下载这个依赖包并把它们放到classpath中

简单了解了一下Tomcat服务器的工作原理和Maven包管理器后,我们就来看ofcms的目录结构:

 

 

 

肆   ofcsm目录结构简析 

先放上来整个项目的基本情况:

pom.xml文件:

  • pom.xml:从这儿可以看出,ofcms项目是使用Maven包管理器,根目录下包含了多个子项目,每个项目都有各自的pom.xml描述文件

项目根目录下只有srctarget两个文件夹:

  • src:源码文件(包含需要被Tomcat调用的资源以及调用所需的Java方法文件,web部署文件)
  • target:编译后打包生成的文件

主要看src文件夹内的文件,targent内都是一些.class二进制文件以及src内文件的镜像生成文件

src内只有一个文件夹:main文件夹,旗下有java、resources、webapp文件夹

  • java:存放的是java核心代码,及指导tomcat工作的java方法
  • resources:存放的是一些静态资源(静态html文件、Sql方言等)
  • webapp:web应用部署的根目录,其下存放可访问的静态html的page界面、前端css文件、上传的图片资源、以及WEB-INF文件夹

java文件夹没什么好说的,就是java功能代码

  • conf:
    • sql:数据库SQL方言模板
  • dev:
    • conf:数据库连接配置文件

  • resource:一些默认界面的资源文件
  • static:静态资源和一些前端插件
  • upload:web前端所需要的图片文件
  • WEB-INF:Tomcat下特有的文件夹,WEB-INF文件夹是一个非常安全的文件,在页面中不能直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

 

 

最后:

制作不易,且行且珍惜

 

 

 

参考文章:

https://blog.csdn.net/qq_33792843/article/details/76904111

https://www.zhihu.com/question/20104186

https://www.liaoxuefeng.com/wiki/1252599548343744/1309301146648610

https://zhuanlan.zhihu.com/p/115403195

https://juejin.cn/post/6844903824524574734

https://blog.csdn.net/l00149133/article/details/78984083

https://blog.csdn.net/qq_32951553/article/details/79686367

 

 

 

 

来到自我意识的边疆,

看到父亲坐在云端抽烟,

他说:孩子,去和昨天和解吧

                                                         ————万能青年旅社《揪心的玩笑和漫长的白日梦》

 

 

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值