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注入
  • 口令加密存储
  • 口令不能太短等。
  • 修改密码
  • 学生和教师身份
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值