您的位置:首页 > 编程语言 > Java开发

Java进阶开发课堂笔记之开发登录功能

2020-07-18 04:45 99 查看

开发登录功能

在上一篇中,我们完成了web服务的搭建(参考 Java进阶开发课堂笔记之Web服务搭建),现在可以开始准备开发代码了。
首先,在main文件夹下,创建一个

java
文件夹,用来存放我们的代码,将这个文件夹设置为
Sources Root


其次,我们在
java
这个文件夹下,创建一个
controller
的包,新建一个
LoginController
的类:

此时我们就可以开始准备开发登录功能了。首先,我们先对web.xml中的Servlet进行配置:

<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>cn.edu.mju.project2.controller.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>

其中,

<Servlet-name>
是要注册的Servlet的名字,
<Servlet-class>
是要注册的Servlet的类的地址,要带包路径。
<Servlet-mapping>
是用来配置我们注册的组件的访问路径,里面的包括两个节点,一个是
<Servlet-name>
与前面写的
Servlet
保持一致,另一个是
<url-pattern>
配置这个组件的访问路径。
如果你觉得以上方法太麻烦的话,可以直接在
LoginController
里面进行配置:

@WebServlet("/login")


此时WebServlet出现了报错,是由于未导入jar包导致的,我们点击

Import class
即可。
配置好WebServlet后,由于
LoginController
是要继承
HttpServlet
的,所以我们要对doGet和doPost进行重写:
doGet:
doPost:

提示:如果想要在web界面上显示中文,需要在代码中添加以下两句代码即可(这里用doGet的代码举例):

我们来查看一下目前的结果,运行程序,打开浏览器,输入先前设好的URL:

优化代码

在开发完登录功能后,发现存在许多重复的代码,此时,我们需要优化代码。
代码优化前:


代码优化后:


这样代码就显得比较简洁,以后修改代码的时候,就不会出现一处修改了,而另外一处相同的代码忘记修改的情况。
最后,不要忘记将开发的代码提交到本地仓库,并push到远程仓库。

调用验证码

当我们开发完验证码之后,我们就需要在登录功能中调用验证码。
首先我们在

CaptchaController.java
也就是验证码代码中创建一个独立的
HttpSession
。将我们随机生成的验证码存入到这个
session
中,参考代码:

String code = StrUil.randomString(4);
HttpSession session = req.getSession();
session.setAttribute("code",code);

完成以上以后,我们回到

LoginController.java
中,我们在
doGet
中添加验证码的输入框与验证码,参考代码:

stringBuilder.append("验 证 码:<input type='text' name='valueCode''value=''><img src='/captcha' width='80' height='40'><br>");

doPost
中定义一个字符串
valueCode
来存储
req
传递的参数,也就是我们的验证码。参考代码:

String valueCode = req.getParameter(“valueCode”);

此时我们要把用户输入的验证码与生成的验证码进行对比,我们先定义一个

saveCode
来存储我们生成的验证码,参考代码:

String saveCode = (String) req.getSession.getAtttribute("code");

我们开始对验证码进行对比,首先我们判断验证么输入是否为空,若验证码为空,则对比没有意义。我们在工具类(具体查看工具类那章)中创建一个

isBank
方法来判断输入是否为空。参考代码:

public static void idBank(String str){
if(str==null||ste.equals("")){
return true;
}
else{
return false ;
}
}

判断不为空,之后我们对输入验证码与生成验证码比对,若一致,判断账号密码是否一致;若不一致,则返回“当前账号和密码错误”。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: