【代码审计】JAVAWeb基础Spring与Spring MVC

JAVAWeb基础Spring与Spring MVC

0x00 版权声明

JAVA基础系列是笔者学习@炼石星球的笔记,大部分文字描述取自星球内发布的教程文件,仅作学习。

0x01 Spring与Spring MVC概述

Spring是Java EE编程领域的一个轻量级开源框架,Spring是一个开源容器框架,它集成各类型的工具,通过核心的Bean factory实现了底层的类的实例化和生命周期的管理。 Spring有两个核心部分:IOC和Aop

IOC:控制反转,把创建对象过程交给Spring进行管理

Aop:面向切面,不修改源代码进行功能增强

SpringMVC是Spring基础之上的一个MVC框架,主要用于开发WEB应用和网络接口,它是Spring的一个模块,通过Dispatcher Servlet, ModelAndView 和 View Resolver,让应用开发变得很容易。

SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring。

MVC 模式是一种软件框架模式,被广泛应用在 JavaEE 项目的开发中

MVC 即模型(Model) 、视图(View)、控制器(Controller)

模型是用于处理数据逻辑的部分。 所谓数据逻辑,也就是数据的映射以及对数据的增删改查,Bean、DAO(data access object,数据访问对象)等都属于模型部分

视图负责数据与其它信息的显示,也就是给用户看到的页面。html、JSP 等页面都可以作为视图

控制器是模型与视图之间的桥梁,控制着数据与用户的交互。 控制器通常负责从视图读取数据,处理用户输入,并向模型发送数据,也可以从模型中读取数据,再发送给视图,由视图显示

0x02 创建Spring项目

第一步,创建项目

打开IDEA,选择Spring项目,勾选:Create empty spirng-config.xml

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202209291048911.png

如果新建选项没有Spring项目,首先确认版本是否是专业版,然后按下快捷键ctrl+alt+shift+/,选择register,接着找到javaee.legacy.project.wizard,选中,退出再重新新建就会出现

然后点击下一步,为项目起名字,然后Finish,等待自动创建

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202209291055686.png

第二步,创建class文件

在src目录下新建两个class文件:HelloSpring.class、Main.class,并写入代码:

HelloSpring.class:

1
2
3
4
5
6
7
8
9
public class HelloSpring {
private String message;
public void setMessage(String message){
this.message = message;
}
public void getMessage(){
System.out.println("Your Message : " + message);
}
}

Main.class:

1
2
3
4
5
6
7
8
9
10
11
12
import org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new
ClassPathXmlApplicationContext("spring-config.xml");
HelloSpring obj = (HelloSpring)
context.getBean("HelloSpring");
obj.getMessage();
}
}

接着在spring-config.xml配置文件中增加以下内容:

1
2
3
<bean id="HelloSpring" class="HelloSpring">
<property name="message" value="This is a SpringDemo by Zebra."/>
</bean>

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202209291102958.png

第三步,运行项目

运行Main.class,等待运行结束:

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com/blog/202209291106322.png

可以看到,控制台输出了Message信息,同时项目里面多了一个out目录,打开out目录下的两个class文件,会发现和src目录下的两个class文件有不同:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

public class HelloSpring {
private String message;

public HelloSpring() {
}

public void setMessage(String message) {
this.message = message;
}

public void getMessage() {
System.out.println("Your Message : " + this.message);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
public Main() {
}

public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
HelloSpring obj = (HelloSpring)context.getBean("HelloSpring");
obj.getMessage();
}
}