Core Java总结(二)

来源:互联网 发布:进销存数据库表结构 编辑:程序博客网 时间:2024/06/06 16:50

JSP的四种范围
page
是代表与一个页面相关的对象和属性。
request
是代表与web客户机发出的一个请求相关的对西哪个和属性,一个请求可能跨越多个页面。
session
是代表与用于某个web客户机的一个用户体验相关的对象和属性。一个web会话可以跨越多个客户请求。
application
代表与整个web应用程序相关的对象和属性。跨越整个web应用程序,包括多个页面,请求和会话。

过滤器的用途有哪些
过滤器主要做拦截作用,所以可以做很多事情,比如过滤一些不合法的词汇、验证是否正常登陆、字符编码的转换。

过滤器的用法?
实现Filter接口,覆盖init(FilterConfig config)doFilter(ServletRequest request,ServletResponse response,FilterChain chain)destroy()方法。

JSP中如何使用JavaBeans?
JSP
有对于JavaBean操作的标准动作,useBeansetPropertygetProperty

JSP
Servlet中的请求转发分别如何来实现?
JSP
中可以使用forward动作来实现。同时JSPServlet都可以使用request.getRequestDispatcher(path).forward(req,res);来进行请求转发。

web.xml的作用
用于配置web应用的信息,如servlet,filter等。
JavaEE:Base:
J2EE是技术还是平台还是框架
J2EE
本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE
也是一个框架,包括JDBCJNDIRMIJMSEJBJTA等技术。

请解释一下以下J2EE名词:WEB容器、EJB容器、JNDIJMSJTAJAFRMI/IIOP
WEB
容器:给处于其中的应用程序组件(JSPServlet)提供一个环境,使JSPServlet直接与容器中的环境变量接口交互,不必关注其它系统问题。该容器提供的接口严格遵守J2EE规范中的WebApplication标准。遵守以上标准的WEB服务器就叫做J2EEWEB容器。
EJB
容器:EnterpriseJavaBean容器。更具有行业领域特色。提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。
JNDI
:(Java Naming & Directory InterfaceJava命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在某上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
JMS
:(Java Message ServiceJava消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
JTA
:(Java Transaction APIJava事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
JAF
:(Java Action FrameworkJava安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
RMI/IIOP
Remote Method Invocation/internet对象请求中介协议)他们主要用于通过远程调用服务。
Struts:
什么是STRUTS
struts
本意为结构,在J2EE中为一个WEB框架,采用了JSP/Servlet/JavaBean技术。可以开发出基于MVC模式的应用架构。

STRUTS的入口类?
ActionServlet
,所有对Action的请求都经由该类转发处理。
Hibernate:
什么是ORM
Object Relational Mapping
。是一种为了解决面向对象与面向关系数据库存在的互不匹配的现象的技术。通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。

HibernateJDBC的优点?
解决了对象模型与关系模型之间的阻抗不匹配问题。Hibernate灵活且运用简单,大量使用配置文件和映射文件来解决类与表或视图的对应关系,便于维护。完善的事务处理和利用缓存以性能。

Hibernate有哪5个核心接口
Configuration:
配置Hibernate,根据其启动hibernate,创建SessionFaction对象。
SessionFactory:
初始化Hibernate,充当数据存储源的代理,创建session对象,SessionFactiory是线程安全的,同一个实例可以被应用的多个线程共享。
Session:
负责保存、更新、删除、加载和查询对象,线程不安全,需要避免多个线程共享同一个session
Transaction:
管理事务。
Query
Criteria:执行数据库的查询。

关于Hibernate,配置文件呈现一对多,多对多的标签是什么?Hibernate的二级缓存是什么?Hibernate是如何处理事务的?
一对多的标签是<one-to-many>,多对多的标签是<many-to-many>SessionFactory的缓存是Hibernate的二级缓存。Hibernate的事务实际上是底层的JDBC Transaction的封装或者是JTA Transaction的封装。默认情况下使用JDBC Transaction

Hibernate映射文件中属性与表中列的关系,如属性String对应的表中的类型为?
字符型,如char,varchar等或大文本text

Hibernate分页实现代码
Query query = session.createQuery(“from Emp”);
query.setFirstResult(first);
query.setMaxResults(pageSize);
Collection emps = query.list();


Session
中的loadget的区别
当给定的对象标识不存在时,get返回null,而load则抛出一个异常。
Spring:
简述Spring框架。
Spring
框架是一个分层架构,由七个定义良好的模块组成,Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式。组成Spring框架的每个模块都可以单独存在,或者与其他一个或多个模块联合实现。
Spring Core
Spring ContextSpring AOPSpring DAOSpring ORMSpring WebSpring MVC
EJB:
EJB是基于哪些技术实现的,SessionBeanEntityBean的区别
EJB包括SessionBean,EntityBean,MessageDrivenBean,基于JNDIRMIJTA等技术实现。SessionBeanJ2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库,调用其他EJB组件。EntityBean用来临时性存储数据。

EJBJavaBean的区别
JavaBean是可复用的组件,对JavaBean并没有严格的规范,任何一个java类都可以是一个Bean,但由于通常JavaBean是被容器所创建,所以JavaBean应具有一个无参的构造器,并实现Serializable接口用于持久化,JavaBean是不能被跨进程访问的。EJB是基于javaRMI技术,所以EJB可以被远程访问(跨进程,跨计算机)。但EJB必须被部署在支持EJB的容器中(如WebspereWebLogic等),EJB客户不直接访问EJB组件,而是通过容器访问。

说明EJB中的SessionBeanEntityBean的生命周期,以及如何进行事务管理
SessionBeanStatelessSessionBean的生命周期由容器决定,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例给客户机调用,而是找一个现有的实例提供给客户机。客户机第一次调用一个StatefulSessionBean时,容器会立刻在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用StatefulSessionBean的方法时容器会把调用分派到与此客户机相关联的Bean实例。
EntityBeanEntityBean能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,EntityBean就一直存活。而不按照应用程序或者服务进程来结束生命。EntityBean生命周期能够被容器或Bean自己管理。
EJB通过以下技术管理事务:OTSObject Transaction Service,JTSJava Transaction Service,JTAJava Transaction API

EJB的角色和三个对象
一个完整的基于EJB的分布式计算结构由六个角色组成,每个角色所做的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider)、应用组合者(Application Assembler)、部署者(Deployer)、EJB服务提供者(EJB ServerProvider)、EJB容器提供者(EJB Container Provider)、系统管理员(System Administrator)。三个对象是RemoteLocal)接口、HomeLocalHome)接口、Bean类。

EJB容器提供的服务
主要提供生命周期管理、代码产生、持续性管理、安全、事务管理、锁和并发管理等服务。

EJB禁止哪些操作
1.
不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等)。
2.
不能操作awt
3.
不能实现服务器功能。
4.
不能对静态属性存取。
5.
不能使用IO操作直接存取文件系统。
6.
不能加载本地库。
7.
不能将this作为变量和返回。
8.
不能循环调用。

remote接口和home接口主要作用
remote
接口定义了业务方法,用于EJB客户端调用业务方法。home接口是EJB工厂用于创建和移除查找EJB实例。

bean实例的生命周期
对于Stateless Session BeanEntity BeanMessage Driven Bean一般存在缓冲池管理,而对于Entity BeanStatefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJBObjectcreate)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。

EJB的激活机制
Stateful Session Bean为例:其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRUNRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJBObject发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的EJBActiveEJBPassivate方法。

EJB的几种类型
Session Bean,Entity Bean
Message Driven BeanSession Bean又可分为Stateless Session BeanStateful Session BeanEntity Bean又可分为Bean管理持续性(BMP)和容器管理的持续性(CMP)。

客服端调用EJB对象的几个基本步骤
设置JNDI服务工厂以及JNDI服务地址系统属性,查找Home接口,从Home接口调用create方法创建Remote接口,通过Remote接口调用其业务方法。
RDBMS&SQL:
3
张表student学生表(学号,姓名,性别,年龄,组织部门)、course课程表(编号,课程名称)、sc选课表(学号,课程编号,成绩)。
写一个SQL语句,查询选修了“计算机原理”的学生学号和姓名。
写一个SQL语句,查询“周星驰”同学选修的课程名称。
写一个SQL语句,查询选修了5门课程的学生学号和姓名。
写一个SQL语句,查询选修了所有课程的学生学号和姓名。
1SELECT sno,sname FROM student stu WHERE stu.sno IN (SELECT sc.sno FROM sc WHERE sc.cno = (SELECT course.cno FROM course WHERE cname LIKE ‘计算机原理’));
2SELECT cname FROM course cou WHERE cou.cno IN (SELECT sc.cno FROM sc WHERE sc.sno IN (SELECT student.sno FROM student WHERE sname like ‘周星驰’));
3SELECT student.sno,sname FROM student WHERE student.sno IN (SELECT sc.sno FROM sc GROUP BY sc.sno HAVING count(*)=5);
4SELECT student.sno,sname FROM student WHERE student.sno IN (SELECT sc.sno FROM sc GROUP BY sc.sno HAVING count(*)=(SELECT count(*) FROM course));

有一张表EMP,表中字段为(empno,ename,mgr,age,写出语句查询所有雇员年龄大于其领导的人员名单。
SELECT worker.ename FROM emp worker WHERE worker.age>(SELECT manager.age FROM emp manager WHERE manager.empno = worker.mgr);


有两张表分别代表的省和市的信息,其中省信息表中字段为(stateno,statename,市信息表中字段为(cityno,cityname,stateno),省信息表中有广东,江苏,辽宁,黑龙江,市信息表中有上海,广州,北京,南京。现在需要查询出所有市信息及相关省信息,请写出查询语句。
SELECT cityname,cityno,s.stateno,s.statename FROM city c,state s WHERE c.stateno = s.stateno(+);

Base Web:Javascript
一个动态的下拉列表,如何在每一次点击后显示出所有被选中的值?
<script. type="text/javascript">

function choose(sel){


alert(sel.options[sel.selectedIndex].innerHTML);

     }
</script>
<select nchange=”choose(this)”>

<option>1</option>

<option>2</option>

<option>3</option>
</select>

封装一个类,包含属性namesex,在设置其值后再取出

function myObject(){

var innerClass = new Object();
innerClass.name='undefined';
innerClass.sex='undefined';
innerClass.setName = function (n){

name = n;

}
innerClass.setSex = function (s){
sex = s;
}
innerClass.getName = function (){
return name;
}
innerClass.getSex = function (){
return sex;
}
return innerClass;
}

原创粉丝点击