11.Springboot

1. SpringBoot

作用:1.简化SSM的大量重复配置,
	2.本质可以理解为一个集成框架,且不需要大量配置。

2. 创建项目:

1.在浏览器中访问`https://start.spring.io/`,配置相关
	信息,最后生成项目
	注意:不过度追求新版本。推荐主流版本,比较稳定。

2.导入到eclipse中,修改pox.xml文件版本号:
第一步:2.1.6改成2.1.3这个版本会比较稳定

第二步:如果eclipse没有自动下在jar包,则可以选择更新Maven,勾
选强制更新。

第三步:如果发现Maven的jar包下载有有遗漏,可以选择删除存储jar包的.m2。
然后重启Eclipse.

3 . 启动SpringBoot

1.导入完成的项目中,默认就已经存在创建时配置的包,例如`cn.tedu.springboot`,该包是项目的根包,SpringBoot不需要配置组件扫描,默认就扫描这个根包,所以,在项目中创建的任何组件类都必须在这个根包或

其子孙包中。

2.SpringBoot项目内置了Tomcat,并且在启动时就会将项目部署到内置的Tomcat中,该Tomcat默认也是使用**8080**端口的,所以,务必保证端口不冲突!

4. 显示前端页面

1.在SpringBoot项目中,在**src/main/resources**下默认已经存在**static**文件夹,该文件夹就是用于存放静态资源的文件夹,例如用于存放html、css、js、图片文件等。

2.可以对**static**文件夹点击右键,创建HTML文件,在弹出的对话框中,默认选中的是**webapp**文件夹,需要手动选中**resources/static**,然后再创建HTML文件,例如创建**index.html**。

3.其实将HTML创建在webapp中依然是可行的,只是SpringBoot建议将静态资源存放在static中。

4.创建完成后,运行启动类,以启动项目,打开浏览器,通过**http://localhost:8080/**即可访问创建的HTML页面。

5.通过启动日志可以看到:

Tomcat started on port(s): 8080 (http) with context path ‘’
即:将Tomcat启动在8080端口,并上下文路径是空字符串。

6.另外,**index.html**也是SpringBoot设置的默认访问资源,所以,访问该页面时,URL中可以不必显式的表现资源名。

#################### 以上大纲步骤 测试1 ##################

1.创建项目
2.修改版本号
3.创建默认访问的HTML界面
4.运行的类:SpringbootApplication
5.运行效果为:浏览器显示index的内容

5. 访问SpringMVC的控制器

1.首先,创建`register.html`用户注册页面,将提交到`user/handle_register`位置。
2.在SpringBoot项目中,处理SpringMVC框架相关内容时,默认已经配置好了`DispatcherServlet`,且映射的路径是`/*`,所以,在设计URL时,控制器相关资源不需要使用`.do`作为后缀,甚至SpringBoot项目推荐使用RESTful的API风格,根本就不推荐使用任何后缀。
3.然后,需要创建`cn.tedu.springboot.controller.UserController`类,在类之前添加`@RestController`和`@RequestMapping("user")`,并在类中添加处理请求的方法:

@RequestMapping("user")
@RestController
public class UserController {

	@RequestMapping("handle_register")
	public String handleRegister(User user) {
		System.err.println("UserController.handleRegister()");
		System.err.println("\t" + user);
		return "成功";
	}
	
}
4.@RestController注解相关于@Controller和@ResponseBody的组合使用,只不过该注解是添加在控制器类之前的,使得该控制器类中所有处理请求的方法都是响应正文的!

5.SpringBoot项目默认并不支持使用jsp,如果一定需要使用jsp,还需要另外添加依赖!

以后控制器类中将@Controller改成@RestController

6.如果需要响应JSON数据,依然需要自定义响应结果的类型,例如创建`JsonResult`类,然后将方法的返回值类型声明为该类型即可,在SpringBoot中默认已经添加了Jackson相关依赖,并完成了相关配置,所以,直接使用即可。

#################### 以上大纲步骤 测试2 ##################

1.创建register.html注册页面
2.创建控制器
3.创建User实体类
4.游览器访问:
http://localhost:8080/user/handle_register

	a.点击注册失败,可以检查注册页面按钮类型是否为submit
	b.form表单action中的响应是否和控制器请求方法相同

5.成功效果为控制台输出:
UserController.handleRegister()(打桩)
User [id=null, username=管理员, password=1234, age=22, phone=17336606653, email=admin@qq.com](注册自定义填写的信息)
浏览器输出:成功(控制器返回的字符串)

6. 添加数据库编程相关依赖

1.因为SpringBoot并不确定某个项目使用哪种数据库(MySQL / Oracle / SQL Server等),也不确定将使用哪种持久层框架(MyBatis / Hibernate等),所以,在SpringBoot项目中,默认并没有添加数据库编程相关的依赖,需要在创建项目时手动勾选,或在项目创建完成后,在**pom.xml**中另行添加。

2.如果使用MySQL和MyBatis,需要添加的依赖:

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.0.1</version>
</dependency>

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

3.SpringBoot项目会推荐使用某些依赖的版本,当自行添加依赖时,大多不需要指定版本号,SpringBoot会自动使用较新的、稳定的版本!

4.当添加以上依赖后,如果直接启动项目,就报告错误且启动失败,因为SpringBoot会认为当前项目需要使用数据库编程,会自动读取数据库相关配置,然后目前并没有添加相关配置,就会读取失败,所以发生错误,则需要在**src/main/resources/application.properties**文件中进行配置:

spring.datasource.url=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characeterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=

5.SpringBoot项目会自动的在**mysql-connector-java**的包中查找驱动类的全名,所以,无需配置`driver`或`driverClassName`属性。

6.配置完以上内容后,再次启动项目,将启动成功,且,即使以上配置信息有误,也并不影响项目启动,因为启动时只会读取以上配置信息,并不会尝试连接数据库!

#################### 以上大纲步骤 测试3 ##################

1.添加依赖
2.配置数据库文件:application.properties
3.运行效果:项目像上一步测试一样正常启动则为正常。

7. 检查是否可以正确的获取连接对象

1.在**src/test/java**下,默认已经存在根包及单元测试类,且测试类中有1个空的测试方法:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootApplicationTests {

	@Test
	public void contextLoads() {
	}

}

2.首先,应该执行该空测试方法,如果整个执行过程中没有报告任何错误,则表示当前环境是正确的,相关jar包是完整的。

3.SpringBoot项目中,执行单元测试时,也会加载整个环境,例如加载Spring环境,所以,可以通过自动装配的方式获取数据源对象,然后执行获取连接:

@Autowired
private DataSource dataSource;

@Test
public void getConnection() throws SQLException {
	Connection conn = dataSource.getConnection();
	System.err.println(conn);
}

4.如果能正常输出显示连接对象,则表示关于数据库连接的配置信息是正确的!

#################### 以上大纲步骤 测试4 ##################

1.添加测试方法
2.运行测试
3.测试效果:控制台输出连接对象地址
HikariProxyConnection@250702170 wrapping com.mysql.cj.jdbc.ConnectionImpl@58860997

8. 开发持久层功能

1.先创建持久层接口`cn.tedu.springboot.mapper.UserMapper`,为了使得框架能知道接口在哪里,可以为接口添加`@Mapper`注解:

@Mapper
public interface UserMapper {

	Integer addnew(User user);
	
}

2.通常,并不推荐使用这样的方式配置接口文件的位置,更推荐的是在启动类之前添加`@MapperScan("cn.tedu.springboot.mapper")`注解配置:

@SpringBootApplication
@MapperScan("cn.tedu.springboot.mapper")
public class SpringbootApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootApplication.class, args);
	}

}
使用了`@MapperScan`注解后,就不必在每个接口之前添加`@Mapper`
注解了。

3.添加User findByUsername(String username)方法,进行
查询

4.总的来看,关于MyBatis的开发,并不是SpringBoot的特性,只是接口文件在哪里和XML映射文件在哪里的这2处的配置方式不同。

5.在src/main/resources中创建文件夹'mappers'
复制UserMapper.xml文件,里面是一些sql代码,增删改等。
这个文件是在其他项目里面复制过来的,没有的话,要自己写。

文件中对应的接口复制过来的要进行修改
改成:
<!-- namespace:对应的接口 -->
6.接下来,和此前的MyBatis开发步骤相同,配置XML映射。

然后,需要在application.properties中添加配置,以确定XML映射文件的位置:

mybatis.mapper-locations=classpath:mappers/*.xml
	

7.全部完成后,应该执行单元测试,以检验所开发的功能是否可以正确
运行:

@Autowired
private UserMapper mapper;

@Test
public void addnew() {
	User user = new User();
	user.setUsername("SpringBoot");
	user.setPassword("888888");
	Integer rows = mapper.addnew(user);
	System.err.println("rows=" + rows);
}

@Test
public void findByUsername() {
	String username = "SpringBoot";
	User result = mapper.findByUsername(username);
	System.err.println(result);
}

#################### 以上大纲步骤 测试5 ##################

1.创建持久层接口UserMapper.java
2.SpringbootApplication.java中添加代码
3.UserMapper.java中添加查询
4.UserMapper.xml中,书写sql代码
5.单元测试

9. 开发业务层

1.在完整的服务器端数据处理流程中,应该有业务层,它的主要作用是设计业务流程和业务逻辑,从而保障数据安全,即数据是根据开发人员所设定的规则而产生或发生变化或访问的。

2.在编写代码时,应该先创建业务层的接口,例如创建`cn.tedu.springboot.service.IUserService`,并在该接口中添加抽象方法:

public interface IUserService {

	void register(User user);
	
}
在设计抽象方法时,**仅以操作成功为前提来设计方法的返回值**,在具体实现时,如果认定操作失败,将抛出异常。

3.然后,创建`cn.tedu.springboot.service.UserServiceImpl`业务层实现类,实现以上`IUserService`接口,该类的对象是需要被Spring进行管理的,所以需要添加`@Service`注解。在类中,将调用持久层开发的方法来完成数据的验证及最终插入用户数据,所以,还需要声明`@Autowired private UserMapper userMapper;`持久层对象:

@Service
public class UserServiceImpl implements IUserService {
	
	@Autowired
	private UserMapper userMapper;

}

5.IUserService.java类中,重写接口中定义的抽象方法:

@Override
public void register(User user) {
	// 根据参数user获取尝试注册的用户名,并根据用户名查询数据
	String username = user.getUsername();
	User result = userMapper.findByUsername(username);
	// 判断查询结果是否为null
	if (result == null) {
	// 是:用户名未被占用,允许注册
		userMapper.addnew(user);
	} else {
		// 否:用户名已经被占用,不允许注册,抛出异常
		throw new IllegalArgumentException(
			"尝试注册的用户名(" + username + ")已经被占用!");
	}
}

6.最后,仍需要编写并执行单元测试:

@Autowired
IUserService service;

@Test
public void register() {
	try {
		User user = new User();
		user.setUsername("Service");
		user.setPassword("888888");
		service.register(user);
		System.err.println("注册成功!");
	} catch (IllegalArgumentException e) {
		System.err.println(e.getMessage());
	}
}

注意:关于业务层的开发依然不是SpringBoot的特性!

#################### 以上大纲步骤 测试6 ##################
1.创建新包和一个类加一个接口
cn.tedu.springboot.service.IUserService
cn.tedu.springboot.service.UserServiceImpl (接口)
2.分别给这两个类添加相应的代码
3.测试类里面添加测试方法
4.测试效果:
控制台显示:注册成功。

10. 完成控制器层的开发

1.首先,应该创建`cn.tedu.springboot.util.JsonResult`类,用于表示控制器端的响应结果的类型。

2.然后,在控制器中对“注册”请求进行处理:

@RequestMapping("handle_register")
public JsonResult<Void> handleRegister(User user) {
	System.err.println("UserController.handleRegister()");
	System.err.println("\t" + user);
	
	JsonResult<Void> jr = new JsonResult<Void>();
	
	try {
		userService.register(user);
		jr.setState(1);
	} catch (IllegalArgumentException e) {
		jr.setState(2);
		jr.setMessage(e.getMessage());
	}
	
	return jr;
}

3.完成后,可以通过`http://localhost:8080/user/handle_register?username=Project&password=000000`进行测试。

#################### 以上大纲步骤 测试7 ##################
1.创建Json实体类
2.控制器中写代码
3.测试:
http://localhost:8080/user/handle_register?username=Project&password=000000`进行测试。

显示1成功:
{"state":1,"message":null,"data":null}
刷新之后
显示2成功

11.Ajax
1.修改register文件
按钮submit改成button
2.修改里面的内容
3.将js复制过来放在register同一文件夹
4.浏览器检验:
localhost:8080/register.html
5.成功效果为:
异步刷新成功
用户名查询不到,则弹出窗口提示:注册成功
查到了,用户名窗口右边就显示:用户名已注册

注意:关于以上部分开发依然步是SpringBoot的特性。

1.Spring:创建和管理对象
2.SpringMVC:如何接收请求,如何发送响应 响应正文(json)、
拦截器,(@RestController)
3.Mybatis:简化持久层的开发,如何设计抽象方法。
4.Ajax:实现异步请求。(请体,破化原有提交方式。)
好处就是块,用户体验好。 出现的也是json数据
5.SpringBoot:创建项目更快。配置少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员西柚柚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值