java学习小心得(SSH)

来源:互联网 发布:c语言定义变量 编辑:程序博客网 时间:2024/05/16 04:41

1.java中dao层和service层的区别是什么?

首先解释面上意思,service是业务层,dao是数据访问层。呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用,其他有意义的事没做,也不明白有这个有什么用,参加工作久了以后就会知道,业务才是工作中的重中之重。我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码,不会影响我其他层代码,如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据库,这样写是不对的,因为在业务层中是不应该含有具体对象,最多只能有引用,如果有具体对象存在,就耦合了。当那个对象不存在,我还要修改业务的代码,这不符合逻辑。好比主板上内存坏了,我换内存,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。这就是MVC的意义。接下来说你感觉service的意义,其实因为你现在做东西分层次不是那么严格,在一个你们做东西业务本身也少,举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。 再有不明白的追问,这是经验问题,呵呵,其实以后你就会懂。只是刚开始写的代码都是有个请求,我就去数据库取,业务几乎没有。

虽然每分,但还是把自己的理解给LZ说说。怎么说呢,我不是理论帝。所以我讲讲自己的理解比说你现在用的是SSH框架,做一个用户模块:1、假设现在你做这个功能会用到user表和权限表,那么你前台的页面访问action,action再去调用用户模块service,用户模块service判断你是操作user表还是权限表,如果你操作的是user表则service的实现类就去调用userDAO。如果是操作的是权限表则调用权限的DAO2、也就是说DAO一定是和数据库的每张表一一对应,而service则不是。明白的没?其实你一个项目一个service和一个DAO其实也一样可以操作数据库,只不过那要是表非常多,出问题了,那找起来多麻烦,而且太乱了3、好处就是你的整个项目非常系统化,和数据库的表能一致,而且功能模块化,这样以后维护或者改错比较容易,性能也高一些

2.JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

首先这是现在最基本的分层方式,结合了SSH架构。modle层就是对应的数据库表的实体类。Dao层是使用了Hibernate连接数据库、操作数据库(增删改查)。Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断)。Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。以上的Hibernate,Struts,都需要注入到Spring的配置文件中,Spring把这些联系起来,成为一个整体。
一般java都是三层架构 数据访问层(dao) 业务逻辑层(biz 或者services) 界面层(ui)action 是业务层的一部分,是一个管理器 (总开关)(作用是取掉转)(取出前台界面的数据,调用biz方法,转发到下一个action或者页面)   模型成(model)一般是实体对象(把现实的的事物变成java中的对象)作用是一暂时存储数据方便持久化(存入数据库或者写入文件)而是 作为一个包裹封装一些数据来在不同的层以及各种java对象中使用 dao是数据访问层  就是用来访问数据库实现数据的持久化(把内存中的数据永久保存到硬盘中3.J2EE开发建类dao,modal,service,impl,util包通常是什么意思,什么功能的类放在其下
DAO : data access object 与数据库交互的相关JAVA代码写在这,比如对DATABASE的增删改查;model:存放模型,通常是实体BEAN,也就是你业务建模分析出来的那些actor等实物类;service:是后来网上大多数人经验总结出来,从而增加了这么一个层次,主要是为了降低耦合,面向接口、组件编程,具体的服务类,能产生实际效果和影响的类放于此;util:utility是存放工具类相关的JAVA代码的,比如采用filter过滤器,还有一些其他的相关小工具杂类亦存放于此。
dao 与数据库的操作,增删改查等方法modal 一般都是javabean对象,例如与数据库的某个表相关联。service 供外部调用,等于对dao,modal等进行了包装。impl 定义的接口util 通常都是工具类,如字符串处理、日期处理等4.java中import的功能是什么?
 
导入包,具体地说,应是导入要用到的包中的类接口。例如:import java.sql.DriverManager;//导入DriverManager类      import java.sql.Connection;//导入Connection接口      import java.sql.Statement;//导入Statement接口
导入包中的类,简单点就是让编译器知道当遇到使用的类在当前目录下没有的时候,可以去那个地方找
javax:轻量级包。轻量级包主要特点是具有平台无关性,真正实现“Java程序一次编译,到处执行”优势。
javax:以javax开头的意思是,后面导入的包,是标准扩展库集。由它导入的包能在多个java版本中使用

5.for(object obj :args)

等同于 (1)假设args是一个数组 for(int i=0; i<args.length; i++){ Object obj = args[i]; } (2)假设args是一个List for(int i=0; i<args.size(); i++){ Object obj = args.get(i); } 

6.list 和map的区别

list是对象集合,允许对象重复。map是键值对的集合,不允许key重复。
list是存储单列数据的集合,map是存储键和值这样的双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。

List接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。
Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象所对应的值对象时就有问题了,可能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。当然在使用过程中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求。你可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道你得到的到底是那一个键所对应的值对象)。Map有两种比较常用的实现:HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子Map。键和值的关联很简单,用pub(Object key,Object value)方法即可将一个键与一个值对象相关联。用get(Object key)可得到与此key对象所对应的值对象。

7.Object转化map类型
如果你知道当前的Object 是Map类型可以强制转换Map map = (Map)object;
8.静态方法

静态的方法就是不需要将类实例化就可以直接使用类名调用到方法或者属性。

而非静态的就需要将此类实例化之后才能够调用到方法或者属性。

静态的方法就是不需要将类实例化就可以直接使用类名调用到方法或者属性。而非静态的就需要将此类实例化之后才能够调用到方法或者属性。



原创粉丝点击