文章目录
Java三层架构
UI(表现层):
主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。
BLL:(业务逻辑层):
UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。
DAL:(数据访问层):
与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)
Maven
Maven工具用于管理和构建Java项目
提供标准化项目结构,开发环境可以通用
小知识:
注释快捷键:ctrl+/
坐标主要组成:
groupId
artifactId
version
MyBatis
是一款优秀的持久层框架,简化JDBC开发
几乎免除了所有的JDBC代码以及设置参数和获取结果集的工作
使用MyBatis(简单查询)
用户数据类User:
package com.waifyd.pojo;
public class User {
private Integer id;
private String username;
private String password;
private String gender;
private String addr;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", gender='" + gender + '\'' +
", addr='" + addr + '\'' +
'}';
}
}
实现:
package com.waifyd;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MyBetisDemo {
public static void main(String[] args) throws IOException {
//1.加载mybatis的核心配置文件,获取sqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2.获取SqlSession对象,用它执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();
//3.执行SQL
List<Object> users = sqlSession.selectList("test.selectAll");
System.out.println(users);
//释放资源
sqlSession.close();
}
}
Filter
过滤器,是JavaWeb三大组件之一
可以把对资源的请求拦截下来,从而实现特殊功能
可以完成通用操作,如权限控制、统一编码处理、敏感字符处理
AJAX
1.与服务器进行数据交换
使用AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面
Spring框架
Spring整合了很多框架,提供若干个项目,用于完成特定的功能
Spring Framework
是最基础的项目,是其他项目的根基
目的:充分解耦
IoC控制反转:使用对象时,由主动new对象转化为由外部提供对象,对象创建控制权由程序转移到外部,此思想称为控制反转。Spring提供了IoC容器。
IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中统称为Bean
DI依赖注入:在容器中建立bean和bean之间的依赖关系的整个过程,称为依赖注入
IoC入门案例
在spring的xml中
<!--1.mean中导入spring坐标-->
<!-- 2.配置bean-->
<!-- 配置beanbean标签表示配置bean-->
<!-- id属性表示给bean起名字-->
<!-- class属性表示给bean定义类型-->
<bean id="bookDao" class="com.fydyyds.dao.impl.BookDaolmpl"/>
<bean id="bookService" class="com.fydyyds.service.impl.BookServicelmpl"/>
实现类中
public class App2 {
public static void main(String[] args) {
//3.获取Ioc容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//4.获取Bean
// BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// bookDao.save();
BookService bookService = (BookService) ctx.getBean("bookService");
bookService.save();
}
}
DI依赖注入入门案例
业务层中:
public class BookServicelmpl implements BookService{
//5.删除业务层中使用new方式创建的dao对象
private BookDao bookDao;
public void save(){
System.out.println("book service save ...");
bookDao.save();
}
//6.提供对应的set方法
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}
spring中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--1.mean中导入spring坐标-->
<!-- 2.配置bean-->
<!-- 配置beanbean标签表示配置bean-->
<!-- id属性表示给bean起名字-->
<!-- class属性表示给bean定义类型-->
<bean id="bookDao" class="com.fydyyds.dao.impl.BookDaolmpl"/>
<bean id="bookService" class="com.fydyyds.service.impl.BookServicelmpl">
<!-- 7.配置server与dao的关系-->
<!-- property标签表示配置当前bean属性-->
<!-- name属性表示配置哪一个具体的属性-->
<!-- ref属性表示参照哪一个bean-->
<!-- name指的是属性的名词,ref是当前容器对应的名词-->
<property name="bookDao" ref="bookDao"/>
</bean>
</beans>
bean的配置使用
实例化bean:
1.构造方法实例化bean如
<bean id="bookDao" class="com.fydyyds.dao.impl.BookDaolmpl"/>
bean可以起别名,使用name
如果bean无法获取到,将抛出 No bean named…此时两边检查名字是否一致
bean默认单例模式,可使用作用范围scope为prototype变为分单例
bean的报错,拉倒最后面看最后一个异常信息,从最后解决
无参的构造方法如果不存在,将抛出异常BeanCreationException
如何配置bean生命周期的方法
init-method 和 destory-method
如果要destory-method执行,必须关闭容器,需要用到close()方法,close()方法需要用ClassPathXmlApplicationContext获取容器
DL依赖注入方式
setter方式注入 简单类型 引用类型
引用类型
1.bean中定义引用类型属性并提供可访问的set方法
2.配置中使用property标签ref属性注入引用类型对象
简单类型
1.bean中定义引用类型属性并提供可访问的set方法
2.配置中使用property标签value属性注入引用类型对象
构造器注入 简单类型 引用类型
1.写构造方法
2.配置中使用constructor-arg标签name和ref或value属性注入引用类型对象
强制依赖使用构造器注入,可选依赖使用setter注入
依赖自动装配
1.提供set方法
2.配置中使用 autowire
注解开发Bean
为了方便区分,把
@Component 在持久层使用
@Repository 在数据层使用
@Controller 在表现层使用
在类里配置bean,Spring3.0开启了纯注解开发模式,使用java类替代配置文件
Java类代替Spring核心配置文件
@Configuration
@ComponentScan("com.fydyyds")
@Configuration注解用于设定当前类为配置类
@ComponentScan用于设定扫描路径,该注解只能添加一次,多个数据用数组模式
注解开发依赖注入
类里@Autowired
如果有多个相同类型的bean使用
类里@Qualifier(“指定名称”)
如果不是引用类型是简单类型使用
@Value(“值”)
如果是从外部加载properties文件使用
@PropertySource({“jdbc…”})
@Value(“${}”)
SpringMVC
SpringMVC技术与Servlet技术功能相同,均属于web层开发技术。是一种基于Java实现MVC模型的轻量级web框架。使用简单,开发便捷,灵活性强
1.先导入SpringMVC坐标与Servlet坐标
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencies>
2.创建SpringMVC控制器类
package com.fydyyds.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
//2.定义controller
//2.1使用@Controller定义bean
@Controller
public class UserController {
//2.2设置当前操作的访问路径
@RequestMapping("/save")
//2.3设置当前操作的返回值类型
@ResponseBody
public String save(){
System.out.println("user save ...");
return "{'info':'springmvc'}";
}
}
3.初始化SpringMVC,设定SpringMVC加载对应的bean
package com.fydyyds.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//3.创建springmvc的配置文件,加载controller对应的bean
@Configuration
@ComponentScan("com.fydyyds.controller")
public class SpringMvcConfig {
}
4.初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求
package com.fydyyds.config;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
//4.定义一个servlet容器启动的配置类,在里面加载spring的配置
public class ServletContainer extends AbstractDispatcherServletInitializer {
//加载springMVC容器配置
@Override
protected WebApplicationContext createServletApplicationContext() {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringMvcConfig.class);
return ctx;
}
//设置哪些请求归属springMVC处理
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
//加载spring容器配置
@Override
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
postMan简介
是一款网页调试与发送网页HTTP请求的Chrome插件
常用于进行接口测试
SSM整合
SpringBoot
简化Spring应用的初始搭建以及开发过程