【入门学习-用Servlet和Ajax技术,校验用户名是否存在】

最近在学web前端,发现有些东西特别容易忘。学vue之前想把js(包括一些前端框架)搞熟悉了。

原理就是用户在注册界面输入用户名,当文本框失去焦点后,触发post请求,把文本框里的内容传到服务器,服务器进行校验,将结果返回给前端页面。没有用数据库的知识,username的值直接随便在servlet里定义了一个,就是作为一个新手熟悉前后端数据交互。(其实是把csdn当作笔记本用了hahahahahahaha-------)

在IDEA里,启动了tomcat服务器,把前端页面命名为:“03_用户名校验.html”,后端用的servlet,在com.example.learning_tomcat包下创建个servlet类,类名为UserServlet,话不多说,上代码,注释都在里面。(所有的代码都在下面了)

前端部分:

<!DOCTYPE html>
<html lang="ch">
<head>
    <meta charset="utf-8">
    <title>注册-个人中心</title>
    //要引入jquery
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        $(function(){
                //当用户名框失去焦点时,提交post请求
                $("#username").blur(function(){
                    //获取文本框里面的值
                    var username = $(this).val();
                    //post请求
                    $.post("userservlet",{username:username},function(data){
               
                   //期望服务器返回的是{"userExist":true,"msg":"这个用户已经存在了"}这种
                        if(data.userExist){
                            $("span").css("color","red");
                            $("span").html(data.msg);
                        }else{
                            $("span").css("color","green");
                            $("span").html(data.msg);
                        }
                    },"json");//这里要注意,最后一个type值是响应结果的类型json
                });


        });

    </script>
</head>
<body>
    <!--用了内联的样式随便美化了一下-->
    <div style="background-color: pink; margin: 0 auto; height: 200px; width: 420px; padding-top: 70px; border-radius: 20px 20px 20px">
        <div style="background-color: peachpuff; height: 120px; width:250px; margin: 0 auto;padding-top: 20px; border-radius: 15px 15px 15px">
            <!--就不提交表单了-->
            <form >
                用名:<input id="username" type="text" name="username" placeholder="请输入用户名"><br>
                密码:<input type="password" name="password" placeholder="请输入密码"><br>
                <input type="submit" value="注册"><span></span>
            </form>
        </div>

    </div>

</body>
</html>

后端部分:

在com.example.learning_tomcat包下创建个servlet类,类名为UserServlet,不在web.xml中配置,servlet3之后都能用注解@WebServlet("/userservlet")

package com.example.learning_tomcat;

//用的jackson的json解析器
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@WebServlet("/userservlet")
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }

    @Override
        //重写了post和get方法这里只用post,上面那个get方法不写了,直接调用这里的doGet方法
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取请求到的数据
        String username_json = request.getParameter("username");
        //设置响应数据的格式
        response.setContentType("text/html;charset=utf-8");
        //创建自定map,可以自定义对应关系的集合
        Map<String,Object> map = new HashMap<String,Object>();


        /*
            这里就不用数据库了,我们主要来学习ajax
            判断用户名是否是pcc
        */
        if("pcc".equals(username_json)){
            //注册用户名是pcc
            map.put("userExist",true);
            map.put("msg","这个用户已经存在了");
        }else {
            //注册用户名不是pcc
            map.put("userExist",false);
            map.put("msg","用户名可以使用");
        }

        //创建jackson的核心对象
        ObjectMapper mapper = new ObjectMapper();
        //将Map转换为json字符串
        mapper.writeValue(response.getWriter(),map);

//也可以用下面的方法
//        String json = mapper.writeValueAsString(map);
//        //将转换好的json响应到客户端浏览器
//        response.getWriter().write(json);

    }
}

启动tomcat服务器,运行结果示例:

【入门学习-用Servlet和Ajax技术,校验用户名是否存在】

【入门学习-用Servlet和Ajax技术,校验用户名是否存在】 

 

上一篇:关于ajax中的async


下一篇:Excel下载workbook都写入到输出流了,浏览器为什么还是没下载文件