清华大学计算机与信息管理中心第1页共5页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)、页面功能设计参考本次考试分为笔试及上机两部分,笔试为40分、上机为60分,满分100分。考试时间为2.5小时。页面一:管理员登陆用户名:____________密码:______________登陆按钮清华大学计算机与信息管理中心第2页共5页说明:点“新加商品”按钮,跳到下页进行新加商品删除前需要用户确认在每行的修改链接中,链接到本行记录的修改页面说明:商品增加(修改)成功后,页面回到管理员查看库存页,并刷新列表数据;所有字段均为必填项,件数、单价为数字项,提交数据之前,应进行充分的检查;保存记录的时候,程序检测如果该件商品已有记录(即:名称、规格、单价都相同的商品),则在原有库存上累加,否则新加记录;管理员查看库存页新加商品按钮设置库存预警按钮序号名称规格库存件数单价总价操作1钢笔个1210.0120.0删除修改2鼠标个520.0100.0删除修改…………合计件数合计总价合计新加库存商品页面(修改库存商品页面结构相同)名称:____________*规格:____________*库存件数:_________*【数字】单价:____________*【数字】新加按钮清华大学计算机与信息管理中心第3页共5页第一部分:笔试部分一、简答题1、JSP有哪些内置对象?作用分别是什么?jsp9个常用的内置对象如下request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。response对象:response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例。out对象:out对象是JspWriter类的实例,是向客户端输出内容常用的对象page对象:page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例。application对象:application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。exception对象:exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象。pageContext对象:pageContext对象提供了对JSP页面内所有的对象及名字空间的Web应用开发(Java高级软件开发)工程师培训班Java程序设计考试(答题卡)姓名:分数:清华大学计算机与信息管理中心第4页共5页访问,也就是说他可以访问到本页所在的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清华大学计算机与信息管理中心第5页共5页编程常用的接口,请分别简述它们的作用?答: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对象包含了对存储过程的调用;但不包含存储过程本身,这是由于存储过程是存储在数据库中的。使用方法:CallableStatementcStmt=conn.prepareCall({call存储过程名(参数表列)});结果集(ResultSet)用来暂时存放数据库查询操作获得的结果。它包含了符合SQL语句中条件的所有行,并且它提供了一套get方法对这些行中的数据进行访问