一、填空
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、 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) (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。利用 配置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;