当前位置:文档之家› JSP考试试题

JSP考试试题

一.选择题:(20个)范围:除《tag文件与tag标记》之外的所有章节二。

填空题:1当在JSP文件中要使用到Vector对象时,应在JSP文件中加入<%@ page import=”java.util.* ”%>2 _response_对象封装了对客户端的响应。

3 HTML一种标记语言,使用各种标记格式化文本信息。

在HTML页面里以_<HEAD>_标记页面的起始,_<TITLE>_标记页面的标题,_<body>_标记页面的主体内容。

6假设在helloapp应用中有一个HelloServlet类,它在web.xml文件中的配置如下:<servlet><servlet-name> HelloServlet </servlet-name><servlet-class>org.javathinker.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name> HelloServlet </servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>那么在本地浏览器端访问HelloServlet的URL是_http://localhost:8080/helloapp/hello7下面date1.jsp程序要求在网页中显示当前日期,请将补充程序。

<%@_page import=”java.util.*”%><html><body><% Date myDate = new Date();out.println(myDate.toLocaleString()); %></body></html>8 JDBC的主要任务是:建立与数据库的连接、向数据库发起查询请求、处理数据库返回结果。

9 Servlet的生命周期分三个时期:装载 Servlet、创建一个 Servlet 实例、销毁11 File 类是Object的直接子类,它既可以对文件进行读操作,又可以对文件进行写操作。

12 在Tomcat中创建自己的开发目录BW文件夹,需要在BW文件夹中创建_WEB_INF文件夹,还需要_classes 文件夹来存放class文件。

13 调用request的getRemoteAddr()方法可以_获取客户机的IP地址三。

简答题:(5个)1简述在程序开发中,JSP的运行原理。

1.Web服务器上的JSP引擎将JSP文件转换为Java文件2.JSP引擎调用Java编译器对Java文件进行编译3.Java虚拟机执行编译文件,并将结果返回给客户端注: Web服务器执行JSP的三个过程不是客户端每次请求一个JSP页面时都被执行的.当Web服务器启动后,客户端第一次请求一个JSP页面时,需要完全执行上述三个过程,此后Servlet的代码便驻留在内存当中,因此当客户端再次请求这个JSP页面时,就可以非常快的得到返回结果.2列举出九个JSP的内置对象,并简述request、response和session的作用。

request, response, out, session, application, config, pagecontext, page, exceptionrequest作用内置对象request封装了用户提交的信息,该对象调用相应的方法可以获取封装的信息。

request对象是实现了ServletRequest接口的类的一个实例response作用response对象与request对象相对应,服务器可以用response对象对客户端的请求进行动态的响应。

session作用HTTP是一种无状态协议,服务器在响应了客户端的请求后,服务器与客户端的连接就关闭了,服务器不会保存连接的有关信息。

Tomcat可以使用内置session对象记录有关连接的信息,它是实现了HttpSession接口类的一个实例。

3简述<jsp:include page=”uri”/>与<%@include file=”uri”%>的区别。

(1)前者动态包含;后者静态插入且被插入页面和插入页面不能有不同的contentType属性值(2)include指令标记与include动作标记比较:二者都是在当前JSP页面处理所需要的文件,前者是在编译阶段处理,逻辑和语法上依赖于当前JSP页面,但执行速度快;而后者是在运行阶段处理,逻辑和语法上独立于当前页面,速度慢,但可以使用param子标记4 jsp有哪些动作指令?作用分别是什么?include(1)动态包含(2)在当前JSP页面处理所需要的文件,在运行阶段处理,逻辑和语法上独立于当前页面,速度慢,但可以使用param 子标记paramparam标记不能独立使用,需要作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。

格式为:<jsp:param name=“名字”value=“值”>param标记与jsp:include标记一起使用的时候,可以将参数传递到要加载的文件中去,被加载的文件可以通过request内置对象的getParameter()方法获取传递过来的参数。

forward从该指令处停止当前页面的执行,而转向page属性指定的JSP页面pluginplugin标记保证客户浏览器能执行Java applet程序5简述编写JavaBean要满足的条件编写JavaBean就是编写一个java类,只是方法的命名上有一些规则:(1)对应于类的成员变量名xxx,获取及设置xxx的值的两个方法应为getXxx()和setXxx()(2)对于boolean类型的成员变量,允许使用is代替上面的get和set(3)方法的访问控制符必须都是public(4)类中声明的构造函数必须是public,无参数的6描述JSP和Servlet的区别、共同点、各自应用的范围JSP在本质上就是SERVLET,但是两者的创建方式不一样。

Servlet完全是JA V A程序代码构成,擅长于流程控制和事务处理,通过Servlet来生成动态网页很不直观。

JSP由HTML代码和JSP标签构成,可以方便地编写动态网页。

因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页。

在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层。

JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。

JSP编译后是“类servlet”。

Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。

而JSP是Java和HTML组合成一个扩展名为.jsp的文件。

JSP侧重于视图,Servlet主要用于控制逻辑。

7.简述重定向与转发的实现方式以及区别(实现方式可用代码举例)重定向的功能是将用户从当前页面或servlet重定向到另一个页面或servlet;转发的功能是将用户对当前JSP页面或servlet对象的请求转发给另一个JSP页面或servlet对象。

转发后用户在地址栏中不能看到forward方法转发的页面或servlet的地址,只能看到该页面或servlet的地址。

重定向:void sendRedirect(String location)实现转发需要两个步骤:(1)得到RequestDispatcher对象RequestDispatcher dispatcher=request.getRequestDispatcher(“a.jsp”);其中a.jsp是要转发的JSP页面或servlet的地址(2)转发:dispatcher.forward(request,response);8.简述MVC模式的基本思想。

模型-视图-控制器(model-view-controller),简称MVC.MVC是一种先进的设计模式,是一种通过三个不同部分构造一个软件或组建的理想方法:模型(model):用于存储数据的对象视图(view):显示模型中的数据,向控制器提交所需数据控制器(controller):负责具体的业务逻辑操作,即控制器根据视图提出的要求对数据作出处理,将有关结果存储到模型中,并负责让模型和视图进行必要的交互,当模型中的数据变化时,让视图更新显示。

9.简述数据库连接池的思想以及使用连接池的好处。

连接池的思想:Tomcat服务器预先准备好若干个连接对象,将这些对象保存在一个称为连接池的容器中(通常为链表),当某个用户需要操作数据库时,只要从连接池中取出一个连接对象,当用户使用完该连接对象后,再将该对象放回连接池。

若连接池中没有连接对象可用,那么用户必须等待。

连接池的好处:1.资源复用2.更快的系统响应速度3.新的资源分配手段4.统一的连接管理,避免数据库连接泄漏四。

程序设计题:(1个)范围:对mysql数据库的连接及增删改查的操作inquire.jsp<%@ page language="java" contentType="text/html; charset=gb2312"pageEncoding="gb2312"%><%@ page import="database.select.*" %><jsp:useBean id="score" class="database.select.SelectME" scope="session"/><jsp:setProperty name="score" property="name" param="name"/><jsp:setProperty name="score" property="number" param="number"/><jsp:setProperty name="score" property="math" param="math"/><jsp:setProperty name="score" property="english" param="english"/><html><head><title>Insert title here</title><!-- 设计数据库school,数据库中建表student,字段name,number,math,english,编写inquire.jsp,查找数学和英语成绩都在90分以上的同学的记录,显示在页面上--><body><FORM name="f1" action="" Method="post" >学生成绩查询(按条件查询)<BR> 数学成绩:<Input type=text name="math" /><br>英语成绩:<Input type=text name="english" /><br><Input type=submit value="提交"><br/>按条件查询:数学成绩是<jsp:getProperty name="score" property="math"/>,英语成绩是<jsp:getProperty name="score" property="english"/>的记录:<BR><jsp:getProperty name="score" property="queryResultByScore"/></Form><FORM name="f2" action="" Method="post" >学生成绩添加<BR>姓名:<Input type=text name="name" /><br>学号:<Input type=text name="number" /><br>数学成绩:<Input type=text name="math" /><br>英语成绩:<Input type=text name="english" /><br><Input type=submit value="添加"><BR><jsp:getProperty name="score" property="addResult"/></Form><FORM name="f3" action="" Method="post" >学生成绩修改<BR>姓名:<Input type=text name="name" /><br>数学成绩:<Input type=text name="math" /><br>英语成绩:<Input type=text name="english" /><br><Input type=submit value="修改"><BR><jsp:getProperty name="score" property="updateResultByName"/></Form><FORM name="f4" action="" Method="post" >学生成绩删除<BR>姓名:<Input type=text name="name" /><br><Input type=submit value="删除"><BR><jsp:getProperty name="score" property="delResultByName"/></Form><BR>查询所有:<jsp:getProperty name="score" property="queryResultByAll"/></body></html>SelectME.javapackage database.select;import java.sql.*;public class SelectME {int math=90,english=90;String name="";int number;StringBuffer queryResultByScore,queryResultByAll,addResult,updateResultByName,delResultByName;public SelectME(){//queryResultByScore=new StringBuffer();//queryResultByAll=new StringBuffer();// updateResultByName=new StringBuffer();// delResultByScore=new StringBuffer();try{ Class.forName("com.mysql.jdbc.Driver");}catch(Exception e){ }}public int getMath() {return math;}public void setMath(int math) {this.math=math;// queryResultByScore=new StringBuffer();}public int getEnglish() {return english;}public void setEnglish(int english) {this.english = english;//queryResultByScore=new StringBuffer();}public String getName() {return name;}public void setName(String name) { = name;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}//按条件查询public StringBuffer getQueryResultByScore(){ String condition="SELECT * FROM student Where math >= "+math+" AND "+"english >= "+english;queryResultByScore=f(condition);return queryResultByScore;}//查询所有public StringBuffer getQueryResultByAll(){ String condition="SELECT * FROM student";queryResultByAll=f(condition);return queryResultByAll;}//添加public StringBuffer getAddResult(){String condition="insert into student(name,number,math,english) value("+ name +","+ number +","+ math +","+ english +")";addResult= AddOrUpd(condition);return addResult;}//按条件修改public StringBuffer getUpdateResultByName(){ String condition="update student set math="+ math +",english="+ english +" where name = "+name;updateResultByName= AddOrUpd(condition);return updateResultByName;}//按条件删除(删除条件看情况具体写)public StringBuffer getDelResultByName(){ String condition="delete from student where name = "+name;delResultByName= AddOrUpd(condition);return delResultByName;}private StringBuffer f(String condition){ StringBuffer str=new StringBuffer();Connection con;Statement sql;ResultSet rs;try { String uri="jdbc:mysql://localhost:3306/school";con=DriverManager.getConnection(uri,"root","123456");sql=con.createStatement();rs=sql.executeQuery(condition);str.append("<table border=1>");str.append("<th width=100>"+"name");str.append("<th width=100>"+"number");str.append("<th width=100>"+"math");str.append("<th width=100>"+"english");while(rs.next()){ str.append("<tr>");str.append("<td>"+rs.getString(1)+"</td>");str.append("<td>"+rs.getInt(2)+"</td>");str.append("<td>"+rs.getInt(3)+"</td>");str.append("<td>"+rs.getInt(4)+"</td>");str.append("</tr>");}str.append("<table border=1>");con.close();}catch(SQLException e){ System.out.println(e);}return str;}private StringBuffer AddOrUpd(String condition){ StringBuffer str=new StringBuffer();Connection con;Statement sql;ResultSet rs;int rows = 0;try { String uri="jdbc:mysql://localhost:3306/school";con=DriverManager.getConnection(uri,"root","123456");sql=con.createStatement();rows = sql.executeUpdate(condition);if(rows>0){System.out.println("成功!");}con.close();}catch(SQLException e){ System.out.println(e);}return str;}}。

相关主题