Web应用开发(Java高级软件开发)工程师培训班
JSP和Servlet考试试卷
姓名:分数:
第一部分:笔试部分。
二、简答题(共5题,每题8分,共40分)
1、JSP有哪些内置对象?作用分别是什么?
2、Servlet在什么情况下调用doGet()?什么情况下调用doPost()?
3、简述PreparedStatement和Statement的区别与联系?
4、在Jcbc编程时为什么要养成经常释放连接的习惯?
5、Connection、PreparedStatement、Statement、CallableStatement、ResultSet是JDBC
编程常用的接口,请分别简述它们的作用?
第二部分:上机部分。
(共60分)
1、使用JSP+Servlet+数据库的方式完成一个简易的库存商品管理系统,请自己设计数据库(1)、需求描述:
①、管理员登录
②、列出所有库存商品的名称、规格、库存件数、单价
③、可以对库存记录做增加、修改和删除。
(2)、页面功能设计参考
➢点“新加商品”按钮,跳到下页进行新加商品
➢删除前需要用户确认
➢在每行的修改链接中,链接到本行记录的修改页面
说明:
➢商品增加(修改)成功后,页面回到管理员查看库存页,并刷新列表数据;
➢所有字段均为必填项,件数、单价为数字项,提交数据之前,应进行充分的检查;
➢保存记录的时候,程序检测如果该件商品已有记录(即:名称、规格、单价都相同的商品),则在原有库存上累加,否则新加记录;
第一部分:笔试部分
一、简答题
1、JSP有哪些内置对象?作用分别是什么?
➢jsp9个常用的内置对象如下
➢request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
它是HttpServletRequest类的实例。
➢response对象:response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。
它是HttpServletResponse类的实例。
➢session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。
它是HttpSession
类的实例。
➢out对象:out对象是JspWriter类的实例,是向客户端输出内容常用的对象
➢page对象:page对象就是指向当前JSP页面本身,有点象类中的this指针,它是ng.Object类的实例。
➢application对象:application对象实现了用户间数据的共享,可存放全局变量。
它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样
在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;
在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。
服务器的启动
和关闭决定了application对象的生命。
它是ServletContext类的实例。
➢exception对象:exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。
如果一个JSP页面要应用此对象,就必须把isErrorPage
设为true,否则无法编译。
他实际上是ng.Throwable的对象。
➢pageContext对象:pageContext对象提供了对JSP页面内所有的对象及名字空间的
访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的
application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也
叫pageContext。
➢config对象:config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服
务器的有关信息(通过传递一ServletContext对象)。
2、Servlet在什么情况下调用doGet()?什么情况下调用doPost()?
答:doGet() 处理GET请求,显式提交客户端的信息,信息有长度限制,地址行显示要传送的信息,超链接时起作用
doPost() 允许客户端提交没有长度限制的数据信息,在地址行不显示任何信息,form提交时起作用,把数据用表单传过去的,就好象把数据都打成包发过去。
3、简述PreparedStatement和Statement的区别与联系?
答:PreparedStatement是预编译的支持批处理,对于批量处理可以大大提高效率,但是PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
使用?把参数注入,可有效消除sql注入等代码安全隐患。
使用 Statement 对象。
在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。
statement每次执行sql语句,相关数据库都要执行sql语句的编译。
4、在Jcbc编程时为什么要养成经常释放连接的习惯?
答:为了确保 JDBC 资源不在出现异常或错误等情况下被不正常关闭,我们应该在使用完 JDBC 资源之后关闭且释放它们。
JDBC 连接定义和数目有限的连接,如果数量不够,就需要长时间的等待。
不正常关闭 JDBC 连接会导致等待回收无效的 JDBC 连接。
只有正常的关闭和释放 JDBC 连接,JDBC 资源才可以被快速的重用使性能得到改善。
5、Connection、PreparedStatement、Statement、CallableStatement、ResultSet是JDBC
编程常用的接口,请分别简述它们的作用?
答:
➢Connection:是用来表示数据库连接的对象,对数据库的一切操作都是在这个连接的基础上进行。
➢Statement:用于在已经建立的连接的基础上向数据库发送SQL语句的对象。
它只是一个接口的定义,其中包括了执行SQL语句和获取返回结果的方法。
实际上有3
种 Statement 对象:Statement、PreparedStatement(继承自Statement )和
CallableStatement(继承自PreparedStatement)。
它们都作为在给定连接上执行
SQL 语句的容器,每个都专用于发送特定类型的 SQL 语句: Statement 对象用于
执行不带参数的简单 SQL 语句;
➢PreparedStatement 对象用于执行带或不带IN 参数的预编译SQL 语句,PreparedStatement接口继承了Statement接口,但PreparedStatement语句中包
含了经过预编译的SQL语句,因此可以获得更高的执行效率。
在PreparedStatement
语句中可以包含多个用"?"代表的字段,在程序中可以利用setXXX方法设置该字
段的内容,从而增强了程序设计的动态性。
➢CallableStatement:允许从Java应用程序中调用数据库存储过程。
CallableStatement对象包含了对存储过程的调用;但不包含存储过程本身,这是
由于存储过程是存储在数据库中的。
使用方法:CallableStatement cStmt = conn.prepareCall("{call 存储过程名(参数表列)}");
➢结果集(ResultSet)用来暂时存放数据库查询操作获得的结果。
它包含了符合 SQL 语句中条件的所有行,并且它提供了一套 get 方法对这些行中的数据进行访问。