前言
记录一下第一次创建Spring项目的辛酸历程,有人喜欢使用eclipse创建,而有人喜欢用IEDA创建,其实两者都有各自的优缺点,所以在穿创建方法上面,两者也会有一定的差别,网上很多教程,大家也可以自行搜索(文章用到的jar包,在我的主页资源那里可以下载)
提示:以下是本篇文章正文内容,下面案例可供参考
目录
1、SpringMVC是什么?
2、SpringIOC是什么?
二、用eclipse创建第一个项目
1.创建项目
2. 吃瓜
3. 开始操作
下载完成,解压后的目录如下
4. 开始代码实现
5、最后效果:
三、总结
1、SpringMVC是什么?
1、 Spring MVC是Spring框架中的一个模块,用于开发基于Java的Web应用程序。它提供了一种基于MVC(Model-View-Controller)设计模式的方式来构建Web应用程序。
下面是Spring MVC的详细解析:
-
核心组件:
- DispatcherServlet:是Spring MVC的核心控制器,负责拦截所有请求并将其路由到适当的处理程序(Controller)。
- Controller:处理请求并生成响应的组件。通常是一个Java类,使用注解或配置来标识处理请求的方法。
- Model:包含应用程序数据的类,通常是一个POJO(Plain Old Java Object)。
- ViewResolver:用于解析视图名称并将其映射到实际的视图文件。
-
请求处理流程:
- 客户端发送请求到DispatcherServlet。
- DispatcherServlet根据请求的URL查找合适的Controller。
- Controller处理请求,并调用适当的业务逻辑处理数据。
- Controller将处理结果存储在Model中,并返回视图名称。
- DispatcherServlet使用ViewResolver解析视图名称,找到对应的视图文件。
- 最终将模型数据渲染到视图中,并返回给客户端。
-
注解支持:
- Spring MVC提供了丰富的注解来简化开发,如@Controller、@RequestMapping、@RequestParam等。
- 通过注解,可以将请求映射到特定的处理方法,简化了配置和提高了开发效率。
-
数据绑定:
- Spring MVC支持将请求参数自动绑定到Controller方法的参数中,包括基本数据类型、POJO对象等。
- 还支持数据验证和错误处理,可以通过注解或Validator接口实现数据验证。
-
拦截器:
- 拦截器允许在请求处理前后执行自定义逻辑,如权限验证、日志记录等。
- 可以通过实现HandlerInterceptor接口来创建自定义拦截器。
- 总的来说,Spring MVC是一个灵活、强大的Web框架,通过其良好的设计模式和丰富的功能,使得开发Web应用变得简单、高效。
2、SpringIOC是什么?
2、直接理解Spring框架中的控制反转(IoC)比较抽象,让我们 “举个栗子”
- 传统的程序开发中,对象通常需要自己创建和管理它们所依赖的其他对象。这就好像你要做一顿饭,你需要自己去买菜、洗菜、烧菜,所有的事情都要自己亲自动手。但是在Spring框架中,情况有所不同。
- Spring框架引入了控制反转(IoC)的概念,就像是有了一个厨师,你只需要告诉厨师你想吃什么菜,厨师会帮你买菜、洗菜、烧菜,最后端上桌。你无需亲自动手,只需告诉厨师你的需求,厨师会帮你完成剩下的工作。
- 在Spring框架中,你只需要告诉Spring容器你需要哪些对象(bean),以及它们之间的关系,然后Spring容器会帮你创建和管理这些对象,你无需自己操心对象的创建和依赖关系的管理。
注:以上源于AI解析,想要更加具体了解的话,浏览器可以助你一把
二、用eclipse创建第一个项目
1.创建项目
- 然后在弹出来的选项框
- 下面是初始的项目结构
- 接下来就是在lib文件夹里面添加 Spring Framework 的jar包 下载地址: https://spring.io/
注:以下是作者踩过的坑,可以吃瓜看一下
2. 吃瓜
- 然后去Github,高级起来
- 直接滑到底,找到这个
- 然后找到这个官网的UI链接,摁他
- 几年前是这样的界面 jpgx2
- 但是今时不同往日,然后又搜索了很多教程,最后发现
入门spring的小白一看,maven是没学过,直接呵呵送给spring,学过maven的却表示,小脑袋瓜已然有点记不清了。所以我跟着别人的教程,踩了很多坑,人都傻了,
到这里,可以跟着作者操作了!!!
3. 开始操作
(1)我们的目的是下载这个 SpringFrameWork ,所以可以点击下面链接,跟着这位博主最后转百度网盘下载:https://blog.csdn.net/D_wang1/article/details/118932189
下载完成,解压后的目录如下
(2)然后在libs文件夹里面,寻找我们本次项目需要用到的 下面红圈的 四个jar包,剩余的另外下载
注:头两个jar包分别下载,各一个官网链接送给亲爱的你:
① https://dlcdn.apache.org//commons/logging/binaries/commons-logging-1.3.0-bin.zip
② https://dlcdn.apache.org/logging/log4j/1.2.17/log4j-1.2.17.zip
把上面所有包导进 刚刚创建的项目 的lib文件夹里面,Ctrl C V你懂的
看见里面有奶瓶,就成功了
(3)在 src下创建一个spring的xml配置文件
- 官方建议这个配置文件的名称为: applicationContext.xml 。
- 但实际我们可以随意命名 比如:Bean.xml
- 然后在里面写代码,IDEA里面创建applicationContext.xml是自带的这段代码:
其实,这段代码可以在以下路径找到
1、打开前面百度网盘下载的 文件,按照路径,双击这个html文件
- 第一段代码便是我们想要的东西,绿色标记的代码段可以去掉
也就是
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- bean definitions here -->
</beans>
(4)然后将这个代码放到 applicationContext.xml 里面
1、在src文件夹下创建包
2、第一次写spring,不管辣么多,先随便命名吧
4. 开始代码实现
(1)创建一个类,相当一个bean
Person.java:
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 写到这里,不由自禁地想起IEDA的三件套快捷键,不了解eclipse快捷键,对他甚是想念
(2)对 spring配置文件配置bean信息(Person)
applicationContext.xml:
<bean id="person" class="example.Person">
<property name="name" value="CXK"></property>
<property name="age" value="24"></property>
</bean>
如图:
<bean id="person" class="example.Person"> :意为创建一个bean,与Person类绑定 (example为package名),这个bean的 id 为 person
<property name="name" value="CXK"></property> :意为给bean的name变量赋值,值为“坤哥”
(3)测试代码:
TextIoc.java:
1、代码下面爆红的话,说明没导包,鼠标停留在上面一会儿,import即可,不爆红那就继续
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TextIoc {
@Test
public void textUser()
{
//1.获取spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.由配置文件返回对象
Person p = (Person)context.getBean("person");
System.out.println(p);
p.info();
}
}
Person p = (Person)context.getBean("person"); :此处的 person 要和 applicationContext.xml 中的 </bean>的 id 相同。即person 是要在applicationContext.xml 取对象的 bean的名字。
注:你的p.info()爆红???不是叭 不是叭,行叭,做到这里你也是累趴了,就让本作者就拯救一下你吧
2、写好之后Ctrl+S保存一下
3、控制台发生警告“context is never closed ” ,意思是资源打开了并没有关闭,那么我们稍微改一下代码:
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TextIoc {
@Test
public void textUser() {
//1.获取spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
try {
//2.由配置文件返回对象
Person p = (Person)context.getBean("person");
System.out.println(p);
p.info();
} finally {
((ClassPathXmlApplicationContext) context).close();
}
}
}
- 保存之后,右键TextIoc.java 工作区随意位置位置
spring,启动!!!
5、最后效果:
- 打印返回的对象 p 和 调用 p 的info()方法
6. 完结,撒花!!!
- 注:当然,如果你想将下面这个打印出来的话
- 只需要
三、总结
正所谓万事开头难,作者在查阅文章的时候,用IEDA实现(主maven的有),用eclipse实现(到处找SpringFrameWork的jar包的也有),既看见简单的,亦看见复杂的;因为淋过雨,所以想为别人撑伞,当我们了解了spring,就不会觉得它难,框架存在的意义,本就是为了方便程序员更快的完成开发,让我们领悟,什么叫做 "效率",一起加油吧,程序猿们!!!