1.什么是AJAX?
注册---》用户名的唯一性校验
注册---》 注册提交
注册---》注册验证码
登陆---》 登录提交等等
注意:什么场景中适合使用ajax模式?什么场景中适用传统模式?
发送请求需要绝对跳转的时候使用传统模式!!!
4.AJAX的使用?
例:注册用户名的唯一性校验用户:输入用户名 然后输入完毕 立刻提交用户名是否可用
1 给 id为username的输入框添加失去焦点的事件
username.onblur = function () {
alert(111);
}
2 获取用户输入的数据value
this.value
3 通过ajax将用户输入的用户名发送给服务器(servlet)
3.1 将 jQuery文件导入到 views/js
3.2 在当前文件中通过script标签引入jq文件
3.3 发送ajax请求
$.get();
$.post();
$.post("url",参数,function(){});
4 接收服务器返回的响应(该用户名是否可用)
5 将回传的响应展示到页面中
后台(servlet):1 接收请求参数
2 通过dao 校验用户名是否可用
3 将校验结果 响应给浏览器
register.jsp:
AJAX发送json格式的数据:
CheckusernameServlet.java
后台响应json格式的数据
/*校验用户名唯一性*/ @WebServlet("/checkUsername") public class CheckusernameServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /*获取请求参数*/ String username = req.getParameter("username"); //System.out.println(username); /*调用dao,校验用户唯一性*/ ILoginDAO dao =new LoginDAOImpl(); boolean exist = dao.isExist(username); /*校验结果返回浏览器 ,响应ajax请求*/ // json格式 在 类似于java 中的 map相似 所以 先创建一个hashmap 将数据放到map中 然后 再通过 fastjson 将map转成 json resp.setContentType("text/json;charset=UTF-8"); PrintWriter out = resp.getWriter(); Map<Object, Object> map = new HashMap<>(); if (exist){ map.put("code","100404"); map.put("message","用户名已被占用"); }else { map.put("code","100200"); map.put("message","用户名可用"); } String s = JSON.toJSONString(map); out.write(s); out.close(); } }
注:AJAX发送请求到后台是json格式的数据,后台响应AJAX的也是json格式的数据。
响应AJAX需要导入阿里巴巴的fastjson..jar包,到工程WEN-INF/lib目录下。