JSP题库
一、 填空题
1. 一个完整的JSP页面是由普通的HTML标记、JSP指令标记、JSP动作标记、 变量声明 与方法声明 、程序片 、表达式 、 注释 7种要素构成。
2. JSP页面的基本构成元素,其中变量和方法声明(Declaration) 、 表达式 (Expression)和Java程序片(Scriptlet)统称为JSP脚本元素 。
3. 指令标记、JSP动作标记统称为 JSP标记 。
4. “<%!”和“%>”之间声明的方法在整个页面内有效,称为页面的成员方法 。
5. 在“<%!”和“%>”之间声明的变量又称为 页面成员变量 ,其作用范围为整个JSP页面。
6. JSP页面的程序片中可以插入 HTML 标记。
7. 当JSP页面的一个客户线程在执行 synchronized 方法时,其他客户必须等待。
8. JSP页面中,输出型注释的内容写在 “<!--” 和 “-->” 之间。
9. .JSP声明函数时,如果在前面加上 synchronize 关键字,功能是当前一个用户在执行该方法时,其他用户必须等待,直到该用户完成操作。
10. Page指令的属性Language的默认值是 java 。
11. 在Error.jsp页面中,要使用Exception对象,必须设置的指令是 <%@page isErrorPage = “true”%>.
12. 要使java bean在整个应用程序的声明周期中,被该应用程序中的任何JSP文件所使用,则该java bean的Scope属性必须设置为 application 。
13. JSP的_ __session__ __对象用来保存单个用户访问时的一些信息。
14. response对象的_ sendRedirect(URL url)_ _方法可以将当前客户端的请求转到其他页面去。
15. 当客户端请求一个JSP页面时,JSP容器会将请求信息包装在__ _request__对象中。
16. response.setHeader(“Refresh”, “5”)的含义是指 页面刷新时间为 5秒__。
17. 在JSP中为内置对象定义了4种作用范围,即 Application Scope 、Session Scope 、Page Scope 和Request Scope 四个作用范围。
18. 表单的提交方法包括___ get ___和___post_ _方法。
19. 表单标记中的__ action _属性用于指定处理表单数据程序url的地址。
20. JavaBean是一个 java 类,它必须有一个 无参的构造 方法。
21. JSP的是内部对象可以直接使用,它是由 web容器 创建的。
22. 在JSP中,页面间对象传递的方法: request 、 session 、 application 、 cookie 等方法。
23. 在jsp页面中,可以用request对象的 getParameterValues() 方法来获取其他页面传递参数值的数组。
24. 在JSP中使用JavaBean的标签是 <jsp:useBean class="BeanName" id=Bean实例> ,其中id的用途是 实例化一个Bean对象 。
25. JavaBean中用一组set方法设置Bean的私有属性值,get方法获得Bean的私有属性值。set和get方法名称与属性名称之间必须对应,也就是:如果属性名称为xxx,那么set和get方法的名称必须为 setXxx() 和 getXxx() 。
26. 用户在实际Web应用开发中,编写Bean除了要使用import语句引入Java的标准类,可能还需要自己编写的其他类。用户自己编写的被Bean引用的类称之为 Bean的辅助类
27. 创建JavaBean的过程和编写Java类的过程基本相似,可以在任何Java的编程环境下完成 编写、编译和发布 。
28. 布置JavaBean要在Web服务目录的WEB-INF\classes文件夹中建立与 Bean的包名 对应的子目录,用户要注意目录名称的大小写。
29. 使用Bean首先要在JSP页面中使用 import 指令将Bean引入。
30. 要想在JSP页面中使用Bean,必须首先使用 <jsp:useBean> 动作标记在页面中定义一个JavaBean的实例。
31. JSTL标签库中, c:forEach 标签用来循环输出集合中的数据。
32. 获取request作用域中名为“uname”值的EL表达式是 ${uname} 。
33. 编写过滤器类需要实现的 Filter 接口。
34. Filter接口中最主要的方法是 doFilter 方法。
35. 实现Filter接口的类需要重写doFilter方法、 init 方法、destroy方法。
二、 选择题
1.如果做动态网站开发,以下( A )可以作为服务器端脚本语言(选择一项)
A.Java
B.Jsp
C.Javascript
D.Html
2.JSP中存在如下代码:<%="2"+"4" %>,运行该JSP后,以下说法正确的是( C )(选择一项)
A.没有任何输出
B.输出6
C.输出24
D.指令将引发错误
3.在JSP中,使用( C )对象的()方法可完成网页重定向(选择一项)
A.request,getRequestDispatcher()
B.request,forward()
C.response,sendRedirect()
D.response,setRequestDispatcher()
4.在JSP中使用JDBC语句访问数据库,正确导入SQL类库的语句是( A )(选择一项)
A.<%@ page import="java.sql.*" %>
B.<%@ page import="sql.*" %>
C.<% page import="java.sql.*" %>
D.<%@ import="java.sql.*" %>
5.对于分页查询, 以下说法不正确的是(B)(选择一项)
A.可以减轻服务器压力
B.对于程序开销极大
C.以提高用户体验
D.对于不同数据库有不同的SQL指令
6 对于ServletRequest接口的getAttribute()方法,说法正确的是( A )(选择一项)
A.获取指定名称的属性值
B.设置指定属性的值
C.删除指定属性的值
D.以上都不对
7.对JSTL说法中正确的是(AB)(选择二项)
A.foreach用来循环输出集合中的数据
B.set标签用来定义变量
C.out标签只能输出session中的变量值
D.if标签主要用来执行数据库操
8.在JSP页面中,下列( A )表达式语句可以获取页面请求中名字为title的文本框的内容。(选择一项)
A.<%=request.getParameter("title")%>
B.<%=request.getAttribute("title")%>
C.<%=request.getParameterValues("title")%>
D.<%=request.getParameters("title")%>
9.jsp在执行过程中经过()阶段,由web容器将之转换成java源代码( A )(选择一项)
A.翻译
B.编译
C.执行
D.响应
10. jsp在执行过程中经过()阶段,会将java源码转换成class文件( B )(选择一项)
A.翻译
B.编译
C.执行
D.响应
11. 在JSP的小脚本中,使用以下( C)语句可以使浏览器重定向到另一个页面(选择一项)
A.request.sendRedirect("http://www.jb-aptech.com.cn");
B.request.sendRedirect();
C.response.sendRedirect("http://www.jb-aptech.com.cn");
D.response.sendRedirect();
12. JSP文件test.jsp文件如下所示,运行时,将发生(D)。(选择一项)<html> <% String str = null;%> str is <%=str%></html>
A.编译阶段出现错误
B.翻译阶段出现错误
C.执行字节码时发生错误
D.运行后,浏览器上显示:str is null
13. JSP页面的page指令主要用于设置该页面的各种属性,page指令的language属性的作用是( B )。(选择一项)
A.将需要的包或类引入到JSP页面中
B.指定JSP页面使用的脚本语言,默认为Java
C.指定JSP页面采用的编码方式,默认为text/html
D.服务器所在国家编码
14. 在java Web应用开发中,Servlet程序需要在( B )文件中配置。(选择一项)
A.Jsp
B.web.xml
C.struts.xml
D.servlet.xml
15. 在Java EE中,HttpServletResponse的( B )方法用于一个HTTP请求重定向到另一个资源。(选择一项)
A.sendURL()
B.sendRedirect()
C.forward()
D.redirectURL()
16. 在JSP页面中进行访问控制时,一般会使用JSP的( B )内置对象实现对用户的会话跟踪(选择一项)
A.Request
B.Session
C.Response
D.Application
17. 在JSP页面中有如下Java代码,一共存在( B)处错误(选择一项)<% String userName= (String)session.getParameter("userName"); if(userName==null) { %> 您尚未登录! <% } else { %> 欢迎您,<%=userName %> <% }%>
A.0
B.1
C.2
D.3
18. 在JSP中,以下哪个方法可以正确获取复选框的值( C )(选择一项)
A.request.getParameterValue()
B.response.setParameterValues()
C.request.getParameterValues()
D.request.getParameter()
19. 在一个jsp页面中包含了这样一种页面元素,<% int i = 10; %>这是( B )(选择一项)
A.表达式
B.小脚本
C.指令
D.注释
20. 在JSP中,以下( C )技术最适合实现购物车的存储(选择一项)
A.Page
B.Request
C.Session
D.Application
21. 以下JSP关键代码的运行效果为( A )。(选择一项)<% Map map=new HashMap(); map.put("a","Java"); map.put("b","JSP"); map.put("a","C#"); request.setAttribute("map",map);%>${map.b}<br/>${map["a"]}
A.JSP C#
B.JSPJAVA
C.运行时出现错误
D.什么也不输出。
22. 以下JSP代码片段的输出结果是( D )(选择一项)<% String getName(String name){ return name.subString(0,3); }%>姓名:<%=getName("齐德龙东强")%>
A.姓名:
B.姓名:齐德
C.姓名:齐德龙
D.编译错误
23. index.jsp中代码如下,可以正确填写到横线处的代码为( AB )(选择二项)<%@ pae language="java" pageEncoding="ISO-8859-1" ______________%><% Date date = new Date();%><%=date%>
A.import="java.util.*"
B.import="java.util.Date"
C.package="java.util.*"
D.package="java.util.Date"
24. 以下JSP代码运行后的结果为( B )。(选择一项)<%int i =8;%><%=i+"8"%>
A.i8
B.88
C.16
D.编译错误
25. 在下JSP代码,用户访问login.jsp页面点击“登录”后的显示结果是( C )。(选择一项)login.jsp页面代码如下:<form action="display.jsp"> <input type="text" name="u1" value="admin1"/> <input type="text" name="u2" value="admin2"/> <input type="submit" value="登录"/></form>display.jsp页面代码如下:<% request.setAttribute("x","admin3"); request.getRequestDispatcher("success.jsp").forward(request,response);%>success.jsp页面代码如下:<%=request.getParameter("u1")%><%=request.getAttributer("x")%>
A.admin1 admin2
B.admin1 null
C.admin1 admin3
D.null admin3
26. 如下JSP代码输出集合中各元素,横线处应填写( AC )。(选择二项)<% List<String> strs= new ArrayList<String>(); strs.add("北京"); strs.add("上海"); strs.add("浙江"); request.setAttribute("strs",strs);%><c:forEach var="strList" items="___________"> <c:out value="________"></c:out></c:forEach>
A.${strs},${strList}
B.${strList},${strs}
C.${requestScope.strs},${strList}
D.${strList}, ${requestScope.strs}
27. 假设当前为2013年4月15日,则如下JSP代码输出结果为( A )。(选择一项)<%@page import="java.util.Date"%><%@ page import ="java.text.SimpleDateFormat"%><% SimpleDateFormat formater=new SimpleDateFormat("yyyy年MM月dd日"); String strTime = formater.format(new Date());%><%=strTime%>
A.2013年04月15日
B.2013年05月15日
C.13年4月15日
D.编译错误
28. 以下JSP关键代码的功能为输出"姓名:陈小斌",横线处应填写( AC ).(选择二项)<% Map stus = new HashMap(); stus.put("stu1","王晓"); stus.put("stu2","黄青"); stus.put("stu3","陈小斌"); request.setAttribute("stuList",stus);%>姓名:____________
A.${stuList.stu3}
B.${stuList[stu3]}
C.${stuList["stu3"]}
D.${stuList."stu3"}
29. 如下JSP代码输出集合中各元素,横线处应填写( AC)。(选择二项)<% List<String> strs= new ArrayList<String>(); strs.add("北京"); strs.add("上海"); strs.add("浙江"); request.setAttribute("strs",strs);%><c:forEach var="strList" items="___________"> <c:out value="________"></c:out></c:forEach>
A.${strs},${strList}
B.${strList},${strs}
C.${requestScope.strs},${strList}
D.${strList}, ${requestScope.strs}
30. 在部署带有Servlet的Java Web程序时,(D)不是必需的。(选择一项)
A.web.xml文件
B.WEB-INF文件夹
C.classes文件夹
D.csses文件夹
31. 在JSP中,以下哪个方法可以正确获取复选框的值( C )(选择一项)
A.request.getParameterValue()
B.response.setParameterValues()
C.request.getParameterValues()
D.request.getParameter()
32. JSP中的有很多内置对象可以方便程序开发,其中不包括( C )(选择一项)
A.Out
B.Request
C.Redirect
D.Response
33. 在一个jsp页面中包含了这样一种页面元素,<% int i = 10; %>这是( B )(选择一项)
A.表达式
B.小脚本
C.JSP指令
D.注释
34. 在JSP中,以下( C )技术最适合实现购物车的存储(选择一项)
A.Page
B.Request
C.Session
D.Application
35. 在使用表单提交数据时,如果<form>标签的method属性未指定的时候,则以下说法中正确的是( B )(选择一项)
A.默认为POST请求
B.默认为GET请求
C.默认为Fast请求
D.编译错误
36. 如果要把一个“accp”字符串信息放在session对象里,则下列正确的是( A)(选择一项)
A.session.setAttribute("message","accp");
B.session.setAttribute(message,"accp");
C.session.setAttribute("accp","message");
D.session.setAttributes("message","accp");
37. 在JSP中,假设表单的method="post",在发送请求时中文乱码处理的正确做法是(A)(选择一项)
A.request.setCharacterEncoding("utf-8");
B.response.setCharacter("utf-8");
C.request.setContentType("text/html;charset=utf-8");
D.response.setContentType("text/html;charset=utf-8");
38. 在JSP中,对于数据的共享可通过不同的作用域对象实现,如果该数据仅限当前页面有效,可选择的作用域对象( A )。(选择一项)
A.PageContext
B.Request
C.Session
D.Application
39. jsp中,对ServletRequest接口提供的setAttribute()方法共享数据,对此,以下说法正确的是(A )(选择一项)
A.其原型是setAttribute(String key,Object value),第一个参数表示变量名称,第二个参数表示要存入的数据
B.其原型是setAttribute(Object value,String key),第一个参数表示变量名称,第二个参数表示要存入的数据
C.其原型是setAttribute(String key,String value),第一个参数表示变量名称,第二个参数表示要存入的数据
D.其原型是setAttribute(String value,List value),第一个参数表示变量名称,第二个参数表示要存入的数据
40. 在JSP中,pageContext、request、session、application均提供了存取数据的通用方法,假设已经在session中存入了名为"currentUser"的User对象,则取出该数据的正确语句是( BC )(选择二项)
A.User user = session.getAttribute("currentUser");
B.User user = (User)session.getAttribute("currentUser");
C.Object user = session.getAttribute("currentUser");
D.String user = (String)session.getAttribute("currentUser");
三、 判断题
1. JSP引擎执行字节码文件的主要人物之一是直接将HTML内容发给客户端。(T)
2. JSP页面中的变量和方法声明(Declaration)、表达式(Expression)和Java程序片(Scriptlet)统称为JSP标记。(T)
3. JSP页面中的指令标记、JSP动作标记统称为脚本元素。(F)
4. 在“<%!”和“%>”标记之间声明的Java的变量在整个页面内有效,不同的客户之间不共享。(F)
5. 在“<%!”和“%>”标记之间声明的Java的方法在整个页面内有效。(T)
6. 页面成员方法不可以在页面的Java程序片中调用。(F)
7. 程序片变量的有效范围与其声明位置有关,即从声明位置向后有效,可以在声明位置后的程序片、表达式中使用。(T)
8. 程序片变量不同于在“<%!”和“%>”之间声明的页面成员变量,不能在不同客户访问页面的线程之间共享。(T)
9. JSP中Java表达式的值由服务器负责计算,并将计算值按字符串发送给客户端显示。(T)
10. 在Java程序片中可以使用Java语言的注释方法,其注释的内容会发送到客户端。(F)
11. 不可以用一个page指令指定多个属性的取值。(F)
12. jsp:include动作标记与include指令标记包含文件的处理时间和方式不同。(T)
13. jsp:param动作标记不能单独使用,必须作为jsp:include、jsp:forward标记等的子标记使用,并为它们提供参数。(T)
14. <jsp:forward...>标记的page属性值是相对的URL地址,只能静态的URL。(F)
15. JSP页面只能在客户端执行。(F)
16. JSP页面中不能包含脚本元素。(F)
17. Page指令不能定义当前JSP程序的全局属性。(F)
18. 在JSP中,<%!intc=5;out.print(c);%>此式正确.。(F)
19. <jsp:getProperty>中的name及property区分大小写。(T)
20. JSP主要的指令有page,import,include等三个(F)
21. 当同时有多个请求发送到一个Servlet时,服务器将会为每个请求创建一个新的线程来处理客户端的请求。(T)
22. HTML称为超文本元素语言,它是HypertextMarkedLanguage的缩写。(T)
23. 一个HTML文档必须有<head>和<title>元素。(F)
24. 超级链接不仅可以将文本作为链接对象,也可以将图像作为链接对象。(T)
25. 表单域一定要放在<form>元素中。(T)
26. 盒子模型中的top、right、bottom、left属性取值即可以是像素数,也可是百分比,并且只有父容器的position取值为非static值时才有效。(T)
27. 用户在浏览器中输入http://127.0.0.1:8080/ch2/ch2_1.html即可访问本机上的该页面。(T)
28. 在网页中图形文件与网页文件是分别存储的。(T)
29. 绝度路径是文件名的完整路径;相对路径是指相对当前网页文件名的路径。(T)
30. 超级链接<a>标记的target属性取值为链接的目标窗名,可以是parent、blank、self、top。(F)
31. Tomcat服务器支持直接使用application对象。(F)
32. out对象是一个输出流,它实现了javax.servlet.JspWriter接口,用来向客户端输出数据。(T)
33. 利用response对象的sendRedirect方法只能实现本网站内的页面跳转,但不能传递参数。(F)
34. JSP的Response对象作用是向客户端发送数据,但是一次会话过程,一个Response对象只能包含一个Coolie和一个HTTP文件头。否则抛出内存越界异常。(F)
35. 在MVC模式中,因为Servlet负责创建JavaBean,所以JavaBean的构造函数可以带有参数,除了保留get和set规则外,还可以有其他功能的函数。(T)
36. JSP是Servlet的升级版本,JSP出来后,Servlet也就退出了历史的舞台。(F)
37. JSP输出表达式,正确的语法规则是<%=表达式%>。(T)
38. JavaBean的属性可读写,编写时set方法和get方法必须配对。(F)
39. JavaBean也是Java类,因此也必须有主函数。(F)
40. 和过滤器相关的接口主要有:Filter、FilterConfig和FilterChain。(T)
四、 简答题
1.相比servlet,jsp的优势在哪里?
2.画图说明访问a.jsp的整个流程。
3.<% %>是java代码块的语法。如果在jsp文件中写多个代码块,它们都是位于_jspService方法里吗?
4.看代码解决问题:
<%
a) int c = 10;
%>
<%
b) int d = c+10; //这个代码块能引用上个代码块的变量吗?说出理由。
%>
五、 编码题
1、编写程序实现登录功能
要求:
1)页面使用jsp表单提交,包含姓名和密码
2)提交目的地为Servlet,在Servlet中获得表单提交的数据
3)在Servlet中判断,如果姓名是“张三”,密码是“123”,返回客户登录成功
4)写出核心代码即可
JSP:
1 <form action="login" method="post">
2 <table>
3 <tr>
4 <td>姓名</td>
5 <td>
6 <input type="text" name="uname">
7 </td>
8 </tr>
9 <tr>
10 <td>密码</td>
11 <td>
12 <input type="text" name="pwd">
13 </td>
14 </tr>
15 <tr>
16 <td colspan="2" align="center">
17 <input type="submit" value="登录">
18 </td>
19 </tr>
20 </table>
21 </form>
Servlet:
1 public class LoginServlet extends HttpServlet
2 {
3 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
4 throws ServletException, IOException
5 {
6 doPost(req, resp);
7 }
8 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
9 throws ServletException, IOException
10 {
11 req.setCharacterEncoding("utf-8");
12 String name = req.getParameter("uname");
13 String pwd = req.getParameter("pwd");
14 System.out.println(name + "=" + pwd);
15 resp.setContentType("text/html;charset=utf-8");
16 if (name.equals("张三") && pwd.equals("123"))
17 {
18 resp.getWriter().println("登录成功");
19 } else
20 {
21 resp.getWriter().println("登录失败");
22 }
23 }
24 }
web.xml配置
1 <servlet>
2 <servlet-name>login</servlet-name>
3 <servlet-class
4 >com.guangsoft.LoginServlet</servlet-class
5 >
6 </servlet>
7 <servlet-mapping>
8 <servlet-name>login</servlet-name>
9 <url-pattern>/login</url-pattern>
10 </servlet-mapping>