员工管理系统:登录功能实现
我们先把登录的功能实现了,登陆成功的话,跳到首页。
我们编程的时候不要直接就把完整代码写出来之后再去测试,我们要一步一步写,写一步测试一步,不然我们的bug都改不过来。
我们先写一个controller,看看能不能让它成功跳转过来:
运行一下:
我们没有去做判断,只要登录就能跳转。目前确定跳转功能没有错误。
我们现在是想要去接受我们前端传来的用户名和密码值,我们就需要在前端给他们name属性:
我们现在想做的事是判断,如果用户名为空或者密码错误,我们就跳回首页,如果登录成功跳到其它页面:
运行:
登录失败时:
现在它符合了我们的预期,接下来我们要完善的是,我们要给它加上提示语句,提示用户登录失败的信息。
我们在h标签下加一个p标签提示语,运行一下:
提示语是出来了,但是现在无论登录与否,成功与否都有这条提示,我们接下来就在前端做一个if判断:
再运行一下:
点击登录:
若密码为123456:
点击登录:
我们的thymeleaf模板可以做很多我们java可以做的事情。
但是现在 我们发现一个不对劲的事情:
我们不可能跳转页面之后,连用户名和密码都能被看见。
我们要去自己手动去配置一个映射:
我们如果登录成功就会重定向到main页面,但是我们并没有main页面,所以我们自定义视图解析器,我们当收到地址为main.html就会自动映射到我们跳转到的页面。
运行:
但是我们还有一个瑕疵,就是我们现在所有用户都可以访问这个页面,这显然是不合理的。
登录拦截器
我们就要学习在springboot框架中使用拦截器。
我们判断是否拦截的一句就是session是否存在,所以我们先去在controller中加上session:
我们先去写一个拦截器,在程序开启前去进行拦截判断:
同样的我们写完了拦截器我们也要把它配置到spring中去。
在config中使用本身的添加拦截器的方法,并且excludePathPatterns方法可以允许某些文件不被拦截。
运行:
我们登录一下:
我们退出去再直接登录一次:
因为之前登陆过,存在session,所以可以直接访问。我们现在要做的一个事情是,我们想把Company name换成我们自己登录上的用户名:
我们把原来显示Company name的地方改成我们session中的名字,注意我们的表达式用$取值。
运行: