在上一篇中,我们完成了web服务的搭建(参考 Java进阶开发课堂笔记之Web服务搭建),现在可以开始准备开发代码了。
首先,在main文件夹下,创建一个java
文件夹,用来存放我们的代码,将这个文件夹设置为Sources Root
:
其次,我们在java
这个文件夹下,创建一个controller
的包,新建一个LoginController
的类:
此时我们就可以开始准备开发登录功能了。首先,我们先对web.xml中的Servlet进行配置:
loginServlet
cn.edu.mju.project2.controller.LoginController
loginServlet
/login
其中,
是要注册的Servlet的名字,
是要注册的Servlet的类的地址,要带包路径。
是用来配置我们注册的组件的访问路径,里面的包括两个节点,一个是
与前面写的Servlet
保持一致,另一个是
配置这个组件的访问路径。
如果你觉得以上方法太麻烦的话,可以直接在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("验 证 码:
");
在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 ;
}
}
判断不为空,之后我们对输入验证码与生成验证码比对,若一致,判断账号密码是否一致;若不一致,则返回“当前账号和密码错误”。