随笔

这篇文章记录下课程设计遇到的问题

首先是在用ajax的时候遇到的问题

以前用ajax的时候,是在输入框失去焦点的时候就执行的,比如输入邮箱后,验证输入的邮箱是否已经存在,如果存在就在页面上显示存在,但是我感觉这样还是存在一个问题,就算提示了邮箱已经存在,但是如果无视提示,还是去点击提交的话,这个时候做不做判断呢?如果还是做一次判断那么就重复判断了,为什么不在提交的时候在判断输入,验证通过再提交表单,否则就阻止表单提交。

我这次就是这样做的,在点击提交的时候进行验证,除了对格式的验证外还有ajax对输入的邮箱进行判断是否存在

首先出的问题是ajax的回调函数根本就没运行,但是后台却接受到了那个验证的请求,后来我就进行调试,发现情况确实是这样的,得到了数据,触发后台的action,但是没执行回调函数

因为没执行回调函数,所以那段验证代码就被跳过了,所以验证通过,执行了表单的提交操作,

在断点调试的时候看日志没有任何问题,但是我没调试的时候,再看日志发现了个奇怪的显示,

后台有两个action被调用了,这是正确的,但是第一个action的日志没打印完,也就是说这个action没执行完下个action就来了,再后来有一次一个特殊的情况,回调函数突然执行了一次,但是只有一次,之后的几次测试还是刚开始的情况

我刚开始以为是自己后台的代码出问题了,但是看了下代码,发现里面没有可能抛异常的情况,再经过几次断点调试后,突然想到了一个问题

ajax  Asynchronous Javascript And XML

第一个A 就是代表着异步,我突然意识到这个问题了,之前再用ajax的时候根本就没有想到这个问题,我用ajax一般就是认为不跳转页面在原页面上修改,

但是ajax是一个异步操作,也就是说,它向后台发起了一个请求,但是不会停止动作来等待这个返回结果,当有结果返回的时候才会触发回调函数,这就解释后台两个action其中前一个只执行了一半的情况了,然后我就查找ajax能不能同步调用,发现确实可以 加上async:false 就可以了,这个修改后一切都没问题了

说了这么多 总结起来就一点,我注意到了ajax的异步调用特性了,之前一直没注意

第二个就是spring boots redis 的使用

在pom中添加依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-redis</artifactId>
        </dependency>

然后在配置类中配置redis

    @Bean
    public JedisConnectionFactory jedisConnFactory() {
        JedisConnectionFactory factory = new JedisConnectionFactory();
        factory.setPassword("luolei");
        return factory;
    }

    @Bean
    public RedisTemplate redisTemplate() {
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(jedisConnFactory());
        return template;
    }

使用的时候用注解注入就可以了

    @Resource
    private RedisTemplate<String,User> redisTemplate;
原文地址:https://www.cnblogs.com/luolei/p/4779547.html