虽然,通过两天的周折终于是把问题解决了。问题看着很低级,犯得错误很蠢,解决的方式更是低级(感觉自己是在胡乱修改)
但是,我真的是尽自己最大的能力,去定位问题所在,去解决。
几行代码,真的是反反复复看了写,写了看,就是找不出问题出现在哪里。
所以,自己只能用最笨的办法来解决了。自己所学所用实在浅显,自愧难当!必须认真深入学习。
其实,说白了这一块就是对数据库的增删改查,但是一个简单的注册登录功能,自己卡了两天,踩了好多坑;真的是耐着性子慢慢调好的
tomcat报错
第一次导入项目的配置文件时,并没有报错,之前一直都是在Edit Configurations中配置Tomcat,自己之前也用过Maven创建项目但是并没有跑过复杂的web Demo。
在第二次导入时,tomcat出现了配置错误的问题。我觉得是pom.xml
中插件依赖出了问题,反复确认之后发现不是。
target
目录,重新编译;----问题解决然后,遇到两个特别玄学的问题,感觉就是遇到鬼了!!!没错,真的太扯了…
在Dao
层的实现接口中,查询数据时是没有问题的,但是,就一个插入用户输入的注册信息数据,保存在数据库中,出现了第一个玄学。
org.springframework.dao.DataIntegrityViolationException
封装数据用的是Spring的Template连接池,看报错的日志信息,是SQL语句出现了问题。
开始我也觉得是自己写错了,我对照着Demo的案例反复检查,甚至复制Demo中源码(Demo中的项目我导入运行完全没有问题),但是,一模一样的的到我这边就是报错。
然后就是各种找解决方法,Google,StackOverFlow等等,其实就是说SQL语法有错,我觉得肯定是自己粗心写出了。但是,几句话我反反复复看了好多遍,确实没问题,把所有写的代码都对照了一遍,就是没法解决。
Debug,清除缓存,重新编译等等,就是解决不了。真的很抓狂…就这样,搞了一天还是不行
就在我删除了项目,自己重头再写一边时,他好了,他好了,他真的不报错了!!!
WTF! 我又把之前的对照了一遍,甚至是将之前的内容复制到现在的文件中,都没有问题!!!神奇吧…
可能会觉得是自己pom.xml
的依赖没引入完全,但是这个问题我排除过了,不是这个问题!
重新写了一遍,问题就都解决了(刚好内容不多,不然真的没法搞!!!)
我现在还是很迷,到底是哪里出问题了。我重头都排查了一遍,但是就是定位不出问题到底出现在了哪里!至于怎么解决的,我也不知道。
反正,他就是好了。
在注册时,ajax
异步来提交数据,表单校验无误提交数据,存储到数据库中。玄学问题又出现了…
在校验正确之后,点击提交,页面不跳转,数据无法存入到表中。
$(function () {
//当表单提交时,调用所有的校验方法
$("#registerForm").submit(function(){
//1.发送数据到服务器
if(checkUsername() && checkPassword() && checkEmail() && checkTelephone()){
//校验通过,发送ajax请求,提交表单的数据 username=zhangsan&password=123
$.post("registUserServlet",$(this).serialize(),function(data){
//处理服务器响应的数据 data {flag:true,errorMsg:"注册失败"}
if(data.flag) {
//注册成功,跳转成功页面
$(location).attr('href', 'register_ok.html');
}else{
//注册失败,给errorMsg添加提示信息
$("#errorMsg").html(data.errorMsg);
}
});
}
//2.不让页面跳转
return false;
//如果这个方法没有返回值,或者返回为true,则表单提交,如果返回为false,则表单不提交
});
//当某一个组件失去焦点是,调用对应的校验方法
$("#username").blur(checkUsername);
$("#password").blur(checkPassword);
$("#email").blur(checkEmail);
$("#telephone").blur(checkTelephone);
});
本来,校验通过是会跳转到register_ok.html
这个页面的;但是,点击注册提交没反应…
可以确定出现错误的范围就是post提交表单时出现了问题。因为在上一个玄学解决之后,其他功能完好,没有出现问题。
那么,问题出现在了哪里?
$(location).attr('href', 'register_ok.html');
有问题?我又重头到尾把代码检查了一遍,虽然我知道问题很大概率出现在了页面或者servlet上,但是,我把service和dao的代码都检查了,为的就是防止出现像上面那种玄妙的问题。
但是,无奈还是没有得到解决。我反复和能跑通的Demo对比,确认了无误无差别,但就是不行。
我真的想不通,自己是真的写对了吗?对比之后,就是没有错误呀?问题到底是在哪呀。。。
就这样,我又像上面那样,重新写了一遍。然后,问题又没了。
该注册注册,该跳转跳转。
我真的很怀疑自己的智商,怀疑自己这么简单的问题都没法解决,自己真的适合学计算机吗?自己真的适合写代码吗?
就这两个问题,我两天一直在想到底是哪里出问题了,对照Demo的代码,反复确认修改,一行一行看,是我眼花了还是咋地,就是没找出来。
用Debug在web中调试,用的不是很熟练,自己搞了半天,打断点,也没整明白。
不知道大家有没有这样的感觉:
越是有问题,越是想迫切解决;但是,能用的办法都用了,就是找不到问题。
问题解决了,还是糊里糊涂,想弄明白到底是哪里出问题了,避免下次再犯同样的错误。
之后,又陆陆续续出现了一些错误,E-mail工具类无法发送邮件在注册时,IIS出现500,无访问权限等等问题,但是经过这两天痛苦的磨砺,感觉很轻松的就解决了
自己无论是在编码,还是Debug定位错误,调试修改这一块,真的是太差了。有问题,就得解决,但是怎么解决,如何避免类似的错误继续发生,这就需要自己多练习,多积累了。
虽然,现在做的无非就是对数据库的增删改查,但是定位问题,解决问题是一个程序员的基本技能。
Bug在开发中是无法避免的,但是,解决问题的方法,心态,也是一个程序员的硬实力!
未来可期,继续努力!