Java Web开发过程容易出错的细节点

1.在web开发中加入.jar包,这些包实际会在编译时创建为单独的类,
这些类名包含了包名,所以它是指代了唯一的一个类,java开发
时,必须全部把类放在包下。如以下代码:
 Class.forName("org.hsqldb.jdbc.JDBCDriver");
            connection=DriverManager.getConnection
                    ("jdbc:hsqldb:hsql://localhost:9001/user","SA","");
JVM会去找这个类,用它的完整类名去搜索。
2.JDBC是一个提供给用户的对于不同数据库访问的统一接口,
如都是通过Class.forName加载数据库驱动+Connection数据库连接+Statement类执行
sql语句。在程序中访问数据库时只需要下载相应的数据库驱动程序,然后导入lib目录即可。
3.Factory类通常用作创建实例,一般会使用反射(实现方式很多
不局限于反射)。
4.T指的是由此 Class 对象建模的类的类型。例如,String.class 的类型是 Class<String>。如果将被建模的类未知,则使用 Class<?>。
 Class.forName() 被定义为返 回 Class<?>(单独的Class 被认为是Class<?>)。另一方面,类常量 X.class 
被定义为具有类型 Class<X>,所 以 String.class 是Class<String> 类型的。
java中Class<T>的完整定义为:
public final class Class<T> extends Object implements Serializable,
                       GenericDeclaration, Type, AnnotatedElement
一切皆对象,Class<>是类类型。每个类有一个静态变量class即
Class<class>类型,每个对象可以通过getClass()方法获得这个Class<class>对象,
这个对象在JVM中只有一个。
在运行期间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象
是否已被加载。如果没有被加载,
JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,
就可以用它来产生该类型的所有对象 
Class<具体某个类>与Class(实际是Class<capture<?>>)不一样
前者newInstance方法返回具体类对象,后者返回Object.
T必须要声明为泛型才能使用,因为T代表了一个类型。?则可以直接使用
因为它就是一个无限制匹配符。
5.首先,c3p0是一种jdbc数据库连接池。那么为什么使用数据库连接池呢?因为数据库连接
是一种关键的、有限的、昂贵的资源。传统的模式
(如传统的java web项目中,servlet的beans中建立数据库连接),
每次连接都需要验证用户,消耗了大量的时间和资源。而数据库连接池在
系统初始化的时候,将数据库连接作为对象存储在内存中,
当用户需要访问数据库时,并非建立一个新的连接,
而是从连接池中取出一个已经建立的空闲连接对象。
使用完毕后,用户不关闭连接,而是将数据库连接对象放回连
接池中。数据库连接池管理数据连接的建立、断开,同时监视
数据库连接数量和使用情况。使用数据库连接池会显著提高整
个应用程序的伸缩性(大大提高了连接数量)和健壮性(能够
应对大量用户频繁连接数据库,减少系统资源的消耗),提高
应用程序的性能指标。
配置文件要求: 
文件名称:必须叫c3p0-config.xml(格式参考https://blog.csdn.net/chunxiaqiudong5/article/details/52905961)
文件位置:必须在src下
6.参考源码,从数据层看起
7.能用jsp直接显示就直接调用jsp,如果是需要操作数据库,
则用servlet。jsp一般用于获得servlet提供的数据然后显示,
servlet一般用于创造数据供jsp利用。
8.两个相似实体最好分开为两个类,不要用一个标识成员变量
去标识它以达到区分的目的,因为不同实体代表的现实对象不同,
它所具有的性质也不同。比如购物车和订单,一个是在线访问
动态生成删除,而一个是要写进数据库的,购物车可以直接
放到session里面,而订单不能。
9.类尽量单一功能性,比如一个类只有操作数据库且针对现实
世界中的某一个实体,不做其他任何事情,这样程序易读且方
便开发。
10.降低耦合度 可以减少重复代码,方便扩展修改。
11.String类重新实现了equals方法而StringBuffer并没有
所以StringBuffer类用equals相当于用==。
12.</servlet-class>是类完整名(包括包名,这能够唯一
识别一个类)
13.https://www.cnblogs.com/pangguoming/p/6390732.html
el表达式,param是对应取getParameter函数的值而不是getAttribute函数值
14.web上传文件https://blog.csdn.net/wenzhihui_2010/article/details/39397837
15.在使用PrintWriter类进行输出的时候要注意编码的问题
如果使用了中文且没设置浏览器用UTF-8解析和用UTF-8编码,
浏览器不能正确解析返回的数据,相关教程
https://blog.csdn.net/molu_chase/article/details/52297587
16.用html中的checkbox时在服务端用getParameterValues函数
获取被选中的box,返回为String[],里面存储选中checkBox的
value属性。
17使用alert的时候不要用\n不然浏览器无法解析,浏览器
开发者工具上会报语法错误
18.不要再idea的web下面放manager文件夹
19.当发现页面有问题时(如乱码)注意刷新,因为浏览器有
历史记录
20.数据库中不能创建关键词的名字的表,如order,table
21.java ArrayList 是线程不安全函数,优点是高效
https://blog.csdn.net/jiaochunyu1992/article/details/51177373
不要既在用迭代器遍历又在删除:https://www.cnblogs.com/dolphin0520/p/3933551.html
只有一种情况可以就是删除后break跳出迭代,迭代器在来不及
检查,程序就结束了,而且迭代器初始化时expectedModCount=modCount;
所以多次在上述方法(删除就跳出迭代的方法)中使用同一个list的remove方法
也是可行的。
22.hsqldb有一些约束条件,看SQLException时注意
23.sql表增加非空列时必须表为空
24.html或者jsp中注意不要在写url的时候换行
25.artifacts目录是项目打包文件夹,里面是项目所有资源

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值