springboot学习

springboot

老师建议用spingboot框架写Java-web项目,之前接触过,但是忘了,忘了

一:熟悉spingboot
1. new 一个springboot项目
  • new project 选择springboot中的Spring starter project

在这里插入图片描述

  • 项目相关信息在这里插入图片描述

First SpringBoot

  • 启动类
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mVk3TZNJ-1621258868119)(C:\Users\14112\Desktop\yang\Software Safety\md\image-20210426212027196.png)]
  • @SpringBootApplication 是一个“三体”结构,实际上它是一个复合 Annotation:@Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @Configuration
    @EnableAutoConfiguration
    @ComponentScanpublic
    @interface重要的只有三个 Annotation,而“三体”结构实际上指的就是这三个 Annotation:
    • @Configuration
    • @EnableAutoConfiguration
    • @ComponentScan
登录实现demo
  • 前端通过ajax发送登录验证请求,请求参数是usernamepassword,然后后端连接数据库,根据请求的username查询数据库,得到相对应账号的密码truepassword,验证这个数据库的密码和请求的密码是否一致,一致则登录成功。

  • 后端使用mysql数据库,Mybatis框架封装jdbc,开始创建项目的时候勾选MyBatis Framework ,MySQL Driver会自动生成对应的依赖。

  • 在com.example.test下创建4个包,与TestApplication.java(启动项所在文件)同级。
    四个包分别是 controller (控制层),entity(实体层),mapper(映射层),service(业务层)。

  • 在src/main/resources下建mapper包。

  • 修改配置文件,这里使用application.yml文件(springboot底层会把application.yml文件解析为application.properties)。

    • 在application.yml下写上配置信息。
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5blDN6Lv-1621258868155)(C:\Users\14112\Desktop\yang\Software Safety\md\image-20210426213320480.png)]

      主要有服务器端口,数据库地址,数据库账号密码。

  • 创建类

    • UserMapper.java
      mapper包下。
      dao层。数据库进行持久化操作,他的方法使针对数据库操作的,基本上用的就是增删改查,他就是个接口,只有方法名,具体实现在mapper.xml中实现。
    • service层:UserService.java
      业务层,存放业务逻辑处理,不直接对数据库进行操作,有接口和接口实现类,提供 controller 层调用方法。
    • 在service层下创建包impl,作为userservice的实现类。
    • Controller层:UserController.Java
      控制层,导入 service层,调用你service方法,controller通过接受前端传来的参数进行业务操作,在返回一个制定的路径或数据表。
    • entity层:user.java
      存放的是实体类,属性值与数据库值保持一致,实现 setter 和 getter 方法。
  • resources下mapper下创建User Mapper.xml(SQL具体操作)

  • 具体流程:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-piRK0VBa-1621258868166)(C:\Users\14112\Desktop\yang\Software Safety\md\image-20210426214045730.png)]

注册
  • 由于登录的时候相关层已经存在,所以在实现注册的时候,利用已经有的结构添加相关方法,映射等。

  • mapper层:添加Integer addnew(User user);方法

  • 在mapper.xml中添加具体的数据库操作。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NrPEhPkg-1621258868171)(C:\Users\14112\Desktop\yang\Software Safety\md\image-20210426214523034.png)]

  • 业务层接口和实现类

    • 在service.java中添加 void insert(User user);接口
    • 在impl中添加insert的具体实现方法。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CBPaHJCj-1621258868174)(C:\Users\14112\Desktop\yang\Software Safety\md\image-20210426214707695.png)]
  • 添加控制器类,添加注册方法

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ukYPHTLy-1621258868178)(C:\Users\14112\Desktop\yang\Software Safety\md\image-20210426214806082.png)]
  • 此时,简单的注册就通过前端/handleregisterstudent的action调用controller层的handleregisterstudent方法,方法中又调用了service中的insert方法,insert方法具体实现类在impl中,impl中的insert调用了mapper层的addnew方法,addnew方法通过mapper.xml中的addnew实现对数据库的操作。

详细设计

总体流程:

主要功能详细设计:在这里插入图片描述

注册:

注册功能流程图:在这里插入图片描述

类图:在这里插入图片描述

数据库表:

类的描述及主要代码:
前端:form表单,然后根据radio选择不同来进行不同的controller层的映射。
在提交form表单之前会要进行一段输入合法性的验证。

合法性验证:
在这里插入图片描述

function beforeSubmit(form){
var specialKey = “[`!#$^&*()=|{}’:;’,\[\].<>/?!#¥……&*()——|{}【】‘;:”“’。,、?]‘’”;//Specific Key list
//var realkey1 = String.fromCharCode(form.username.value);
//var realkey2 = String.fromCharCode(form.password.value);
//alert(realkey1);
var flg1 = false;
for(var i=0;i<form.username.value.length;i++)
{
flg1 = (specialKey.indexOf(form.username.value[i]) >= 0);
if (flg1) {
alert(‘用户名中请勿输入特殊字符’);
return false;
}

	}

var flg2 = false;
for(var i=0;i<form.password.value.length;i++)
{
flg2 = (specialKey.indexOf(form.password.value[i]) >= 0);
if (flg2) {
 alert('密码中请勿输入特殊字符');
return false;
}

}

if(form.username.value==''){
	alert('用户名不能为空!');
	form.username.focus();
	return false;
	}
if(form.password.value==''){
	alert('密码不能为空!');
	form.password.focus();
	return false;
}
if(form.password.value.length<6){
	alert(form.password.value[1]);
	alert('密码至少为6位,请重新输入!');
	form.password.focus();
	return false;
}
/*检测是否有了用户
$(document).ready(function(){
	$("#but2").click(function(){
		 data1=$.ajax({url:"http://localhost:8080/user/isPassT?username="+userName.value+"&password="+password.value,async:false});
		 data2=$.ajax({url:"http://localhost:8080/user/isPass?username="+userName.value+"&password="+password.value,async:false});
		 var ispass1=data1.responseJSON
		 var ispass2=data2.responseJSON
		 if(ispass1 || ispass2){
			 alert("用户已存在");
			 return false;
		 }
		 
		
	 });
});
 */

var reg = /^[A-Za-z]+[0-9]+$/;
var v = form.password.value;
if (!reg.test(v)) {
		alert("密码强度不够!");
		return false;
	}

alert("注册成功!");
return true;//表单提交前的认证,注意:form要加上onSubmit事件

}

Controller类:
映射后的方法:
在这里插入图片描述

Controller层调用service层的insert:
在这里插入图片描述

Insert的具体实现方法:
在这里插入图片描述

Mapper接口类:
在这里插入图片描述

Mapper.xml对数据库的具体操作:
在这里插入图片描述

登录:

登录功能流程图:
在这里插入图片描述

类图:
在这里插入图片描述

类的描述及主要代码段:
前端:
验证码:
在这里插入图片描述
在这里插入图片描述

Ajax传值:获取bool类型的一个返回值,判断用户名口令是否正确
在这里插入图片描述

IsPass映射:
在这里插入图片描述

Service层:
在这里插入图片描述

Mapper层:
在这里插入图片描述

Mapper层具体实现:
在这里插入图片描述

验证完成后进行登录:
前端:
在这里插入图片描述

控制层映射:
在这里插入图片描述

登录后的界面:
在这里插入图片描述

登录后安全退出:
在这里插入图片描述

点击退出后对于控制层layout映射:
在这里插入图片描述

重置密码:

登录界面有个重置密码的链接,可以供用户定期修改密码。
点击重置密码后会进入重置密码的界面:

用户名和原口令对应正确,将用户输入的新口令替换数据库中的原口令:

Controller层映射:

Service层方法:

Mapper层:根据用户名更新用户的口令

其他
  • 验证码
  • 防sql注入
  • 口令加密存储
  • 口令不能太短等。
  • 修改密码
  • 学生和教师身份
文档内容 一、 Spring介绍 1 1.1、SpringBoot简介 1 1.2、系统要求: 1 1.3、SpringBoot和SpringMVC区别 1 1.4、SpringBoot和SpringCloud区别 2 1.5常见错误 2 二、快速入门 2 2.1、创建一个Maven工程 2 2.2、pom文件引入依赖 3 2.3、编写HelloWorld服务 3 2.4、@RestController 4 2.5、@EnableAutoConfiguration 4 2.6 SpringApplication.run(HelloController.class, args); 4 2.7、SpringBoot启动方式1 4 2.8、SpringBoot启动方式2 4 2.9、SpringBoot启动方式3 5 三、 Web开发 5 3.1、静态资源访问 5 3.2、渲染Web页面 5 3.3、使用Freemarker模板引擎渲染web视图 6 3.3.1、pom文件引入: 6 3.3.2、后台代码 6 3.3.3、前台代码 6 3.3.4、Freemarker其他用法 7 3.3.5、Freemarker配置 8 3.4、使用JSP渲染Web视图 8 3.4.1、pom文件引入以下依赖 8 3.4.2、在application.properties创建以下配置 9 3.4.3、后台代码 9 3.5、全局捕获异常 10 四、 数据访问 10 4.1、springboot整合使用JdbcTemplate 10 4.2、springboot整合使用mybatis 12 4.3、springboot整合使用springjpa 18 4.4、springboot整合多数据源 19 五、 事物管理 25 5.1.1SpringBoot整合事物管理 25 5.1.2SpringBoot分布式事物管理 25 六、 日志管理 30 6.1使用log4j记录日志 30 6.2使用AOP统一处理Web请求日志 32 6.3Spring Boot集成lombok让代码更简洁 33 七、 缓存支持 35 7.1注解配置与EhCache使用 35 7.2使用Redis集成缓存 37 八、 热部署 37 8.1 什么是热部署 37 8.2 项目演示案例 37 8.3 热部署原理 37 8.4 Devtools依赖 38 8.5 Devtools原理 38 九、 监控管理 38 Actuator监控应用 38 Maven依赖 38 YML配置 39 Actuator访问路径 40 Admin-UI分布式微服务监控中心 40 Admin-UI-Server 40 Admin-UI-Client 41 十、 性能优化 43 组件自动扫描带来的问题 43 将Servlet容器变成Undertow 44 SpringBoot JVM参数调优 44 十一、 2.0版本新特性 45 以Java 8 为基准 45 内嵌容器包结构调整 45 Servlet-specific 的server properties调整 45 Actuator 默认映射 46 Spring Loaded不再支持 46 支持Quartz Scheduler 46 OAuth 2.0 支持 46 支持Spring WebFlux 46 版本要求 46 十二、 其他内容 47 12.1、使用@Scheduled创建定时任务 47 12.2、使用@Async实现异步调用 47 12.3、自定义参数 49 12.4、多环境配置 50 12.5、修改端口号 50 12.6、SpringBoot yml 使用 50 12.7、SpringBoot整合拦截器 51 12.8、发布打包 52
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值