【代码审计-JAVA】基于javaweb框架开发的

news2024/11/16 7:36:42

目录

一、javaweb三大框架

1、Spring(开源分层的框架)

2、Struts(MVC设计模式)

3、Hibernate(开源的对象关系映射框架)

 二、特征

1、结构

2、Servlet

三、重要文件

1、web.xml

2、pom.xml

3、web.xml与pom.xml区别

4、Filter(过滤器)

5、框架+组件


一、javaweb三大框架

java web常用的三大框架:Spring、Struts、Hibernate(SSH)

(注:介绍来自百度百科)

1、Spring(开源分层的框架)

它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。Spring的优点有,方便解耦,简化开发 (高内聚低耦合);AOP编程的支持;声明式事务的支持;方便程序的测试;方便集成各种优秀框架;降低JavaEE API的使用难度。

.
|  mvnw
|  mvnw.cmd
|  pom.xml
|  README.md
|  .gitignore
└─ src
│   ├─main
│   │  ├─java
│   │  │  ├─com.example.demo
│   │  │  │  gApplication.java
│   │  │  │  
│   │  │  │  ├─controller
│   │  │  │  │  ├─UserController.java
│   │  │  │  │
│   │  │  │  ├─domain
│   │  │  │  │  ├─User.java
│   │  │  │  │
│   │  │  │  ├─service
│   │  │  │  │  ├─UserService.java
│   │  │  │  │  │
│   │  │  │  │  ├─impl
│   │  │  │  │  │  ├─UserServiceImpl.java
│   │  │  │  │
│   │  │  │  ├─repository
│   │  │  │  │  ├─UserRepository
│   │  │  │  │
│   │  │  │  ├─dto
│   │  │  │  │  ├─UserDTO.java
│   │  │  │  │
│   │  │  │  ├─vo
│   │  │  │  │  ├─UserVO.java
│   │  │  │  │
│   │  │  │  ├─utils
│   │  │  │  │  ├─EncryptUtil.java
│   │  │  │  │
│   │  │  │  ├─config
│   │  │  │  │  ├─QuartzJob.java
│   │  │  │  │
│   │  ├─resources
│   │  │  ├─static
│   │  │  │  ├─css
│   │  │  │  ├─js
│   │  │  ├─templates
│   │  │  ├─application.properties
│   │
│   ├─test
│   │  ├─java
│   │  │  ├─com.example.demo
│   │  │  │  ├─controller
│   │  │  │  │  ├─UserControllerTests.java

2、Struts(MVC设计模式)

Struts定义了通用的Controller,通过配置文件(通常是Struts -config.xml)隔离Model和View,以Action的概念以对用户请求进行了封装,使代码更加清晰易读。Struts还提供了自动将请求的数据填充到对象中以及页面标签等简化编码的工具。Struts能够开发大型Java Web项目。

apps    用于存放官方提供的 Struts2 示例程序,这些程序可以作为学习者的参考资料。各示例均为 war 文件,可以通过 zip 方式进行解压。
docs    用于存放官方提供的 Struts2 文档,包括 Struts2 的快速入门、Struts2 的文档,以及 API 文档等内容。
lib     用于存放 Struts2 的核心类库,以及 Struts2 的第三方插件类库。
src     用于存放该版本 Struts2 框架对应的源代码。

3、Hibernate(开源的对象关系映射框架)

它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。Hibernate的API有:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通过这些接口,可以对持久化对象进行存取、事务控制。

documentation          存放了 Hibernate 的相关文档,包括 Hibernate 的参考文档和 API 文档等。
lib                    该路径下存放了 Hibernate 3 的核心类库,以及编译和运行所依赖的第三方类库。其中 lib 路径下的 required子目录中包含了运行 Hibernate 3 所必须的 JAR 包。
project                存放了 Hibernate 各种相关项目的源代码。
changelog.txt          升级日志
hibernate_logo.gif     hibernate logo
lgpl.txt               开源许可证内容

 二、特征

1、结构

1、分层架构:

视图层(View 视图)
控制层(Controller、Action 控制层)
服务层(Service)
业务逻辑层BO(business object)  
实体层(entity 实体对象、VO(value object) 值对象 、模型层(bean)
持久层(dao- Data Access Object 数据访问层、PO(persistant object) 持久对象)

2、模块化开发


2、Servlet

Java Web容器上运行的程序,处理服务器端的业务逻辑

Servlet3.0之前:在web.xml中配置

Servlet3.0之后(Tomcat7+):可以使用注解方式配置Servlet

三、重要文件

1、web.xml

web.xml是web项目的配置文件,主要配置Filter,Listener,Servlet等(但是web.xml并不是必须的)

1、schema(模式文件)
使用的模式文件都必须标明在根元素<web-app>中,其他元素在<web-app></web-app>中
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.4" 
    xmlns="http://……" 
    xmlns:xsi="http://……"
    xsi:schemaLocation="http://……
        http://……">
</web-app>


2、<display-name>Web应用名称</display-name>

3、<discription>Web应用描述</disciption>

4、<context-param>上下文参数</context-param>

5、<filter>过滤器</filter>

6、<listerner>监听器</listener>

7、<servlet>servlet是运行在服务器端的小程序</servlet>

8、<session-config>会话超时配置</session-config>

9、<welcome-file-list>欢迎文件页</welcome-file-list>

10、<jsp-config>设置jsp</jsp-config>



2、pom.xml

全称:Project Object Model,是Maven项目中的文件,使用XML表示,项目的maven坐标,依赖关系,项目授权、项目的url,开发者需要遵循的规则,缺陷管理系统,组织和licenses,配置文件、开发者的信息和角色,以及其他所有的项目相关因素(project必须包含pom.xml文件)


3、web.xml与pom.xml区别

pom.xml(必须):根目录里面(作用于整个项目的一些信息)

web.xml(非必须):隐藏的(如:webapp里的WEB-INF文件内,写注册的功能,像servlet despatcher filter 等,并都加一个mapping与之对应)


4、Filter(过滤器)

通过对过滤器分析,可以知道过滤规则,以及可以最终筛选出未使用过滤器的URL

web.xml中
<filter>
    <filter-name>xsscheck</filter-name>//名字
    <filter-class>com.anbai.sec.XssFilter</filter-class>//class
</filter>
<filter-mapping>
    <filter-name>xsscheck</filter-name>//名字
    <url-pattern>*.jsp</url-pattern>//路由
</filter-mapping>

5、框架+组件

通过了解了开发的框架以及组件以后,可以扩大攻击面

查看配置文件web.xml和外部引用库,确定当前引用框架名称和版本

框架确定:
1、maven(查看pom.xml关键字)
spring-core/ springframework.core    spring框架
struts2-core                         struts2框架
springframework.boot                 srping-boot框架
servlet-api                          原生servlet

2、lib(查看jar包名称)
spring-core/springframework.core    spring框架
struts2-core                        struts2框架
spring-boot                         srping-boot框架
servlet-api                         原生servlet
配置文件:
Struts2     struts.xml
Spring      applicationContext.xml
Spring MVC  spring-mvc.xml
Hibernate   Hibernate.cfg.xml
Mybaits     mybatis-config.xml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【文献研究】班轮联盟下合作博弈的概念

前言&#xff1a;以下是本人做学术研究时搜集整理的资料&#xff0c;供有相同研究需求的人员参考。 1. 合作博弈的一些概念 合作博弃中比较重要的问题是共赢状态下的利润分配问题&#xff0c;这关系到联盟的合作机制能否长期有效。这里首先介绍几个重要的概念&#xff1a; &…

174.Django中文件上传和下载

1. 文件上传和下载环境搭建 创建django项目和子应用urls中包含子应用&#xff0c;在子应用中创建urls.py配置数据库sqlite3&#xff08;默认就是&#xff0c;无需配置&#xff09;配置settings&#xff0c;上传文件目录编写模型代码&#xff08;下面给出&#xff09;模型的预迁…

如何使用Java获取货币符号?

1. 前言 最近做了一个支付相关的需求&#xff0c;要求在收银台页面显示商品的价格时带上货币符号&#xffe5;&#xff0c;类似下图中的格式&#xff1a; 最初我是用的下面这样的代码&#xff1a; System.out.println(Currency.getInstance(Locale.CHINA).getSymbol());本机测…

postgresql_internals-14 学习笔记(一)

梳理一下之前理解不太清楚的知识点&#xff0c;重点内容可能会再拆出来单独研究。 原书链接&#xff1a;Index of / 一、 数据组织 1. pg系统库 template0&#xff1a;用于从逻辑备份还原&#xff0c;或创建不同字符集的数据库&#xff0c;不可以修改template1&#xff1a;真…

[附源码]Python计算机毕业设计SSM基于框架的毕业生就业管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Unity脚本 (1) --- 创建脚本以及挂载脚本的本质,脚本模板的修改

值类型 --- 在栈区中开辟内存空间并直接存储在栈区中&#xff0c;引用类型 --- 在栈区中开辟内存空间存引用&#xff0c;在堆区中开辟内存空间存数据&#xff08;有可能堆区中还要开辟引用&#xff09;&#xff0c;然后将堆区中存储数据的内存空间的地址传给引用接收 什么是脚本…

HTTP 请求走私

目录 0x01 简介 0x02 成因 2.1 Keep-Alive 2.2 Pipeline 2.3 Content-Length 2.4 Transfer-Encoding 0x03 分类 0x04. 攻击 4.1. CL不为0的GET请求 4.2 CL-CL 4.3 CL-TE 4.4 TE-CL 4.5. TE-TE 0x05 防御 参考资料&#xff1a; 0x01 简介 HTTP请求走私是一种干扰…

Mysql优化-全面详解(学习总结---从入门到深化)

Sql性能下降的原因 在程序的运行过程中&#xff0c;我们会发现这样的一个现象&#xff0c;随着程序运行 时间的不断推移以及数据量越来越大&#xff0c;程序响应的时间逐渐变慢&#xff0c; 程序变得卡顿&#xff0c;但最开始的时候并不是这样的&#xff0c;那是什么原因导致 的…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java毕业生回访系统564c4

最近发现近年来越来越多的人开始追求毕设题目的设创、和新颖性。以往的xx管理系统、xx校园系统都过时了。大多数人都不愿意做这类的系统了&#xff0c;确实&#xff0c;从有毕设开始就有人做了。但是很多人又不知道哪些毕设题目才算是新颖、创意。太老土的不想做&#xff0c;创…

RISC-V SiFive U64内核——HPM硬件性能监视器

学习、沉淀、分享&#xff0c;才能有所获~ 文章目录HPM简介性能监控计数器重置行为固定功能性能监控计数器事件可编程性能监控计数器事件选择器寄存器事件选择器编码计数使能寄存器对于性能分析&#xff0c;通常我们会使用Perf工具。而perf中的硬件事件&#xff0c;则需要硬件的…

阿里、腾讯、字节跳动大厂Java岗面试秘籍!(含答案解析)

本文主要是汇集整理了最新的阿里、腾讯、字节跳动大厂面试真题及答案解析&#xff0c;以及面试中被频繁问到的内容&#xff0c;主要作为参考大纲&#xff0c;供大家互相学习。 一、阿里篇&#xff08;27题&#xff09; 1.1.1 如何实现一个高效的单向链表逆序输出&#xff1f;…

当我用ChatGPT中学习CNN卷积神经网络时...

本文节选自本人博客&#xff1a;https://www.blog.zeeland.cn/archives/chatgpt-asoihgoihrx Introduction ChatGPT大火&#xff0c;在这一段时间并没有觉得ChatGPT特别厉害&#xff0c;最多就是一个基于生成式对话的NLP模型罢了&#xff0c;直到我看到了AI扮演Linux虚拟机&am…

[附源码]计算机毕业设计基于web的建设科技项目申报管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Redis】Redisson 分布式锁主从一致性问题

一、主从一致性问题的产生 Redis 主从集群使用如下&#xff1a; 在主节点进行数据的写操作&#xff1b;在节点进行数据的读操作&#xff1b;主节点向从节点同步数据。 主从一致性问题&#xff1a; 当主节点还没来得及将锁信息同步到从节点时&#xff0c;此时主节点宕机了。然…

【产品分析】高德手机地图产品:未来搜索将从地图开始

未来的搜索从地图开始。今后的所有商务活动都将通过地图展开&#xff0c;使之成为兵家必争之地。要将移动流量变现为真金白银&#xff0c;地图将发挥至关重要的作用。 目前整个中国电子地图市场目前处于应用成熟期。在多年的快速发展和数次大型收购后&#xff0c;各互联网巨头已…

[附源码]计算机毕业设计家庭教育appSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

腾讯在线文档根据单选的内容修改背景颜色

目录 [介绍] [条件格式] [添加条件格式] [选择单元格范围] [条件选择] [格式预览] [管理条件格式] [介绍] 类似我这种场景(见下图),单选选择不同的状态,有时为了一目了然的看清状态,需要给单元格加上不同的背景颜色,但手动使用格式刷比较麻烦,琢磨了下根据单元格选项动态…

【云原生】Nacos 监控手册

Nacos 0.8.0版本完善了监控系统&#xff0c;支持通过暴露metrics数据接入第三方监控系统监控Nacos运行状态&#xff0c;目前支持prometheus、elastic search和influxdb&#xff0c;下面结合prometheus和grafana如何监控Nacos&#xff0c;官网grafana监控页面。 搭建Nacos集群暴…

HTML入门零基础教程(六)

嗨&#xff0c;大家好&#xff0c;我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助&#xff0c;请支持一波。 希望未来可以一起学习交流。 目录 一、图像的路径 1.路径&#xff08;前期铺垫知识&#xff09; 2.VSCode打开目录文件夹&#xff1a; 3.路…

java计算机毕业设计ssm医院病床管理系统ft4fz(附源码、数据库)

java计算机毕业设计ssm医院病床管理系统ft4fz&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…