00:00
好,那接下来呢,我们就来整合SIM live,快速的构建出一个后台管理系统,那先来创建一个新的项目来做这个事情,那你有一个project还是使用spring的初始化向导啊,我们JDK呢,我们现在是JAVA8,所以我选JAVA8来把这个组织名写上com at,硅谷项目名呢,我们就还叫boot,比如零五,那我们现在是web什么的,来创建一个din。这个包名呢,我们就来改成A的命,这是我们的后台管理系统系统这个模板好,我们把它创建出来,来选中next,我们把这些正好boot升级到2.4版本,我们就选2.4,来选中一些依赖。首先我们开发里边的DV tos来,我们有了它以后呢,我们这个能实时编义啊,也比较方便。还有我们的room bank简化我们的Java b开发,或者我们也可以把这个configuration processor构筑我们自定义的配置,也可以有提示,然后加上我们现在需要开发web,构中web场景,然后呢,我们需要页面渲染,就勾中模板引擎,我们使用SIM就使用SIM,当然我们后台管理系统完整的应该加上circle等等各种功能,当然这是我们后来再说的事情,我就先把这个基本的页面模板给它构造出来,我选中这几个场景以后来点击next。
01:20
点击finish,让他创建出这个项目。好,大家稍等。那我们现在这个项目呢,创建出来,我们把没用的这个东西呢,可以先删掉,把这个没的这个文件夹这几个呢删掉,那我们现在要做的第一件事情,我们整个后台管理系统的模板呢,已经放在这儿了,这里边呢,有很多的静态资源都在相关的文件夹里边,咱们做的第一件事情,先将我们整个后台管理系统的静态资源全部导入进来,我们放到静态资源呢,应该是放到静态资源文件夹static,这是我们之前说静态资源处理规则的时候,我们知道的事情,好,我先把所有的静态资源放到这个文件夹,接下来呢,将模板页面也放进去,那我呢就不全部放进去了,我们抽取几个关键的来放进去,我们把整个框架搭起来,首先呢,这有一个index页,Index页的我们来点开,大家会发现这index页面呢,是我们登录成功以后来到这个页,所以我先把登录页放进来,来找登录页这儿呢,有一个login页面,CTRLC好,来就把它放到这。
02:27
放到我们这个所有的模板页面应该放在times下,因为之前呢看到啊,我们CTRL加N,我们的SIM的自动配置里边会有这么一个SIM auto configuration,它所有的绑定了SIM properties。我所有的页面的前缀都是在类路镜下的time里面找,后缀呢是点HTM门,所以我们现在呢,先把logn页面放在这,这是我们的登录页,当然这个登录页呢,是我们相当于一访问当前项目就要展示的,所以我们可以来写一个controller,让他一访问我们当前项目的跟路径,我们就可以来展示这个登录页啊我们这个controller呢,比如我们就叫inex controller啊,我们这个是首页的这个controller,这个controller呢是用来负责页面跳转的,所以我们来写controller中介文页跳转的第一个功能string,这应该是去logn页,我们就叫Logan page,这是去我们的登陆页,就叫Logan page了。Logan page,这是我们去。
03:27
登录页去登录页呢,我们返回到这个路径,我们先放在这儿,你给我发送什么请求,来写一个get文P,他呢来给我们来发送get请求,发送get什么样的请求,那发送杠,那就是访问我当前项目跟录键,就是来登录页,或者呢我们也允许他访问这个,或者呢,你给我访问这个也是莱登陆页呢,你呢给我访问log啊,我也认为你也算是莱登陆页,那如果你给我访问杠或者log,相当我来匹配了两个路径,都是来登于路叶而瑞return写什么呢?就写模板的这个名字,前缀后缀不用写,所以我们只写logn htm Mr的前面的这个logn,所以你发请求给我们来到登录页,这是我们的第一个叫来登录页,我们可以来启动测试一下,当然访问当前项目的这个登录进以后,它就默认会来到登录页,登录页里边呢,又会引用我们的整个系统。
04:27
的静态资源,而这静态资源呢,已经被放在静态资源文件夹,那按照它这个访问路径,当前项目下的CSS style CSS CSS style CSS是有的,所以我们的登录页应该也是能访问的,我们就来直接访问,我来访问local host。把这个关掉,来访问我们当前项目lo霍8080回车,诶,发现这个登录页没问题,而且呢,只要我们填了账号密码,点一个对号,登录成功以后就来到我们的首页,所以呢,我们现在专门再来写一个请求,处理我们这个登录的请求,然以呢,你真正得给我带账号密码来进行登录,登录了成功了以后会来到真正的这个慢页面,现在我们后台管理系统的这个主页啊,主页呢就是这个页,我们可以给大家看一下这个页面跳转,点一个对号,那就来到这个index页,所以我们现在呢,就来写一个请求,专门处理登录请求,这个登录请求呢,我我们是以表单提交,我们就给他发POS请求,POS的处理什么,比如我们来写一个logo,那什么意思,你给我发送POS的方式的logo,那就是真正的登录,登录呢有可能要带上账号密码什么一大堆,比如你可以在这儿获取它页面带来的账号密码啊,这个是。
05:46
我们后来慢慢再完善,我们先把框架打出来,你只要账号密码给我带上了,那就来到我们真正的这个,呃,后台管理系统的首页,这个首页呢,应该是在我们的这个页面来找一下,这个叫index页面,Index in,我们来找index页面,在我们的这一块index,好把CTRLC来复制过来,把这个index页面呢,我们就改名叫慢页面吧,这是我们后台管理系统的主页,好,那我们只要你呢登录成功就来到这个主页,好,我把后边这个去掉,那这是你登录成功就会来到主页,我先来重新跳转一下CTRLF9,因为加了低于tos ctrl f9,让它重新编译来测试,首先呢来到我们当前系统,当前系统呢,默认会给我们展示登录页,我们随便提交账号密码,我来点一个对号,为什么没来到这,因为我们这个登录页的这个表单,他提交的这个位置必须是我们这个logo。
06:46
所以我们来到这个登录页的表单来找一下,表单呢,这有一个action action呢不应该是HTMR,应该是我们的这个logo,而且呢,方式必须是的方式,现在我们既然用SIM了,我们就来使用SIM live动态的给我们来构建出我们要去的啊地址,我们的地址呢应该是th action,因为SIM的语法呢叫TH什么,我们想要改掉,改掉action的值就叫TH冒号action,而没有加SIM的民生空间,所以这一块的这个提示有点像报错,那加上SIM live的名称空间,那随便复制一个SIM的页面,我把页面它它的这个民生空间头我们拿过来在这。
07:30
好,CTRLC来复制过来,来到我们的这个首页,现在呢,我们就这个th action,好,就没报错了,好,所以呢,我们接下来使用SIM的第一个语法,在我们这个SIM里边呢,我们想要构建我们的这个超链接地址,我们使用这个表达式叫antf大括号,所以我们这个an服大括号里边写什么地址,它呢就会自动给我们拼装上当前项目的访问路径,如果我来写杠杠呢,我们现在要登录,所以我们就来写杠log,那这个杠log呢,相当于我们最终会发送post方式的这个log log呢,那最终来到我们这个post方式的这个log,它处理完了以后呢,就来登录下CTRLF9,那整个项目呢,重新编译一下。
08:14
特别是呢,我们改了这个页面,我们的这个慢呃登录页,所以我们在登录页这CTRLF9,让他把登录页编译一下来重新刷新我们当前项目的登录页来刷新,保证呢右键查看源代码,我们现在这个表单它的地址是杠log哈,没问题,然后呢,我现在随便提交一个账号里面对号好,我们发现呢,它就来到我们这个首页了,但这呢,好像还有一个问题,如果我们来刷新,这就相当于是一个什么表单的重复提交,所谓的表单重复提交就是我们POS的请求,我们又无限次又提交上来了,所以每一次我一刷新表单,所以又是做了一遍登录,那这个怎么解决呢?那我们可以这么来解决,表单重复提交的最好解决办法就是由于呢,它默认是转发,转发到我们这个页,所以我们一刷新现在刷的还是login请求,如果我们是重定向到我们的这个慢页面,那呢,它相当于就是第二次请求,你一刷新现在只来刷新慢页面,所以我们现在呢专门来写。
09:14
一个请求然跳转到慢页面,就叫man page,然后呢,我们来写一个请求,就叫get map,这个get map呢,它的这个请求路径我们就叫慢啊,我们假装呢就叫慢点HTMMR,我们还给它加个后缀,以后呢,我一加htmmi后缀,你就感觉诶这是想要跳转页面,但是有些同学说我能不能直接发慢HTMR来到我们这,这肯定不行,模板引擎拍文件夹下所有的这个页面的解析一定都是经过请求处理,最终由模板引擎来解析的,所以我们直接访问是访问的,直接访问只能访问到静态文件夹下的,所以我们呢,相当于处理了一个请求,请求名叫慢点HTMMR,最终跳到哪呢?还是跳到这个慢页面,所以这一块才是真正的去慢页面去卖一面,但是呢,我们现在为了解决啊重复提交问题,我可。
10:14
诶在这写这么一个叫redirect,只要我们return方返回值,我们写重定向,重定向到哪个地址来杠,那就是当前项目,当前项目哪个地址那就是慢页面,那这个意思呢,就是我们登录成功,登录成功登录成功重定向项到我们这个慢点HT码,因为我们以前登录成功是转发,所我们看到只要一登录成功页面呢,是转到卖页面了,但是这个请求还是登录,所以我们一刷新刷的是登录请求,所以就会表单重复提交,而我们现在这么一改以后来CTRLF9啊,我们把代码呢,让它重新编译一下,顺便呢把我们这个登录页啊,登录页呢,我们又没有啥变化,就重新来一下来访问杠好,如果我们现在来访问来点击对号来,我们发现呢,他来到慢页面,只不过呢,由于是重定向,现在于他又发一次请求是慢点HT码来到这儿,那相当于呢,我们登录成功以后,最终。
11:14
发送了慢点HTM来到慢页面,而我如果在这儿不停的刷新,相当于我只刷新的是这一次请求,那就不会导致我们post方式的表单重复提交,所以呢,我们说的第一个防止表单重复提交最好的方式就是重定向防止表单重复提交。但是呢,现在又引申出一个问题,就是我们这个慢页面必须登录成功才能访问,而你这么一访问,想你放在任何浏览器,你只要敲我的这个地址,就直接来到我们后台管理系统的这个慢页,这个肯定是不可以的,所以呢,我们理所应当就应该在这个慢页面来做一个判断,你登录了才能来,不登录不能来,那怎么叫登录了呢?只要我们这logo只要登录了,好们为了模拟稍微真实一点的效果,我们可以写一个class class呢,我们来逼我们所有登录的用户,我们都用这个user来封装,这个user里边呢就两个。
12:14
非常简单的属性,一个是user nameme,第二个呢是string password。好,我们现在呢有这两个属性来,为了方便来写上at data啊,Move bank,填上get set,方法这样呢,我们表单提交log,表单提交的时候,那第一个表单user ID的这一块,我们就给它给一个nameme.name,呢就叫username,相当于我们这个username最终会封装这个字段,而密码的这个字段呢,那就name是什么呢?Password,最终我们表单提交会把用户名和密码带上,而这个用户名和密码正好和user里边的这两个属性一模一样,那就来到index CTR了,我们在这儿呢,只需要写一个user,这样呢,我们这个user对象就能完全封装我们表单提交带来的值,只要你登录成功了,我们把它放到session里边,所以我可以写一个http session,我们方法上呢,传一个session,好,我们再来判断怎么叫。
13:14
登录成功if,如果说我们这个user nameme不为空,String us点一个is empty啊,String us它呢不是空的,不是空的呢,这有一个is empty的判断啊,虽然它过时了,那我们还可以好is empty user.get username如果呢,它不为空,并且我们的密码也不为空,那我们就认为它是登录成功的,我们来看一下这个string us啊,就是spring加的,那我们来string,继续strings来判断,它的这个密码也必须不为空,不为空的话呢,我们也可以拿这个来判断,叫has test,它有内容或者呢有长度,哎有长度呢,就自然是不为空,因为it empty呢,它过时了,所以呢,我们来判断,只要你给我提交了账号密码is my empty,我们这个is empty这个好,并且呢,我们的密码不为空。
14:15
只要你这两个呢有,那我就认为登录成功,登录成功呢,我们可以给session里边set atribute,哎,我们放一个属性就叫log user,然后呢,我们来把这个user对象存起来,这是登,把登录成功的用户,把登录成功的用户保存起来,然后呢这样呢是登录成功,然后呢,登录成功了才能重定向到卖页面,否则呢,我们告诉他啊用户名密码错误,让他重新呢再回到登录页,诶这样呢相当于又回到登录页,回到登录页,回到登录页呢,我们一般会给他提示一个错误消息,因为我们是转发回到登录页,所以我们可以把给登录页要去的所有内容,我们放在这个model里边,哎,这都是我们以前说的这个效果,Model里边呢,我可以按一个attribute,就叫message message的这个提示呢,就叫账号密码错误,账号密码错误,哎,我们大概。
15:15
的写了一个逻辑,登录成功我们就放进去,呃,然后呢再去卖页面,否则呢,我们就提示账号密码错误,所以我们可以来看一下,我如果任何东西都不填。那任何东西都不填呢,肯定是有问题的,或者呢,我们最好的这个判断,嗯,来写上,如果你的密码等于123456,我就认为你登录成功,点equals,我们的这个password。好,我们来CTRLF9,我们把整个项目呢重新编译一下,那现在呢,我们重新来到我们的这个登录页,我们只要访问项目的登录键,它又来到登录页,随便提交账号密码呢,如果我不是输123456,我现在随便输一个,我点一个对号,大家会发现还来到这个登录,然后登录的原因是账号密码错误,所以我们最好呢给这有一个提示,后来再说,现在呢,我随便再写一个账号,如果我写了123456走。
16:19
啊,我们来重新来啊,来随便写个账号密码呢,是123456,我们来对号来让他登录一下,诶我们发现呢,它又回到这个页面,回到这个页面的原因是什么?来看一下啊,如果登录我们提交了这个账号密码,这个账号密码呢叫username password,来F12看一下我们这个控制台账号密码会不会给我们提交好,我们来发送请求,走来看一下他提交的这个login log呢?诶you usename you usename是这个password呢,是这个没问题,然后呢,但是密码不对,我们来输一个123456啊重新走提交来看一下这个登录好密码呢是123456,我们来看一下我们的这个English controller是不是写的有问题,如果说123456EQUALS,我们的这个user.get password,那就没问题。
17:22
好,那这个呢是没问题的,我们断点拿到这儿来看,这是遭遇什么现象了,是不?我们这个U的对象呢,没有封装过来值,这个对象呢,会自动封装我们页面提交过来的值,我们可以来看一下,来随便写一个,比如123456对号,好,我们断点呢,现在来到这来看一下这个user对象,好user对象呢,把这个账号密码呢,已经拿到了is empty啊,我们这个判断有问题,们要判断它非空,但是我们给它来了一个空,所以呢,它不是空,那我们就让它汉字learn吧,用它的,如果呢,你这个有长度,说明你不为空啊,我们再来给它提示成功,走们来重新测一下啊,刚才有点小bug。
18:10
好,我们现在来重新测试,我们来重新回到我们的登录页,我们来写一个123456走,登录成功呢,买来到慢页面没问题,但是呢,现在的问题就是我登录成功还把当前用户放到们session里边了,所以我们现在这个卖页面呢,你想要直接访问这一块呢,访问成功,成功的原因就是我们以后来到后台管理系统的任何页面,我们都应该做一个判断,你登录了没,所以我们在这儿呢,要有一个前置的判断是否登录,我们不可能给每个方法写,所以所有的判断呢,最好使用拦截器机制,或者我们的过滤器机制等等,那我们现在为了简单,我们先写在方法里边,那htp session我怎么判断它是登录成功非常方便session.get attribute,因为只要一登录成功呢,我们会给里边session里边放一个log user,只要它不为空就行了,好,我们来判断,如果我们的这个log user不等于,那说明我们给session里边。
19:10
放东西了,放东西,那这就是登录成功了,那我们就给它来到这儿,否则,否则呢,我们还是给他拿跳到登录登录页回到登录页,回到怎么回到登录页呢?而且给登录页要提示一个信息,提示啥信息呢?就是提示,提示的信息应该是啊我们这个,比如我来放一个model model好model呢,我们就告诉他啊,我们当前未登录,请重新登录对吧?请重新登录好我们就做这么一个简单的效果,先来看一下。好,我们现在来访问当前项目跟路径走,那现在呢,没有登录,我们看没有登录的情况下能不能直接访问慢回车,哎,他呢会给我们跳到log页,跳到log页的原因是它没有登录,所以我呢,我们可以把log页的这个错误信息取出来,来看一下怎么写取错误信息,那log页呢,这有一个user ID,我们就放在user ID的最上方,好,最上方,这最上方呢,我们随便来写一个label标签,这个标签里边的内容掉,我们来写一个color read,啊color它的这个样式呢,是一个read,它是一个红色的提示th test,那相当于取出这个文本内容,取出什么内容呢?我们如果错误了,我们do了幅大括号,我们会给里边放一个message消息,所以呢,接下来message消息最终就会放到这CTRLF9。
20:48
把这个页面编一下,重新来看,我来直接先来访问登录一下,这一块呢默认啥都没有,如果我来写一个错误的东西走来,我们这个消息呢叫账号密码错误,而如果我来直接访问慢,那这个消息呢,就重请重新登录啊,没问题,那现在呢,我们就来访问一个对的123456对号好我们现在登录进来,这就没没有任何问题,而且一进慢页面以后,大家注意,在这这我们登录好的用户呢,在这要显示用户的名字,所以使用SIM的语法来到慢页面来找到用户名的这一块显示,用户名的这一块显示呢,应该是我们来看一下啊,这一块呢叫啊招待我们来把这个搜索一下,看它在哪一块位置,那么就把这一块位置的这个内容来给它修改掉就行了,在这个位置这个内容复制一下CTRLC,我们来到这个页面,我们来搜索一下好。
21:49
那这一块呢,内容就在这儿,所以我们现在呢要做的就是,那我们只要登录成功,登录成功呢,我们就应该把这个用户内容放在这儿,大家大家注意这个内容呢,它没在任何标签内,那咋办?所以呢,我们可以使用SIM内的行内写法来到SIM雷官方文档来,我们要取内容的时候呢,我们以前是th test在标签的属性上写的,这样呢,内容会放在标签体里边,但我们直接在重文本里边写,那怎么办?我们看一下它有没有一个行内写法,下边我们来一直找一下,哎,这有一个12引拉来行内写法,那就这样双中括号就行了,CTRLC,所以呢,到底这一块用户名是谁,我们使用双中括号,因为我们这个用户呢,也在session里边放着,所以呢我写session session里边我们会放一个这样的属性,你看啊,只要你登录成功,我们会给session里边放一个叫logging user。
22:49
好,我们就来session里边的log user,我们放到main页面,Session里边的log user里边的username这个属性CTRLF9,我们的这个页面编译一下,重新我们来刷新一下,看能不能刷出我们这个登录后的这个页面,在这来刷新。
23:12
好,我们登录成功呢,我们发现这个名字已经过来了,没问题,所以这就是我们后台啊,管理系统的一个最基本的这个展示,那么下节课呢,再把它里边的公共的东西再抽取一下。
我来说两句