1、1、简述 J2EE 的四层模型。 运行在客户端机器上的客户层组件 运行在 J2EE 服务器上的 Web 层组件 运行在 J2EE 服务器上的业务逻辑层组件 运行在 EIS 服务器上的企业信息系统层软件 2、什么是对象持久化? 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、 XML数据文件中等等。 3、简述一下 ORMAPPING,为什么我们使用它? ORM(Object Relational Mapping)是一种为了 解决面向对象与关系型数据库存在的互不匹配的现象的技术。简单说: ORM
2、是通过使用描述对象和数据库之间映射的元数据,将 Java 程序中的对象自动持久化到关系数据中。本质上就是将数据从一种形式转换到另外一种形式。 原因:用它来架起对象和关系型数据库的桥梁, 可解决对象层次的映射、对象关系的映射以及对象的持久化问题。 4、简述一下如何使用 Hibernate 实现对象持久化的过程(可画图或用伪码描述) STEP 1:创建 Configuration 对象。在这一步中主要为了进行配置文件的装载操作,读取所有的配置文件并进行解析 STEP 2: 创建 SessionFactory 对象。通过创建好的 Configuration 对象可以创建一个 sessionFacto
3、ry 对象的实例,同时是生成 Session 对象实例的工厂,他在整个应用中应该是唯一的。 STEP 3:创建 Session 对象。 Session 对象类似于数据库的连接对象,可以理解为与数据库建立的一个连接,但是他的功能要比 JDBC 中的 Connection 对象丰富很多。 STEP 4:开始一个事务。在 Java 中定义一个事务操作的开始,这是使用 Hibernate进行持久化操作必不可少 的步骤 STEP 5:进行持久化操作。在这个步骤中可以读取或者保存 Java 对象。 STEP 6:结束事务。在操作完成之后还要进行显式的结束事务的操作。 STEP 7:关闭 Session。类
4、似于释放数据库的连接。 5、为什么要实现序列化? 1、序列化以某种存储形式使自定义对象持久化 2、序列化将对象转换为可传输方式从一个地方传递到另一个地方 3、序列化使程序更具维护性 6、比较一下 sessionFactory 中的 opensession()和 getcurrentsession()方法。 1、 getCurrentSession 创建的 session 会和绑定到当前线程 ,而 openSession 不会。 2 、 getCurrentSession 创建的线程会在事务回滚或事物提交后自动关闭 ,而openSession 必须手动关闭 7、比较一下 session 中的 l
5、oad()和 get()方法,以及如何保证每次都是从数据库读取而不是在缓存中读? load()和 get()方法均可以根据指定的实体类和 id 从数据库读取记录,并返回与之对应的实体对象。 其区别在于:如果未能发现符合条件的记录, get 方法返回 null,而 load 方法会抛出 一个 ObjectNotFoundException。 Load方法可返回实体的代理类实例,而 get 方法永远直接返回实体类。 load 方法可以充分利用内部缓存和二级缓存中的现有数据,而 get 方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用 SQL完成数据读取。 8、 Ac
6、tion 接受用户参数输入,主要有哪几种方式?我们常用的是哪一种? 1.Action 属性接收参数; 2 Domain modal(域模型 )接收参数; 3.Modal driven 接收参数。 常用第一种跟第二种 9、在 struts 中实现一个 action 有哪几种方式?最常用的是哪种? 1定义一个普通的类,类中只要有一个 public String execute()方法且返回一个字符串即可。 2.定义一个类,实现 Action 接口, xwork2.Action 这个包的 3 继承 xwork2.ActionSupport 这个类。 最常用的是第三种 10、在 struts.xml
7、中 Result 的 type 常用的有四种类型 1) dispatcher 2) redirect 3) chain 4) redirectAction 哪 些是服务器跳转?哪些是客户端跳转? dispatcher 和 chain 是服务器端跳转,所以客户端只发起一次请求 redirect 和 redirectAction 是客户端跳转,所以客户端发起两次请求。 11、 j2ee 是技术还是平台还是框架?它主要包含哪些技术,列举并简单描述 2到 3 个技术? J2EE 本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE 也是一个框架,包括 JDBC、 JNDI、 RMI、
8、JMS、 EJB、 JTA 等技术。 JDBC:是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提 供统一访问,它由一组用 Java 语言编写的类和接口组成。 RMI:RMI 协议调用远程对象上的方法。它使用了序列化方式在客户端和服务器端传递数据。 RMI 是一种被 EJB 使用的更底层的协议。 12、 MVC 的各个部分都有哪些技术来实现?如何实现? MVC是 Model View Controller的简写。 “Model“ 代表的是应用的业务逻辑(通过 JavaBean, EJB 组件实现), “View“ 是应用的表示面(由 JSP 页面产生),“Controll
9、er“ 是提供应用的处理过程控制(一般是一个 Servlet),通 过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。 13、什么是 JNDI? JNDI 是 SUN 公司提供的一种标准的 Java 命名系统接口, JNDI 提供统一的客户端 API,通过不同的访问提供者接口 JNDI SPI 的实现,由管理者将 JNDI API 映射为特定的命名服务和目录系统,使得 Java 应用程序可以和这些命名服务和目录服务之间进行交互。 14、举例并简单描述 2 到 3 种动态网页开发技术。 1、 PHP,是英文超文本预处理语言 Hypertext Prepr
10、ocessor 的缩 写。 PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入 HTML 文档的脚本语言,语言的风格有类似于 C 语言,被广泛地运用。 2、 ASP,它是微软公司开发的代替 CGI 脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。 ASP 的网页文件的格式是 .asp,现在常用于各种动态网站中。 15、简单描述浏览器输入 http:/localhost:8088/myFirstweb/Firstservlet访问 web 资源的过程(也就是 servlet 工作的时序图)(提示,解释地址 用端口号和地址访问服务器访问资源)。 1
11、浏览器会将请求打包成 http 请求数据包,发送给 web 服务器, 2 web 服 务 器 中 的 servlet 引 擎 解 析 请 求 并 封 装 为 一 个HttpServletRequest 对 象 ( 包 含 了 请 求 数 据 ), 同 时 创 建 个HttpServletResponse 对象。 3 servlet 调用 servlet 的 service()方法,并将 HttpServletReque,HttpServletResponse 对象作为参数传递给 servlet 实例 4 servlet 可以从 HttpServletRequest 对象中获得请求数据,并处理,
12、当 然, servlet 也可能 要访 问数 据库。 然后 将处理 之后 的结果 放到HttpServletResponse 中。 5 servlet 引擎从 HttpServletResponse 中取数据,并将数据打包成 http数据包发送给浏览器。 16、开发 servlet 服务器程序三种方法。 开发 servlet有三种方法: a,实现 servlet接口 ; b,继承 GenericServet; c,继承 HttpServlet 17、通过 httpservlet 去开发 servlet,需要重写 doGet 和 doPost 方法。这是常用的方式,请简述 Get 与 Post
13、方法的区别。 ( 1) get 是从服务器上获取数据, post 是向服务器传送数据。 在客户端, Get 方式在通过 URL 提交数据,数据在 URL 中可以看到; POST 方式,数据放置在 HTML HEADER 内提交。 ( 2)对于 get 方式,服务器端用 Request.QueryString 获取变量的值,对于 post 方式,服务器端用 Request.Form 获取提交的数据。 ( 3) GET 方式提交的数据最多只能有 1024 字节,而 POST 则没有此限制。 ( 4)安全性问题。使 用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,还是使用 pos
14、t为好。 18、简述 http 返回包中的状态码 200, 302, 404, 500 的意义。 200 请求已成功,请求所希望的响应头或数据体将随此响应返回。 302 请求的资源现在临时从不同的 URI 响应请求。 404 请求失败,请求所希望得到的资源未被在伺服器上发现。 500 伺服器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理 . 19 、简述请求重定向( response.sendRedirect )和请求转发( getRequestDispatcher forward)的区别。 1、 forward()只能将请求转发给同一个 Web 应用中的组件,而 sendRedire
15、ct()方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。 2、 sendRedirect()方法重定向的访问过程结束后,浏览器地址栏中显示的 URL会发生改变,由初始的 URL 地址变成重定向的目标 URL;而调用 forward()方法的请求转发过程结束后,浏览器地址栏保持初始的 URL 地址不变。 3、 forward()方法的调用者与被调 用者之间共享相同的 request对象和 response对象;而 sendRedirect()方法调用者和被调用者使用各自的 request 对象和response 对象,它们属于两个独立的请求和响应过程。 1、 hibe
16、rnate 拒绝连接、服务器崩溃的原因?最少写 5 个 a) 1. db 没有打开 2. 网络连接可能出了问题 3. 连接配置错了 4. 驱动的 driver, url 是否都写对了 5. LIB 下加入相应驱动,数据连接代码是否有误 6. 数据库配置可能有问题 7. 当前联接太多了,服务器都有访问人数限制的 8. 服务器 的相应端口没有开,即它不提供相应的服务 9 hibernate 有哪些缓存,分别怎么使用 ? 10 你对 hibernate 的了解到了一个什么样的程度 ? 11 写出一个 sql 语句体现 hibernate 中一对多的关系 2、 update()和 saveOrUpda
17、te()的区别? a) update() 更新,没有主键会报错的 b) saveOrUpdate() 保存或更新 , 没有主键就执行插入 . c) Update:是对暂态 (transient )或是只是脱管 (detached)的更新操作,对于暂态对象的更新操作通常不产生效果,对于脱 管对象是做了同步的操作,即数据库的数据发生变化并且对象状态也成为托管对象 d) SaveOrUpdate : 也是对暂态 (transient )或是只是脱管(detached)的进行操作,至于是插入还是更新,则要根据 id 中指定的一些具体条件来分析。但是个人认为在明显只会发生插入操作的情况还是尽量避免用 s
18、aveOrUpdate 而直接用 save 即可 ) 3、 hibernate 的三种状态之间如何转换 a) 瞬时态、持久态、脱管态。 b) 瞬 时 对 象 在 内 存孤 立 存 在 ,可 通 过 session 的 save() 或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象。 c) 持久态 : 如果是用 hibernate 的 delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联。 当一个 session 执行 close()或 clear()、 evict()
19、之后,持久对象变成脱管对象, d) 脱管状态 : (1) 当通过 get 或 load 方法得到的 po 对象它们都处于 持久态 ,但如果执行 delete(po)时 (但不能执行事务 ),该 po 状态就处于 脱管态 ,因 delete 而变成游离态可以通过 save 或 saveOrUpdate()变成持久态 (2)当把 session 关闭时, session 缓存中的持久态的 po 对象也变成脱管态 因关闭 session 而变成脱管态的可以通过 lock、 save、 update 变成持久态 4、 工厂模式 a) 就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例
20、化哪一个类的模式 b) 有简单工厂模式,工厂方法模式,抽象工厂模式 5、 抽象类和接口的区别 属性:抽象类可以有普通成员变量,接口不行; 方法:抽 象类有非抽象的方法和构造方法,并且修饰符可以是私 有的,接口只能是抽象的方法,并且修饰符是 public,最后说一句只能 继承一个抽象类,但能实现多个接口。 a) 6、 forward 和 redirect 的区别 ( 1) forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器, URL 地址不 改变, request 的信息不丢失。 ( 2) redirect 就是服务
21、端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地 址, URL 地址改变, request 的信息会丢失。 7、 持久化对象的三种状态,代表含义。 临时状态 刚用 new 语句创建,未被持久化,不处于 session的缓存中。 持久化状态 已经被持久化,处于 session 的缓存中。 游离态 已经被持久化,但不处于 session 的缓存中。 a) 8、 页面之间的值传递: a) 使用 QueryString b) 使用 Session 变量 c) 使用 Application 变量 9、 Struts 框架的数据验证可分为几种类型? a) 表单验证(由 ActionForm Bean
22、 处理):如果用户没有在表单中输入姓名,就提 交表单,将生成表单验证错误 b) 业务逻辑验证(由 Action 处理):如果用户在表单中输入的姓名为“ Monster”,按照本应用的业务规则,不允许向“ Monster”打招呼,因此将生成业务逻辑错误 10、 写一个 Singleton 模式的例子 public class Singleton private Singleton() /在自己内部定义自己一个实例,是不是很奇怪? /注意这是 private 只供内部调用 private static Singleton instance = new Singleton(); /这里提供了一个供外
23、部访问本 class 的静态方法,可以直接访问 public static Singleton getInstance() return instance; 11、 谈谈你 mvc 的理解 MVC 是一种 设计模式 ,它强制的将应用程序的输入、处 理、和输出分开。 使用了 MVC 的应用程序被分为 3 个核心部件 :试图 (View)、模型(Model)、控制器 (Controller)。 首先视图接受用户输入请求,然后将请求传递给控制器,控制器再调用某个模型来处理用户的请求,在控制器的控制下,再将处理后的结果交给某个视图进行格式化输出给用户。 MVC 不仅实现了功能模块和显示模块的分离,同时
24、它还提高了系统的可维护性、 可扩展性 和组件的可复用性,是一个优秀的创建软件的途径。 12、 项目中为什么使用 SSH 1、使用 Struts: 因为 Struts 是基于 MVC 模式的,很好的将应用程序进行了分层,使开发者更关注与业务逻辑的实现。并且 Struts 有着丰富的 taglib,如果能够灵活运用,则能大大的提高开发效率。 2、使用 Hibernate: 因为 Hibernate 为 Java 应用提供了一个易用的、高效率的对象关系映射框架。 Hibernate 是一个轻量级的持久性框架、功能丰富。 3、使用 Spring: 因为 Spring 基于 IOC( inversion
25、 of control)和 AOP构架多层 j2ee 系统的框架,但它不强迫你必须在每一层中必须使用 Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块。采用 IOC使得可以很容易的实现 bean 的装配,提供了简洁的 AOP,并据此实现了事务管理( Transcation Management),等等。 13、 action 是单实例还是多实例,为什么? a) action 是单实例的。当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的 action 类对象。 b) 因为当服务器第一次加载 struts 的配置文件的时候 ,创建了一个Action 后 ,
26、每发送一个请求 ,服务器都会先去检索相应的范围内(request,session)是否存在 c) 这样一个 action 实例 ,如果存在 ,则使用这个实例 ,如果不存在 ,则创建一个 action 实例。 14、 Hibernate 与 jdbc 的联系 a) 1、 Hibernate 是 JDBC 的轻量级的对象封装,它是一个独立的对象持久层框架。 Hibernate 可以用在任何 JDBC 可以使用的场合,从某种意义上来说, Hibernate 在任何场合下取代 JDBC. b) 2、 Hibernate 是一个和 JDBC 密切关联的框架,所以Hibernate 的兼容性和 JDBC
27、驱动,和数据库都有一定的关系,但是和使用它的 Java 程序。 c) 3、 Hibernate 是做为 JDBC 的替代者出现的,不能用来直接和 Entity Bean 做对比。 15、 一般用 spring 做什么 a) Spring 是一个解决了许多在 J2EE 开发中常见的问题的强大框架。 Spring 提供了管理 业务对象 的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。 Spring 的架构基础是基于使用JavaBean 属性的 Inversion of Control 容器 。 Spring 在使用 IoC 容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的 JDBC框架,极大的改进了效率并且减少了可能的错误。 Spring 的数据访问架构还集成了 Hibernate 和其 他 O/R mapping 解决方案。 Spring 还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如 JTA或者 JDBC 事务提供一个一致的编程模型。 Spring 提供了一个用标准Java 语言编写的 AOP 框架,它给 POJOs 提供了声明式的事务管理和其他企业事务
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。