oracle和中级考试答案 下载本文

一、填空

1. JSP的注释标签:<%-- --%>

2.Servlet在容器中经历的阶段,按顺序为:加载、初始化、服务、销毁、卸载

3. JDBC中,用于表示数据库连接的对象是:Connection

4.Page指示符的language属性的作用是:定义JSP页面中使用的脚本语言 5.在MVC设计模式中,JavaBean的作用是:业务数据的封装

6.在oracle中pagesize表示:每页显示多少条数据

7. 在oracle中turnc(23.945,-1)的结果为 :20 8. 在oracle中 同义词用synonym表示

9. 在oracle中获得距离指定星期的最近日期用 next_day 表示

10. 在oracle中

1.谈谈页面间的参数传递有哪些方式 ?

A、通过作用域对象session、request 的setAttribute()和getAttribute()方法进行参数传递。 B、

C、request.gerRequestDispatcher(“1.jsp?name=XX”).forward(request,response);

D、

2.jsp有哪些内置对象?

pageContex,request,session,application,response,out,exception,config,page,

3.编写一个servlet的步骤。

1)新建一个类继承于HttpServlet 2) 重写其中的doGet和doPost方法

3)完成servlet的注册。在web.xml中加入标记

4.请求转发和重定向的区别。 1) 内部转发客户端向服务器发起一次请求,重定向客户端向服务器发出两次请求 2) 内部转发由request对象发起,重定向是response发起的 3) 内部转发不会引起地址栏的变化,而重定向会导致地址栏变化

5.JSP中动态包含和静态包含的区别。 静态包含:

(1)<%@include file=”test.jsp”%> (2)包含的是源代码

(3)只产生一个servlet和class文件

(4)同一个request (5)常用 动态包含

(1) (2)引用包含

(3)产生多个.class文件

(4)不同的request,在request中可以去到包含它的界面的参数 (5)不常用

6.在jsp技术中MVC的各个部分都有那些技术来实现?如何实现? 好处是什么? 答:MVC是Model-View-Controller的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), View 是应用的表示面(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

MVC模式的好处:实现了业务逻辑和界面显示处理的分离;J2EE架构实现了业务逻辑和数据存储的分离,界面显示和业务逻辑的分离。各层之间不受影响。

7.说出Servlet的生命周期。

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

8.什么情况下调用doGet()和doPost()?

Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。

9.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

JSP 是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是\类servlet\。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

10.jsp有哪些动作?作用分别是什么? 答:JSP共有以下6种基本动作

jsp:include:在页面被请求的时候引入一个文件。

jsp:useBean:寻找或者实例化一个JavaBean。

jsp:setProperty:设置JavaBean的属性。

jsp:getProperty:输出某个JavaBean的属性。

jsp:forward:把请求转到一个新的页面。

jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

11.hidden表单域有什么作用? A、多个表单的区分 B、多个提交按钮

12.说说事务的概念,在JDBC编程中处理事务的步骤。 1) 事务是作为单个逻辑工作单元执行的一系列操作。 2) 一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务 事务处理步骤: 3) conn.setAutoComit(false);设置提交方式为手工提交 4) conn.commit()提交事务 5) 出现异常,回滚 conn.rollback();

13.jsp是如何被容器调用和执行的?

1)由JSP引擎将JSP页面翻译成JAVA代码 2)将JAVA代码编译成class字节码文件 3)加载到容器

4)由容器实例化成对象

5)初始化阶段相关的方法是jspInit()

6)请求到达,调用服务阶段相关的方法是_jspService() 7)销毁阶段相关的方法是jspDestroy()

14.为什么要为servlet配置URL映射?

Servlet注册包括两部分,第一,容器如何找到Servlet,利用

Servlet名字

Servlet类的全路径 完成。

第二,客户端如何找到当前的Servlet。利用

Servlet名字 客户端请求路径 完成。

配置URL的主要作用是客户端通过什么路径能去找到Servlet

15.servlet是线程安全的吗?为什么?

不安全。因为Servlet对象在整个过程中,至始至终只有一个对象。以节约服务

器资源的消耗,这就意味着很多个线程会同时访问一个Servlet对象。所以线程不安全。

16.你是如何处理servlet线程安全问题的? 解决Servlet线程安全问题方法有三种

1)编写Servlet类的时候,实现SingleThreadModel接口,将Servlet变成单线程机制。

2)涉及对共享资源访问的时候,使用synchronized同步加锁,实现共享资源的保护。

3)尽量不在Servlet中定义成员变量,使用局部变量。

在三种方法中,最好使用第三种,这样线程安全,并且性能最高。

17.response对象的作用?

Response对象是对服务器的响应信息作出的一个封装对象。主要作用有: 1)可以从response中获得输出流对象,从而可以向客户端输出信息 2)可以实现重定向,response.sendRedirect(); 3) 可以设置响应头和状态码。 4)可以实现URL重写

18.request对象的作用范围是什么? 一次请求响应完成后,就会销毁。

19.session对象的作用范围是什么 在一个用户会话期间有效。

20.application对象的作用范围是什么。

存在于整个web应用。当WEB容器关闭时,才会销毁

销毁session方法有三种 1)session超时

2)调用session对象的invalidate()方法 3)web容器关闭或崩溃 程序能控制是前二种。

21.session和cookie有什么区别。

1) session保存在服务器,客户端不知道它的信息;而cookie保存在客户端,服务器知道其中的信息。

2) session中 保存的是对象,而cookie中保存的是字符串

3) session是不能区分路径的,同一个客户在访问web服务器之间,在任何地方都能够访问得到session中保存的信息的。而cookie如果设置了路径参数,同一个网站下的不同路径的cookie互相是访问不到的。

22.jsp中taglib指令的作用是什么?

这个指令是标签库指令。指示标签库的逻辑路径,以及标签库的使用前缀。

使用taglib指令<%@taglib uri=”” prefix=”” %>

23.tomcat容器的作用是什么? a) 通信支持:

b) 生命周期管理。 c) 多线程支持: d) jsp支持 e) 安全性管理

24.简述oracle中 dml、ddl、dcl的使用

Dml 数据操纵语言,如select、update、delete,insert Ddl 数据定义语言,如create table 、drop table 等等

Dcl 数据控制语言, 如 commit、 rollback、grant、 invoke等

35.隐式游标和显式游标的区别是什么?(容易)

隐式游标在执行SQL语句时由Oracle自动生成,用户不能控制隐式游标。隐式游标用于检索一行。

显式游标由用户显式声明,用户对显式游标有完全控制权。显式游标用于返回多行的查询。

三、编程(1-3),请写出相应的SQL语句(4-20)

1.用PL/SQL编写代码,查找emp表中员工编号,员工姓名,员工工资的第一条记录,并输出 declare

v_id emp.empno%type; v_name emp.ename%type; v_sal emp.sal%type; begin

select empno,ename,sal into v_id,v_name,v_sal from emp where rownum=1;

dbms_output.put_line(v_id||' '||v_name||' '||v_sal); end;

2.用PL/SQL编写代码,利用while循环输出0到9这九个数字 declare

v_i binary_integer:=0; begin

while v_i<10 loop

dbms_output.put_line(v_i ); v_i:=v_i+1; end loop; end;

3用PL/SQL编写代码,对所有的\销售员\增加佣金500. DECLARE

CURSOR c1 IS

SELECT * FROM emp WHERE job=′SALESMAN′ FOR UPDATE OF sal; BEGIN

FOR i IN c1 LOOP

UPDATE emp SET sal=NVL(sal,0)+500 WHERE CURRENT OF c1; END LOOP; END;

4 在emp表中查询员工的工资,显示结果为**的工资为**(如smith的工资为800)

select ename||'的工资为'||sal from emp; 5 查询员工表中员工工资的等级

select sal,grade from emp ,salgrade where sal between losal and hisal;

6 显示员工的姓名,但员工姓名中的第一个字母,和最后一个字母不显示出来(掐头去尾)

select substr(ename,2,length(ename)-2) from emp;

7 笑笑是1987年8月07日出生的,请帮她算一下她已经活了多少天 select sysdate-to_date('1987-08-07','yyyy-mm-dd') from dual;

8 用转换函数表示今天是哪年哪月哪日 几时几分几秒,星期几?

select to_char(sysdate,'yyyy-mm-dd hh:mi:ss dy ') from dual;

9 按照部门分组,查询工资总和大于10000的部门标号和工资总和

select sum(sal),deptno from emp group by deptno having sum(sal)>10000;

10查询比FORD工资还高的员工的信息

select * from emp where sal>(select sal from emp where ename='FORD');

11 查询工资等于1600或2000或3000的员工信息。

(1)Select * from emp where sal in(1600,2000,3000); (2)Select * from emp where sal=1600 Union

Select * from emp where sal=2000 Union

Select * from emp where sal=3000

12 修改学生表(student)向表中添加字段(email varchar2(20)) Alter table student add(email varchar2(20));

13 删除学生表中的主键(sid)

alter table student drop primary key(sid);

14给学生表添加检查约束,学生的年龄(age)不能小于六岁 Alter table student add constraint b_d check(age>6);

15 创建一个视图,使它具有emp表中编号是但是的员工信息 Create view v_emp as select * from emp where deptno=30;

16 创建一个序列(sq_in),使它的起始值为100,步长为2; Create sequence sq_in Start with 100 Increment by 2 ;

17 修改emp表中员工编号为7369的员工的受雇时间为今天 Update emp set hiredate=sysdate where empno=7369;

18 显示员工表中2月份被录用的员工信息

(1)select * from emp where extract (month from hiredate)=2; (2)select * from emp where to_char(hiredate,'mm')=2;

19显示姓名字段的任何位置包含\的所有员工的姓名. select * from emp where ename like '%A%'; 20列出所有员工的姓名和其上级的姓名

select e.ename,d.ename from emp e,emp d where e.mgr=d.empno;