学习笔记:黑马程序员JavaWeb开发教程(2024.11.8)

5.10 分层解耦-分层解耦(IOC-DI)
    

在之前写的代码中,Controller层中new了一个Service层中的对象,在Service层中类名改变,则Controller层中也需要变化,这就是两个层之中耦合较重,需要减少耦合性,可以将Controller层中的EmpService变量中需要的对象放到一个容器中,使用容器作为Controller层和Service层的中介,减少他们之间的耦合
 
    因此就引出了控制反转(IOC)和依赖注入(DI)的概念

5.11 分层解耦-IOC&DI入门


    控制反转:@Component
    依赖注入:@Autowired
 
 
    当我们要将Service层中的对象从EmpServiceA改成EmpServiceB,只需要将容器中的对象从A变成B就可以了,将EmpServiceA类上面的@Conponent删去,给EmpServiceB加上

5.12 分层解耦-IOC&DI-IOC详解


    Spring框架为了更好的标识web应用程序开发中bean对象属于那一层,又提供了Component的三个衍生注解,建议再开发中使用这三个衍生注解,在不知道放到那个层,比如工具类的时候可以用Component
    在springboot集成web开发中,声明控制器bean只能用@Controller
 
    Bean默认名字类名首字母小写,当需要自定义名字的时候,例:@Component(value = ‘daoA’)//value=可以不写
    因为扫描只默认扫描当前包及其子包,所以不在这个范围当中的文件需要被扫描,只能手动指定,不过手动指定之后,就需要指定所有需要扫描的包,包括默认的包,因为手动指定后,默认指定就被取代了,例:@ComponentScan({“dao”,”com.itheima”}),当然不推荐这种方式,推荐直接都放在一个包下

5.13 分层解耦-IOC&DI-DI详解


    想要谁生效,就在那个类上面加@Primary
    想要谁生效,就在@Autowire上面加@Qualidier(“想要的bean的名字”)
    使用@Resource注解时,不用@Autowire注解了,前者是按照名词注入,后者默认是按照类型注入,例:@Resource(name = ‘bean的名字’)
 

8.13 Mybatis-入门-课程介绍


8.14 Mybatis-入门-快速入门


    Mybatis是在Java中编写sql语句,将sql语句发送到数据库执行
    在springboot中配置Mybatis,需要对springboot的默认配置文件application.properties中配置数据库的四要素:驱动类的全类名、数据库连接的url、数据库的用户名、数据库连接的密码
    在入门阶段使用注解的方式,按照Mybatis的规范,需要定义一个持久层的接口UseMapper,并且在这个接口上加@Mapper注解来标识注释Mybatis持久层上的一个接口,个人认为比较重要的是@Mapper这个标识的用处。这是数据访问层的接口。
    下图代码中:@Select来指定当前是一个查询操作,并在该注解中(括号中)指定要执行的sql语句,要执行这个sql语句只要调用UseMapper中的list()方法即可
 
    在Mybatis中不需要定义接口的实现类,只需要定义map接口,因为程序在运行时,框架底层会自动生成这个接口的实现类对象。也就是加上@Mapper注解之后,在运行时,会自动生成该接口的运行实现类对象(代理对象),并且将该对象交给IOC容器管理。所以虽然接口不能被直接new,但是因为因为又@Mapper注解,使其可以直接new
    在实体类创建时,推荐使用包装类
    测试文件写在tset目录下,因为接口不能直接new,但是在前面@Mapper注解可以得到实现类,而且放到了IOC中,因此采用依赖注入的方式获取数据
    @SpringBootTest注解是springboot整合单元测试的注释,一旦加了该注解,则其中的单元测试方法在运行的时候会自动加载整个springboot环境,并且创建springboot IOC容器

8.15 Mybatis-入门-配置SQL提示


    如果不配置的话,写的sql语句就会像字符串一样,不会被识别,也就不会有报错,如果写错了,就非常不友好,所以要配置
    配好了之后,发现输入数据库名没有出现提示,或者爆红,还需要idea和数据库之间建立连接,其中Database数据库需要填写,要不然不知道你要那个数据库,在这里应该填写Mybatis
配置和连接都在PPT里面
在这里没配,到时候写案例的时候记得配

8.16 Mybatis-入门-JDBC


    Mybatis是一个持久层框架,用于简化JDBC操作

8.17 Mybatis-入门-数据库连接池


    原来的连接方式:客户端创建一个新的连接对象,再来执行这条sql语句,sql语句执行之后,又需要把这个连接对象关闭,来释放资源
    有数据库连接池,程序在启动的时候,就会在这个容器当中初始化一定数量的连接对象,客户端在执行sql语句的时候,就可以从连接池获取一个连接,获取到连接之后,再来执行sql语句,sql语句执行之后,会把这个连接还给连接池;当个别客户端获取了连接,但是没有使用,也就是这个连接处于空闲状态,数据库连接池回去监测这个空闲时间,要是这个空闲时间超过了连接池中预设的最大值,则这个连接会被释放归还给连接池
 
    Springboot中默认追光者数据库,需要切换数据库时,可以采用两种方式,第一种添加对应数据库的配置,第二种在spring那个数据库四要素进行修改:
 

8.18 Mybatis-入门-lombok工具包


    使用lombok需要引入lombok的依赖
 

### 关于黑马程序员 JavaWeb 第二版的学习资源 目前可获得的信息表明,您正在寻找有关 **黑马程序员 JavaWeb 第二版** 的学习笔记或资料。以下是基于已有引用内容和专业知识的回答: #### 1. Maven Web项目的构建 Maven 是一种强大的项目管理工具,在 Java Web 开发中被广泛使用。通过骨架创建 Maven Web 项目是一种常见的实践方法[^1]。这一步骤通常涉及配置 `pom.xml` 文件以引入必要的依赖项,并设置项目的结构。 ```xml <dependencies> <!-- Servlet API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!-- JSP API --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> </dependencies> ``` 上述代码片段展示了如何在 `pom.xml` 中定义 Servlet 和 JSP 的依赖关系。 --- #### 2. HTTP 请求处理机制 在 Java Web 应用程序中,GET 和 POST 方法是最常用的两种请求方式。尽管它们的功能不同,但在某些场景下可以通过继承的方式减少重复代码。例如,在实现 `doPost()` 方法时可以调用 `this.doGet(req, rep)` 来共享逻辑[^2]。 这种设计模式不仅提高了代码的重用性,还减少了维护成本。 --- #### 3. Spring Boot Web 案例分析 Spring Boot 提供了一种快速开发 Web 应用的方法。结合前端技术栈(HTML/CSS/JavaScript)、后端服务(RESTful API)以及数据库操作(MyBatis),能够高效地完成复杂的业务需求[^3]。 以下是一个简单的 Controller 示例,展示如何返回 JSON 数据给客户端: ```java @RestController @RequestMapping("/api/user") public class UserController { @GetMapping("/{id}") public ResponseEntity<User> getUserById(@PathVariable Long id) { User user = userService.findById(id); if (user != null) { return ResponseEntity.ok(user); } else { return ResponseEntity.notFound().build(); } } } ``` 此代码实现了根据用户 ID 查询用户的 REST 接口。 --- #### 4. MyBatis 持久化框架简介 MyBatis 是一个轻量级的 ORM 框架,专注于 SQL 手动编写的同时提供灵活的数据访问能力[^4]。它支持多种数据库连接池方案,从而优化性能并降低资源消耗。 下面是一段典型的 Mapper XML 配置示例: ```xml <select id="selectUser" resultType="com.example.User"> SELECT * FROM users WHERE id = #{id}; </select> ``` 该语句定义了一个查询用户信息的操作。 --- #### 如何获取《黑马程序员 JavaWeb 第二版》的相关资料? 虽然无法直接提供下载链接,但建议采取以下途径查找所需资源: - 访问官方出版商网站或授权平台购买正版书籍; - 加入专业的开发者社区分享经验和技术文档; - 利用搜索引擎输入关键词如“黑马程序员 JavaWeb 第二版 PDF”尝试找到合法公开版本。 请注意尊重版权法律,优先考虑正规渠道获取高质量教学材料。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值