美文网首页
Ajax入门与Java正则表达式

Ajax入门与Java正则表达式

作者: 磊_5d71 | 来源:发表于2018-09-22 11:35 被阅读0次

传统的Web应用允许用户端填写表单(form),当提交表单时就向网页服务器发送一个请求。服务器接收并处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML码往往是相同的。由于每次应用的沟通都需要向服务器发送请求,应用的回应时间依赖于服务器的回应时间。这导致了用户界面的回应比本机应用慢得多。

与此不同,AJAX应用可以仅向服务器发送并取回必须的数据,并在客户端采用JavaScript处理来自服务器的回应。因为在服务器和浏览器之间交换的数据大量减少,服务器回应更快了。同时,很多的处理工作可以在发出请求的客户端机器上完成,因此Web服务器的负荷也减少了。

Ajax语法总结

  • url:请求地址
  • type:请求数据时的传递方式(get/post)
  • data:用来传递的数据(建议用json)
  • success:交互成功后要执行的方法
  • dataType:ajax接收后台数据类型(建议用json)
  • 注意事项:ajax与后台交互时,后台不能直接跳转到其他页面
  • 应用场景 搜索框、地图等
  • 邮箱校验[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\d+)(\.[a-zA-Z]+)+
案例
  • jsp代码
-<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
<style type="text/css">
input {
    width: 250px;
    height: 25px;
}

#login {
    width: 255px;
    height: 35px;
    background-color: #FF2611;
    border: 0px;
    cursor: pointer;
    color: white
}

.c1 {
    font-size: 24px;
    color: black;
    font-weight: bolder
}

.c2 {
    font-size: 14px;
    color: #666;
}

.c3 {
    font-size: 14px;
    color: red;
}
</style>
<script type="text/javascript" src="resources/js/jquery-1.4.2.js"></script>
</head>
<body style="text-align: center;">
    <table>
        <tr>
            <td><span class="c1">欢迎登录</span>&nbsp; <span class="c2">没有帐号?</span>
                <span class="c3">立即注册</span></td>
        </tr>
        <tr>
            <td><input type="text" name="username"
                placeholder="请输入登录邮箱/手机号"><span class="tip" style="color:red;font-size:12px"></span></td>
        </tr>
        <tr>
            <td><input type="password" name="password"
                placeholder="6-16位密码,区分大小写,不能空格"></td>
        </tr>
        <tr>
            <td>
                <!-- jquery使用type="button"提交,不用form --> <input type="button"
                value="登录" id="login">
            </td>
        </tr>
    </table>
</body>
<script type="text/javascript">
    $("#login").click(function() {
        //单击登陆时,触发Ajax事件,里面为json数据格式
        $.ajax({
            //转到的servlet路径
            url:"<%=basePath%>/LoginServlet",
            //用post类型
            type : "post",
            //传的元素
            data : {
                username : $("input[name=username]")
                        .val(),
                password : $("input[name=password]")
                        .val(),
            },
            //datatype指明servlet给ajax返回数据的数据格式
            dataType : "json",
            //result里封装了servlet返回给ajax的结果
            success : function(result) {
                var flag = result.flag;
                if (flag==true) {
                    //如果登陆成功则跳转到成功页面
                    window.location.href= "<%=basePath%>page/front/success.jsp";
                } else {
                    //跳回index.jsp登陆页面,同时在登陆页面给用户一个友好的提示
                    $(".tip").text("您输入的用户名或者密码不正确")
                }

            }
        });
    });
</script>
</html>
  • servlet代码
package com.alan.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONObject;


@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                //1、首先获取jsp页面传递过来的参数信息
                String username = request.getParameter("username");
                String password = request.getParameter("password");

                //2、如果username="15912345678",password="12345678"则登录成功,否则登录失败
                JSONObject jsonObject = null;
                if("15912345678".equals(username) && "12345678".equals(password)){
                    System.out.println("username="+username);
                    System.out.println("password="+password);
                     jsonObject = new JSONObject("{flag:true}");

                }else{
                    
                    //如果登陆失败,则给ajax返回数据json格式。
                    //java中使用JSON需要在lib中导入json.jar包
                     jsonObject = new JSONObject("{flag:false}");
                }
                //通过response方法数据回传到jsp页面    
    response.getOutputStream().write(jsonObject.toString().getBytes("utf-8"));
            
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}


Java正则表达式

语法规则

  • [abc] 表示只能有一个字符并且只能是a或b或c (简单类)
  • [a-zA-Z] 表示只能有一个字符是a到z 或者A到Z ,两头字母包括在内(范围)
  • X{n} 表示X恰好n次 例如[0-9]{2} 数字两位
  • X{n,} 表示X至少n次 例如[0-9]{2,} 数字最少是两位
  • X{n,m} 表示X至少n次 ,但不能超过m次

转义字符

  • \d 表示数字:[0-9]
  • \D 表示非数字
  • \s 表示空白字符(如空格、\t制表位、\n换行等)
  • \S 非空白字符
  • \w 表示单词字符:[a-zA-Z_0-9]
  • \W 表示非单词字符
  • ^表示正则起始标记,$表示结束标记(可以不写)
  • 案例存放路径 /AjaxWebProj/src/com/alan/regex包下面
package com.alan.regex;

public class RegexTest {

    public static void main(String[] args) {

        String data = "a";
        String regex = "\\D"; //非数字
        boolean flag = data.matches(regex);
        //System.out.println(flag);
        
        String data2 = " ";
        String regex2 = "\\s"; //空白字符
        boolean flag2 = data2.matches(regex2);
        //System.out.println(flag2);
        
        String data3 = "a";
        String regex3 = "\\S"; //非空白字符
        boolean flag3 = data3.matches(regex3);
        //System.out.println(flag3);
        
        String data4 = "_";
        String regex4 = "\\w"; //单词字符 [a-zA-Z_0-9]
        boolean flag4 = data4.matches(regex4);
        //System.out.println(flag4);    
        
        String data5 = "~";
        String regex5 = "^\\W$"; //非单词字符 [a-zA-Z_0-9] ( ^表示正则起始标记,$表示结束标记(可以不写))
        boolean flag5 = data5.matches(regex5);
        System.out.println(flag5);  
    }

}

相关文章

网友评论

      本文标题:Ajax入门与Java正则表达式

      本文链接:https://www.haomeiwen.com/subject/ohmtoftx.html