自定义异常使用方法:定义异常
package com.hrborse.application.exception; /** * 自定义登录异常类 * @author 王庆 * */ public class UserLoginException extends Exception{ private static final long serialVersionUID = 1L; public UserLoginException() { } public UserLoginException(String message) { super(message); } public UserLoginException(Throwable cause) { super(cause); } public UserLoginException(String message, Throwable cause) { super(message, cause); } }
异常在service层抛出就好,如检测用户名账号密码,首先根据账号查找(这个按照索引查找效率更好,不可用用户名和密码同时做条件查询),如果查出的为空说明用户名不存在
则抛出异常,异常信息注明用户名不存在,否则在拿得到的对象获取密码属性与入参密码对比,成功则正确登录,失败抛出用户名密码错误异常.在Action捕捉到服务层的异常后传递到前台显示.
最近发现工程越写越烦,之前没有做好架构的弊端在此显现了,维护起来相当困难,OH MY GOD 为何要我这个未毕业的实习生承担几乎全部的后台任务。我只能用空间换时间了,话说这也是一种方法,说到这正好把那个单例模式的两个方法写下:
饿汉式,空间换时间
public Class A{
private A a=new A();
private A(){
}
public static A getA(){
return a;
}
}
}
懒汉式 空间换时间
public Class A{
private A a=null;
private A(){
}
public static A getA(){
if(a==null){
a=new A();
}
return a;
}
}
}所谓懒汉就是说用你的时候才创建你这个对象,跟hibernate里面对象的延迟加载时一个道理的说.
再记录下jdbc的基本步骤,虽然这都是基础,但也要牢牢掌握 加载驱动 class.FRONAME("jar包" ) 获取链接,创建preparestatemented 执行语句,获得结果集,处理结果集,关闭结果集,关闭preparestatemented,关闭连接。
还有个好东西就是连接池 Threadlocal 其实这个是线程局部变量实现的一种特殊方法,java没有在语法上使用线程局部变量却弄了这个方法,好吧,这个东西和异步sychronized的区别就是它也是用空间换的时间,就是说它管理了一些变量,对于线程来说如果要使用这变量就给它分配一个副本,这样就是传说中的"共产"人人都有资源,所以不会有"阶级斗争"
线程安全就得到了保障,这里理解不知道到不到位,想想这程序的思想本身就是模拟社会的,怪怪,果然妙哉.