问题

  1. 我遇到了很多路径问题,总结一下有

    1. request.getRequestDispatcher( )转发路径
  2. 把mysql limit句子的两个参数作用弄混淆了,第一个表示偏移量,第二个是表示获取的数量,但我以为是截止量
  3. 我把jquery文件放在了web-info文件夹下,然后设置自动提示的src位置,结果出现错误。这里自动提示的文件位置是错的,根本获取不到。需要自己设置。另外,把scripts文件夹放置在 应用根目录 下比较好。
  4. 编码问题。比如说新增一个账户,表单传递过来的信息,直接放置在数据库中出现乱码。需要设置request.setCharacterEncoding(“utf-8”);
  5. 一开始设计表的字段时,注意不要使用mysql 的关键字,否则会报错。我因为要用“指令”这个词,就直接设置了order字段。结果出现错误。
  6. 数据库连接的资源文件单独放置在一个文件db.properties,在读取时,注意key要和文件里面的相同。
  7. 注意测试。每完成一个模块,要测试代码的正确性与否。比如,我写完“获取连接”的代码后,然后就开始兴奋的写crud这些。但是,连接部分有错误,获取的是空指针,然后一层层找bug,最后问题在连接上。
  8. 关于分层。service层承上启下,所以设置一个接口,然后写一个实现它的类,这样有错误就不用来回改control层的代码。
  9. 设计。这件事情很重要,关于要实现的业务,逻辑等等,一开始就要规划好,所以要画“流程图”,“时序图”,然后根据图来写代码。其实一个项目,最重要的是前期规划,实际上代码部分占用的时间很少。但是我没有规划,所以一边写一边改,真的浪费时间。
  10. 关于返回值。数据库操作分为两种,读操作和写操作,读操作返回数据,失败则返回null,写操作返回一个规定的代号。然后根据代号告诉页面,操作成功或者失败。
  11. post还是get。我到底是用post方式提交,还是用get方式呢。我
  12. 关于null到底是什么。遇到一个问题,判断一个字符串delete是不是空,delete!=null||delete.length()!=0如果delete=null,将会判断null.length( )将导致错误。然后我查了一下知乎,有个人说的很透彻,摘录如下
  13. :对一个对象的引用,其实只是变量保存了这个对象的地址而已,变量本身并不是一个对象。当你定义了一个变量用来引用一个对象,但却没有实际构造/引用对象,变量也就无从保存对象的地址。所以,null不是对象,而是一个空指针,不是对象为null,而是变量为null。至于题主所说的类型转换,只要明白变量和对象的区别,问题也就不存在了。变量其实不存在类型这一说,只不过是强类型语言为了减少代码编写过程产生的错误,顺便让IDE能够提供自动完成等智能化功能,约束了变量的使用而已。类型转换过程中,转换的是变量引用的对象而非变量本身。
  14. 判断null和空字符串
  15. 为什么局部变量必须初始化,成员变量不用初始化。我在网上搜索后,答案是这样的。
  16. 类的成员都有个默认值,在new一个类对象的时候自动赋值,boolean对应false,数字型的都是0,对象类型的都是null。局部变量运行时被分配在栈中,量大,生命周期短,如果虚拟机给每个局部变量都初始化一下,是一笔很大的开销,但变量不初始化为默认值就使用是不安全的。出于速度和安全性两个方面的综合考虑,解决方案就是虚拟机不初始化,但要求编写者一定要在使用前给变量赋值。
  17. 关于jstl的原理。在jstl里面可以根据${object.field}获取一个对象的各种成员变量,我很疑惑,这些变量都是私有的,为什么不是用方法获取。然后我把一个get方法删除之后,程序报错。jstl背后应该调用了get方法。
  18. form表单的提交。在看别人的代码时,总是会看到这么一段,object==null||object.length==0 同时判断空字符串或空,我很疑惑,表单提交的值会为null吗?答案如下:
  19. 如果表单中的input元素有对应的name值,但没有填写,那么获取到的是"",如果没有对应的name,即在request域中不对该对象的引用,则为null;
  20. 在该博客https://www.cnblogs.com/qiuting/p/5373571.html 里面总结的很好,现摘录如下:

  1. 关于jdbc的连接。
  2. tomcat缓存或者project缓存。在写代码时候,明明已经更改了,但页面显示还是老样子。找了半天,是缓存的问题。servers-右键-clean;project-clean;
  3. 由于表单传递的全部是字符串。需要使用Integer.parseInt() 来进行解析,在解析之前,要判断空字符串和null,否则会出现java.lang.NumberFormatException.for input String ""
  4. 关于eclipse的警告。有时候警告不注意也会出现异常。所以也要关注警告。
  5. request.setCharacterEncoding( ).首先,request和response是两个容器,里面携带了各种参数。然后获取这些参数,是需要以一定的格式解析的。这个博客总结的很好,http://blog.csdn.net/u013030276/article/details/50420024
    摘录如下:

一、request.setCharacterEncoding():用来确保发往服务器的参数以汉字的编码来提取,设置从request中取得的值或从数据库中取出的值。
指定后可以通过request.getParameter()获取自己想要的字符串,如果没有提前指定,则会按照服务器端默认的“iso-8859-1”来进行编码;该方法只对post请求有效,对get请求无效;对于get请求,应该在server.xml中指定:URIEncoding=utf-8;
注意:在执行request.setCharacterEncoding()之前不能执行request.getParameter()方法;
原因:应该是在执行第一个getParameter()的时候,java将会按照编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。而对于GET方法提交表单是,提交的内容在URL中,一开始就已经按照编码分析提交内容,setCharacterEncoding()自然就无效。
二、response.setCharacterEncoding():设置HTTP 响应的编码,用于设置服务器给客户端的数据的编码
一般不会用这个方法来设置响应编码,
一般使用response.setContentType()方法来设置HTTP 响应的编码,同时指定了浏览器显示的编码;
因为他在执行该方法通知服务器端以指定编码进行编码后,会自动调用response.setCharacterEncoding()方法来通知浏览器以指定编码来解码;使用此方法要在response.getWriter()执行之前或response提交之前;

自己动手写crud+分页 出现问题相关推荐

  1. Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例

    戳蓝字"CSDN云计算"关注我们哦! 简书ID:@我没有三颗心脏   github:wmyskxz   欢迎关注公众微信号:wmyskxz 前言:由于之前没有接触过Hibernat ...

  2. 【高校宿舍管理系统】第二章 整合Mybatis和写CRUD的基本流程以及使用代码生成器生成Mapper等相关代码

    第二章 整合Mybatis和写CRUD的基本流程以及使用代码生成器生成Mapper等相关代码 提示:本博客个为人独立博客,不是权威,仅供参考!所有思路只做交流之用!如有不足之处,望各位在评论区友善指正 ...

  3. 《自己动手写操作系统》读书笔记——初识保护模式

    <自己动手写操作系统>读书笔记--初识保护模式 http://www.cnblogs.com/pang123hui/archive/2010/11/27/2309930.html 书本第三 ...

  4. 自己动手写三层代码生成器学习总结

    自己动手写三层代码生成器学习总结 https://cloud.tencent.com/developer/article/1190165 https://www.cnblogs.com/jonnysu ...

  5. 全面剖析《自己动手写操作系统》第四章---加载Loader.bin

    全面剖析<自己动手写操作系统>第四章--FAT12文件系统    http://blog.csdn.net/zgh1988/article/details/7284834 1.突破512字 ...

  6. Spring Data JDBC自动生成的增删改查CRUD分页、排序SQL语句非常简洁没有多余的SQL

    通过在application.properties文件中设置记录SQL日志 logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG ...

  7. 自己动手写一个简单的bootloader

    自己动手写一个简单的bootloader 15年10月31日19:44:27 (一) start.S 写这一段代码前,先要清楚bootloader开始的时候都做什么了.无非就是硬件的初始化,我们想要写 ...

  8. 深入理解JDK动态代理原理,使用javassist动手写一个动态代理框架

    文章目录 系列文章索引 一.动手实现一个动态代理框架 1.初识javassist 2.使用javassist实现一个动态代理框架 二.JDK动态代理 1.编码实现 2.基本原理 (1)getProxy ...

  9. java 手编线程池_死磕 java线程系列之自己动手写一个线程池

    欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. (手机横屏看源码更方便) 问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写 ...

  10. CowNew开源团队新书《自己动手写开发工具》隆重上市

    <自己动手写开发工具--基于Eclipse的工具开发> 本书系统地介绍了SWT.Draw2D.GEF.JET等与Eclipse插件开发相关的基础知识,并且以实际的开发案例来演示这些知识的实 ...

最新文章

  1. layer.js弹窗组件layer.prompt无法调用解决
  2. explain ref_你必须要掌握的MySQL命令:explain
  3. 计算机视觉与深度学习 | 城市拒止环境下的视觉SLAM
  4. JDBC实现图书管理小案例
  5. 图 邻接表 建立 深度遍历 广度遍历
  6. 所有的物理引擎演示程序
  7. AndroidStudio_安卓原生开发_AsyncTask异步处理使用_AsyncTaskLoader---Android原生开发工作笔记139
  8. Linux内核用户权限的实现,Linux内核设计与实现(6)---系统调用
  9. 用户界面设计参考 (ZT)
  10. mysql基础之数据库变量(参数)管理
  11. XDUOJ 1125 Judgement of Orz Pandas
  12. UML图各类符号含义
  13. 使用 lanmps 环境套件安装设置新站点 案例
  14. mongodb的用法
  15. 统计计算函数练pandas
  16. MVPArms官方快速组件化方案开源,Android快速开发之架构组件
  17. 亚泰盛世携NB物理实验邀你莅临第66届中国教育装备展
  18. 团队作业 - 项目验收与总结博客
  19. 常州2021高考成绩查询,2021江苏常州高考选课分班情况(数据)
  20. java中获取中文拼音(全拼)和中文首字母

热门文章

  1. oracle substr函数
  2. Nginx负载均衡与反向代理——基础功能
  3. 浏览器插件之ActiveX开发(三)
  4. 新年祝福短信|2011
  5. 亚特兰大,I got you!
  6. 深信服AC本地用户密码认证配置
  7. java打印菱形图案
  8. H3C 初级综合实验
  9. 华为MUX VLAN原理和实验
  10. Leetcode 刷题笔记(二) —— 数组类型解题方法二:双指针法