WEB程序设计心得

袁龙--WEB程序设计个人心得

这个学期学习了WEB客户端程序设计,对网页制作有了一定的了解,这个学期完成了老师布置的2个项目,我一直做得是前台界面设计,所以对前台比对后台了解些,通过这2个项目的锻炼,我觉得我自己的前台界面开发能力有很大的提高,从最初开始的什么都不会,到现在基本能把前台界面设计的比较好了,自己也对WEB程序设计有了一定的了解,至于后台代码,也有了一定的了解,可能用起来,没有前台熟

说一下自己学习WEB的历程————-当曾老师开设WEB程序设计的时候,第一次上课时感觉这课真心高大上,于是一种想学的冲动驱使我开始下决心一定要把这课学好,出色的完成老师布置的项目。于是一个想法在我脑海闪现,老师讲的东西毕竟有限,所以我要发挥自己的自主学习能力,于是开始在网上寻找各种有关教程。找了许多教程,最终在传智播客这个网站上找到了学习前台界面的教学视频,于是开始了我的学习WEB的旅程。首先开始学习的是DIV+CSS,听授课老师的讲述我了解到了下面的知识---网页的设计目前都是应用DIV+CSS或者TABLE+CSS

只是DIV更加灵活点,而TABLE更加传统,而且还是很好用

首先从最简单的HTML语法学起

而HTML语法主要在于对表格和表单的使用

实际上唯一难的就是表格的掌握,因为用表格来布局,需要考虑打方方面面的,而从语言语法来说不难

HTML是标签形式的,所以要灵活嵌标签,可以做出不同的效果,特别是FORM标签里面嵌套TABLE标签可以控制里面的元素排列方式

<p>来控制一段,没什么特别注意的

<span>标签用来控制制定的一段字体效果不错

<BR>好用

然后就开始试着自己通过手动写代码来布局,因为学WEB的最锻炼技术的就是自己手写代码,于是自己通过纯手工代码的形式编写了一个课程表,记得当时编这个的时候足足花了我一天的时间,因为当时什么都不知道,先看了视频教学,然后第二天决定自己动手实践一下,当我第二天做的时候发现,看别人编的时候感觉好简单,当时当自己动手编的时候各种不会,最后经过一天的改啊,终于让我编出来了,瞬间有了点成就感,后来把div+CSS学完了,尽管曾老师讲的是拖控件,但是我学过手动敲代码,于是操作起控件来得心应手,就这样我自己自学了一些东西,其中包括flash,javascript,div+CSS,dom,jquery,ajax等等一些技术,感觉这学期学到了很多东西,其中有老师教的,也有自己自学的,有了这些基础,然后就开始了第一个项目的,图书管理系统,当时我负责的是前台界面,当时参照了一个网站,知道了有母版页这个东西,于是开始自己建一个母版页,在建母版页的过程中也是遇到了很多困难,看着别人做的干觉蛮简单,可是自己做起来,确实失败了很多次,我记得那时候为了建这个母版页,每天都是寝室最晚一个睡得,最先一个起的,在自己的努力下,终于学会了怎么建母版页,并运用于了我们的第一个项目,现在回头想了一下,现在觉得母版页其实挺简单了,就是这样一个简单的页面,对于一个初学者来说也是一个巨大的障碍,现在就说说我对前台布局的一些理解吧

用过都知道

<table>主要和<tr><td>配合,TR就是行,TD就是单元格,弄清楚位置还是很简单的,特别注意TD在占用行或者列的时候最好能画出整个表格方便来写代码哦.表格还能嵌套表格,可以把位置具体出来哦哦哦 .难点在于设置对齐方式和宽度,老是不容易弄好

<DIV>是个块,和CSS配合可以达到表格的效果,但代码简单清晰,可是不好掌握.容易引起各种各样的变形,对浏览器的兼容性也有需要提高. <form>是表单,基本上页面与大家数据互动就是靠这个了.里面填出好用的INPUT标签,改变其TYPE就可以使用了哦~~~没什么难度,就是以后再变成的时候注意ID和数据发送到地方 然后就是CSS哦.前面适合做框架,后面就靠着CSS来具体设置样式和装饰.CSS包含很多HTML标签自己不具备的属性,因此可以得到更多的设置,主要因为是CSS可以把各个元素都看成一个盒装块,可以拥有很多共同属性,这行属性像一个页面样能够很灵活的设置修改.CSS三种链接方式,看具体情况使用.

CSS声明一个选择器(就这个名字,没学个的人听了是不知道什么用处的,一点也不好听),然后再大括号里面加上属性和值就好.~~选择器是重点,因为方式主要有3种.类选择,直接输入标签名字,直接改动标签,一般是比较猛级别的.然后时候类和ID,类可以多个物体共用,而ID是制定特定的元素的.然后配合空格这个父子控制来具体选择.好用,好用,好用哦哦哦.

然后就是CSS的盒装模型,具有共同的外边距\边框\内边距,这3个属性,弄清楚了就可以随意设置了.

CSS控制位置就是用float和定位,这两个都比较麻烦,要多看多试才能理解吧

然后就是CLEAR用好了也能帮忙控制格式哦~~

然后上面就是我所学的前台界面的设计,后来也有学html5,现在流行的网页设计前台语言,说了这么多前台的再来说说后台,后台的代码包括数据访问主要还是曾老师所讲的那些,做第一个项目时,也是一点都不会,然后和同小组成员在一起做项目的时候,得到了大家的指点说这个可以用datalist来展示,尽管但是还觉得云里雾里,就按照他们说的做了,回去的时候,我用自己做了一遍,发现了它的神奇之处,就这样在半学半做的实施中完成了我们的第一个项目,然后是第二个项目,有了第一个项目的基础,做第二个项目时,少走了不少弯路,第二个项目有用到了数据集的方法,简化了做项目的困难,第二个相比于第一个项目有点很大的难度,我们小组遇到的难题,第一个是学生选课,退课和教师打分,这也是整个项目的灵魂,重点之所在,最开始也是不会,开始各种请教别人怎么做,最后还是完成了老师布置的第二个项目。

经过这一学期对WEB程序设计的学习,我收获了不少东西,首先我知道了一个自学的途径,那就是可以在网络上找视频教程,我觉得这比单纯的看书效果要好,毕竟网络视频里面都是现场给你演示,印象要深刻些,我也从中学到了不少东西,页了解了不少现在的一些常识,然后就是收获了属于自己的知识,这学期我学会了如果制作falsh广告,如何用javascript做出各种绚丽的效果,其中有一个是从别人那里学来的,就是可以用javascript做出烂漫的网页,我觉得效果还不错,现在基本对制作网站的流程有了一定的了解,我这个人不喜欢煽情,所以省略了一些学习的心路历程,通过曾老师WEB程序设计这门课确实学到了不少东西,有老师教的,也有自己自学的,我会把我的这种学习精神带到下学期,期待曾老师下学期的课!

 

第二篇:WEB程序设计练习题

JSP语法 一、 选择题

1. 下面那个方法能够读取给定HttpServletRequest request对象中的所有Cookie?

A. request.getCookies()

B. request.getAttributes()

C. request.getSession ().getCookies()

D. request.getSession (). GetAttributes()

答案: A

2. JSP页面需要创建仅在本页面使用的JavaBean的示例,为了完成此功能必须使用jsp:useBean的哪两个属性进行设置?(选择两个选项)

A. id

B. type

C. name

D. class

E. scope

F. create

答案: A, D Scope 默认值为page, 所以不需要进行设定. 两个必须指定的属性为ID 和 CLASS. 3. 给定程序片段:

<%--在此处插入代码--%>

<html>

<body>

Today is: <%= new Date() %>

</body>

</html>

为了能够让程序正确运行需要在第一行添加以下那条语句?

A. <%@ page import='java.util.Date' %>

B. <%@ import class='java.util.Date' %>

C. <%@ include file='java.util.Date' %>

D. <%@ include class='java.util.Date' %>

答案: A

4. 在页面转换阶段会发生以下哪三个事件? (选择三个选项.)

A. 调用jspInit方法

B. 创建JSP页面的实现类.

C. 对JSP页面的实现类进行编译

D. 对JSP页面的语法进行合法性检查,以判断是否符合JSP语法。.

E.对相关联的标记文件进行检查,判断是否符合语法要求

答案: B, C, D

5. QUESTION 15:

假定login.getName() 返回类型为java.lang.String ,给定JSP代码: Welcome <%= login.getName() %>

以下那个选项与此语句的功能相同?

A. Welocome <% out.print(login.getName());%>

B. Welocome <% Writer.print(login.getName());%>

C. Welocome <% response.out.print(login.getName());%>

D. Welocome <% response.writer.print(login.getName());%>

E. Welocome <% response.getoutputstream().Write(login.getName());%> 答案: A

6. QUESTION 16:

JSP开发人员希望所编写的注释能够最终输出到浏览器中,那么需要在JSP页面中使用哪中形式的注释?

A. <!-- this is a comment --> B. <% // this is a comment %> C. <%-- this is a comment -- %> D. <% /** this is a comment **/ %>

答案: A

7. QUESTION 21:

给定程序片段

11. <%java.util.Map map = new java.util.HashMap(); 12. request.setAttribute("map", map);

13. map.put("a","b"); 14. map.put("b","c");

15. map.put("c","d");%>

16. <%-- insert code here -- %>

在16行插入以下哪三个选项能够输出”d”?

(选择三个选项)

A. ${map.c} B. ${map[c]}

C. ${map["c"]}

D. ${map.map.b} E. ${map[map.b]}

F. ${map.map(map.b)}

答案: A, C, E

8. QUESTION 22:

在Web应用的部署描述文件中下面哪个选项能够将com.example.LoginServlet servlet 映射为 /utils/LoginServlet? A. <servlet> <servlet-class>com.example.LoginServlet</servlet-class>

<url-pattern>/utils/LoginServlet</url-pattern> </servlet> B. <servlet-mapping> <servlet-class>com.example.LoginServlet</servlet-class> <url-pattern>/utils/LoginServlet</url-pattern>

</servlet-mapping> C. <servlet> <servlet-mapping> <servlet-class>com.example.LoginServlet</servlet-class> <servlet-name>Login Servlet</servlet-name>

<url-pattern>/utils/LoginServlet</url-pattern> </servlet-mapping> </servlet> D. <servlet> <servlet-name>Login.Servlet</servlet-name>

<servlet-class>com.example.LoginServlet</servlet-class> </servlet>

<servlet-mapping>

<servlet-name>Login.Servlet</servlet-name> <url-pattern>/utils/LoginServlet</url-pattern>

</servlet-mapping>

答案: D

9. QUESTION 25:

在下面哪个两个web应用目录中可以放置所需要的class或类库? (选择两个选项)

A. /WEB-INF/lib放置jar文件

B. /META-INF/lib放置jar文件

C. /classes 放置已经编译的类文件

D. /WEB-INF/lib 放置已经编译的类文件

E. /WEB-INF/classes 放置已经编译的类文件

F. /META-INF/classes 放置已经编译的类文件

答案: A, E

10. QUESTION 31: A RequestDispatcher 从下面哪两个对象中获得? (选择两个选项.)

A. ServletConfig

B. ServletContext C. HttpServletRequest

D. HttpServletResponse

答案: B, C

11. QUESTION 33:

给定程序片段: 1. <% String value = "beanvalue"; %> 2. <% request.setAttribute ("com.example.bean", value); %>

3. <%--插入代码处--%>

在第3行插入哪个EL表达式,能够计算并输出"beanValue"?

A. ${bean} B. ${value}

C. ${beanValue} D. ${com.example.bean}

E. ${requestScope["com.example.bean"]}

F. ${request.get("com.example.bean").toString()}

答案: E

12. QUESTION 51:

假定用户的会话对象中存在属性cart,以下哪两条语句能够将该属性从session中删除?(选择两个选项)

A. ${cart = null}

B. <c:remove var="cart" />

C. <c:remove var="${cart}" /> D. <c:remove var="cart" scope="session" />

E. <c:remove scope="session">cart</c:remove> F. <c:remove var="${cart}" scope="session" />

G. <c:remove scope="session">${cart}</c:remove>

答案: D, E

13. QUESTION 52:

给定HttpServletRequest 请求对象及HttpServletResponse响应:

41. HttpSession session = null;

42. // insert code here

43. if(session == null) { 44. // do something if session does not exist

45. } else { 46. // do something if session exists 47. }

为了实现上面的设计意图,需要在42行插入以下哪条语句?

A. session = response.getSessionj(); B. session = requset.getSessionj(); C. session = response.getSessionj(true); D. session = response.getSessionj(false);

E. session = response.getSessionj("jsessionid"););

答案: D

14. QUESTION 57:

给定下面HttpServlet的service方法:

12. public void service(HttpServletRequest request,

13. HttpServletResponse response)

14. throws ServletException, IOException { 15. Httpsession s = request.getSession();

16. // insert code here 17. }

在16行插入以下哪条语句能够将session中的属性删除?

A. session.unbind("key");

B. session.remove("key");

C. session.removeAttribute("key");

D.session.unbindAttribute("key"); E.session.deleteAttribute("key");

答案: C

15. QUESTION 59:

当使用URL重写方式进行会话跟踪时,需要使用以下哪种方法对HttpServletResponse.sendRedirect方法所用的URL进行编码?

A. ServletResponse.encodeURL

B. HttpServletResponse.encodeURL C. ServletResponse.encodeRedirectURL

D. HttpServletResponse.encodeRedirectURL

答案: D

16. QUESTION 74:

以下那一个是HttpSession的方法、并能实现在session中存放数据?

A. put(String name. Object value)

B. set(String name. Object value)

C. setAttribute(String name. Object value)

D. putAttribute(String name. Object value) E. addAttribute(String name. Object value)

答案: C

17. QUESTION 86:

在JSP页面中,开发人员需要构建如下的动态代码:

10. if ( test1 ) {

11. // action1

12. } else if ( test2 ) {

13. // action2

14. } else {

15. // action3

16. }

下面个JSTL的结构能够实现相同的功能?

A. <c:choose>

<c:when test="test1" >action1</c:when>

<c:when test="test2">action2</c:when>

<c:when>action3</c:when>

</c:choose>

B. <c:choose>

<c:when test="test1">action1</c:when> <c:when test="test2">action2</c:when>

<c:otherwise>action3</:otherwise> </c:choose>

C. <c:if test="test1"> <c:then>action1</c:then> <c:else-if test=""test2">

<c:then>action2</c:then> <c:else>action3</c:else>

</c:else-if> </c:if> D. <c:if test="test1"> <c:then>action1</c:then> <c:else>

<c:if test="test2"> <c:then>action2</c:then> <c:else>action3</c:else> </c:if>

<c:else> <c:if>

答案: B

18. QUESTION 109:

假定在web应用中,请求参数productID包含产品的标识符,下面哪两个EL表达式能够计算productID的值?(选择两个选项)

A. ${product ID}

B. ${param.productID}

C. ${params.productID}

D. ${params.productID[1]} E. ${paramvalues.productID}

F. ${paramValues.productID[0]} G. ${pageContext.request.productID}

答案: B, F

19. QUESTION 115:

对于给定的JSP错误处理页面,下面那一个隐含对象能够指向未捕获的异常?

A. Error

B. exception

C. Throwable

D. Request error

E. Request exception

答案: B

20. QUESTION 116:

给定:

11. <%

12. requested.setAttribute("vals",new String[] {"1","2","3","4"}); 13. requested.setAttribute("index","2");

14. %>

15. <% -- 此处插入代码 --%> 在第5行插入下面哪三个EL表达式能够输出结果”3”?

A. ${vals.2 }

B. ${vals ["2"]} C. ${vals.index }

D. ${vals[index]} E. ${vals} [index] F. ${vals.(vals.index)}

G. ${vals[vals[index-1]]}

答案: B, D, G

21. QUESTION 131:

current.jsp用来显式当前的天气报告.天气包含被包含着在weather.html页面中,该页面每5分钟重写一次,下面哪条语句能够保证在使用current.jsp页面的时候能够包含最新的weather.html文件?

A. <%@ include file= "weather. html"%>

B. <%@ forward file= "weather. html"%>

C. <%@ include page= "weather. html"%>

D. <jsp:include page= "weather. html"%>

E. <jsp:forward page= "weather. html"%>

答案: D

22. QUESTION 147:

下面那一个JSTL代码片段能够实现导入其他web资源的功能?

A. <c:import url="foo.jsp"/>

B. <c:import page="foo.jsp"/>

C. <c:include url="foo.jsp"/>

D. <c:include page=*foo.jsp"/>

E. 无法使用JSTL完成导入功能,只能使用标准的动作完成此任务。

答案: A

23. QUESTION 151:

给定HttpServlet请求对象request以及HttpServlet响应对象response,下面哪条语句能够在servlet中创建cookie"username",并将值设为"joe"? A. request.addCookie ("username". "joe") B. request.setCookie ("username, "joe")

C. response.addCookie (username", "joe"))

D. request.addHeader (new Cookie ("username", "joe"))

E. request.addCookie (new Cookie ("username", "joe"))

F. response.addCookie (new Cookie ("username", "joe")) G. response.addHeader (new Cookie ("username", "joe"))

答案: F

24. QUESTION 160: 下面哪两个HTTPServlet的方法能够对客户端请求进行处理?(选择两个选项)

A. doGet

B. doPut

C. doPost

D. doTrace

E. doSubmit

F. doProcess

答案: AC

25. 在JSP程序中若想定义一个方法,必须将该方法放在下列哪种标记里 (A.<% %> B.<%@ %> C.<%! %> D.<%-- --%>

26. 以下哪个不是page指令的属性 ( D )

A.import B.pageEncoding C.errorPage D.content

27. 在当前页面中包含a.htm的正确语句是 ( D )

A.<%@ include=”a.htm”%>

B.<jsp:include file=”a.htm”/>

C.<%@ include page=”a.htm”%>

D.<%@ include file=”a.htm”%>

28. 以下脚本元素中有语法错误的是 ( C )

A. <%! int i=0;%>

B. <% int i=0;%>

C. <%=i;%> C )

D.<%i++;%>

29. JSP的全称是 ( B )

A. Java Servlet B. Java Server Pages C. Java Script Page D. Java Servlet Pages

30. 给定代码:

<html>

<body>

Today is: <%= new Date() %> </body>

</html>

为了让JSP页面能够正确运行,需要在空白处填写哪条语句? ( A )

A. < import= "java.util.Date" %> B. < class="java.util.Date" %> C. < file="java.util.Date" %> D. < class="java.util.Date" %>

31. 下面哪一项关于JSP的说法是不正确的 ( C )

A. 将内容的生成和显示进行分离 B. 能够跨平台

C. 可以直接在浏览器端解释执行 D. 采用标签简化页面开发

32. 以下哪个包不是page指令默认导入的 ( B )

A.java.lang.* B.java.util.* C.javax.servlet.* D.javax.servlet.jsp.*

33. 根据开发的需要,开发人员需要在当前页面中包含menu.jsp,下列那个选项不能够实现此功能: ( D )

A.<%@ include file=”menu.jsp” %> B.<jsp:include page=”menu.jsp” />

C.<c:import url=”menu.jsp”/> D.<jsp:import value=”menu.jsp”/>

34. 下面的哪个选项不能实现页面的跳转 ( A )

A.<jsp:redirect url=" someurl"/> B.<%response.sendRedirect("someurl");%>

C.<jsp:forward page="someurl" /> D.<c:redirect url="someurl"/>

35. 假设login.getName()方法返回值的类型为java.lang.String,那么对于JSP片段:Welcome <%= login.getName() %>,下面哪条语句的作用与其相同? ( A )

A. Welocome <% out.print(login.getName();%>

B. Welocome <% Writer.print(login.getName();%>

C. Welocome <% response.out.print(login.getName();%>

D. Welocome <% response.writer.print(login.getName();%>

36. 如果JSP开发人员希望所编写的注释,能够输出到客户端的浏览器,那么需要使用下列哪种类型的语句? ( A )

A. <!-- this is a comment -->

B. <% // this is a comment %>

C. <%-- this is a comment -- %>

D. <% /** this is a comment **/ %>

37. 根据开发的需要,开发人员需要在当前页面中包含menu.jsp,下列那个选项不能够实现此功能:

A.<%@ include file=”menu.jsp” %> ( D )

B. <jsp:include page=”menu.jsp” />

C. <c:import url=”menu.jsp”/>

D. <c:import value=“menu.jsp”/>

38. 下面哪一个不是JSP本身已加载的基本类?( B )

A、java.lang.* B、java.io.* C、javax.servlet.* D、javax.servlet.jsp.*

39. 对于预定义<%!预定义%>的说法错误的是:( C )

A、一次可声明多个变量和方法,只要以“;”结尾就行

B、一个声明仅在一个页面中有效

C、声明的变量将作为局部变量

D、在预定义中声明的变量将在JSP页面初始化时初始化

40. 在JSP中使用<jsp:getProperty>标记时,不会出现的属性是:( C )

A. name B. property C. value D. 以上皆不会出现

41. Page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是:( D )

A. <%@ page %>作用于整个JSP页面。 B. 可以在一个页面中使用多个<%@ page %>指令。

C.为增强程序的可读性,建议将<%@ page %>指令放在JSP文件的开头,但不是必须的。

D. <%@ page %>指令中的属性只能出现一次。

42. 在JSP中调用JavaBean时不会用到的标记是:( A )

A. <javabean> B. <jsp:useBean>

C. <jsp:setProperty> D. <jsp:getProperty>

43. jspForward1.jsp要把请求转发给jspForward2.jsp,应该在jspForward1.jsp中如何实现? ( A )

(A) <a href=“jspForward2.jsp”>jspForward2.jsp </a>

(B) <jsp:forward page=“jspForward2.jsp”>

44. 当浏览器第二次访问以下JSP网页时的输出结果是什么? ( C ) <!% int a=0; %>

<%

int b=0;

a++;

b++;

%>

a:<%= a %> <br>

b:<%= b %>

(A) a=0 b=0

(B) a=1 b=1

(C) a=2 b=1

45. 若在某JSP文件中有如下语句: ( D )

<%

out.println("hello");

out.clear();

out.println("Still say hello");

out.println("BufferSize of the out Object is : "+out.getBufferSize());

%>,其执行结果是: ( D )

(A) hello Still say hello

BufferSize of the out Object is : 8192

(B) hello

Still say hello

BufferSize of the out Object is : 8

(C) Still say hello

BufferSize of the out Object is : 8192

(D) Still say hello BufferSize of the out Object is : 8192

46. 以下哪个包不是page指令默认导入的 ( B )

A.“java.lang.*” B.”java.util.*” C.”javax.servlet.* ” D.” javax.servlet.jsp.*”

47. <fmt:bundle>标记中用于指明资源包全名的属性是 ( A )

A. basename B. path C. name D.dir

48. 用于设置本地属性的JSTL标记是 ( b )

A. <fmt:setTimeZone> B. <fmt:setLocale> C. <jsp:setProperty> D. <fmt:setBundle>

49. <c:out>标签中使用______属性表示要输出的内容。 ( a )

A.value B.name C.property D.object

50. 下面SQL标记库中的标记,哪个是用来修改数据库中的记录 ( a )

A.<sql:update> B.<sql:query> C.<sql:transaction> D.<sql:setDataSource>

51. 用于设置本地属性的JSTL标记是 ( b )

A. <fmt:setTimeZone> B. <fmt:setLocale> C. <jsp:setProperty> D. <fmt:setBundle>

52. 从资源文件中获取消息内容的JSTL标记是_____________ ( d )

A. <fmt:setTimeZone> B. <fmt:getMessage> C. <fmt:setBundle> D. <fmt: message>

53. 下列哪个EL函数用来消除字符串两端的空格 ( d )

A. ${fn:contains()} B. ${fn:startsWith()}

C. ${fn:indexOf()} D. ${fn:trim()}

54. 下面的哪个选项不能实现页面的跳转 ( a )

A.<jsp:redirect url=" someurl"/> B.<%response.sendRedirect("someurl");%>

C.<jsp:forward page="someurl" /> D.<c:redirect url="someurl"/>

55. 下列哪个EL函数用来消除字符串两端的空格 ( d )

A. fn:contains() B. fn:startsWith()

C. fn:indexOf() D. fn:trim()

56. 下面的哪个选项不能实现页面的跳转 ( a )

A.<fmt:redirect url=”someurl”/> B.<%response.sendRedirect(“someurl”);%>

C.<jsp:forward page=”someurl” /> D.<c:redirect url=”someurl”/>

57. JSTL的全称是 ( b )

A. Java Standard Tag Library B.JSP Standard Tag Library

C. Java Script Page Standard Tag Library D. JSP Server Tag Library

58. <c:out>标签中使用__a____属性表示要输出的内容。 ( )

A.value B.name C.property D.object

59. .在JSP页面中,开发人员希望使用动态代码实现如下功能:b . if ( test1 ) {

. // action1

. } else if ( test2 ) {

// action2

} else {

// action3

}

如果使用JSTL方式实现,下列那个选项能够实现上述的功能?

A. <c:choose>

<c:when test="test1" >action1</c:when>

<c:when test="test2">action2</c:when>

<c:when>action3</c:when>

</c:choose>

B. <c:choose>

<c:when test="test1">action1</c:when>

<c:when test="test2">action2</c:when>

<c:otherwise>action3</:otherwise>

</c:choose>

C. <c:if test="test1">

<c:then>action1</c:then>

<c:else-if test=""test2">

<c:then>action2</c:then>

<c:else>action3</c:else>

</c:else-if>

</c:if>

D. <c:if test="test1">

<c:then>action1</c:then>

<c:else>

<c:if test="test2">

<c:then>action2</c:then>

<c:else>action3</c:else>

</c:if>

<c:else>

<c:if>

60. <c:foreach>标签中使用 c 属性表示集合中的一个元素。

A collection B items C var D varStatus

61. JSP的全称是 ( a )

A. Java Server Pages B. Java Server Page

C. JavaScript D. Java Servlet

62. 下列选项中不属于服务器端动态网页技术的是

A. ASP B. JSP c )(

C. JavaScript D. PHP

63. Tomcat服务默认情况下使用的端口号是 ( b )

A. 8000 B. 8080 C. 8888 D. 80

64. 在JSP程序中若想定义一个方法,必须将该方法放在下列哪种标记里 ( c )

A.<% %> B.<%@ %> C.<%! %> D.<%-- --%>

65. 下面哪一个属性不是<%@ page %>标签的属性 ( d )

A. language B. contentType

C. import D. name

66. 使用request对象的getParameter()方法可以读取一个输入控件的哪个属性值 ( b )

A. type B. value C. size D. name

67. 表单标记中的action属性的作用是 ( c )

A. 为表单命名 B. 调用客户端验证方法

C. 指明表单信息发送的目的地址 D. 声明表单的提交方式

68. 在使用单选按钮时,为了达到单选效果,属于同一组单选按钮的哪个属性必须保持一致( b )

A. option B. name C. value D. size

69. 下列哪个对象不属于JSP的内置对象 ( c )

A. request B. response C. cookie D. session

70. 当a.jsp发生错误时能定向到另一个错误处理页面b.jsp,那么a.jsp文件中应该定义page指令里的哪一个属性。 ( d )

A.session B. isErrorPage

C. buffer D. errorPage

71. 在JDBC中,使用下列哪个接口来描述结果集 ( c )

A. Statement B. Connection C. ResultSet D. DriverManager

72. 使用Statement对象的方法运行SQL语句时,如果是查询语句(select),通常使用下列哪个方法 ( d )

A. getConnection() B. executeUpdate() C. createStatement() D. executeQuery()

73. 下面哪一个属性不是<jsp:useBean>标签中用到的属性 ( a )

A. name B. class C. id D. scope

74. 在JSP中,可以声明使用JavaBean组件,同时可以给Bean组件的相应属性赋值,下面哪一个标签可以给JavaBean组件的属性赋 ( d )

A. <jsp:useBean>标签 B. <jsp:plugin>标签

C. <jsp:getProperty>标签 D. <jsp:setProperty>标签

75. 执行数据库操作时,下面哪一个SQL语句是正确的。 ( b )

A. select * from table student B. update student set age=age+1

C. delete * from student D. drop from student

76. 如果某个类要成为Servlet,则它应该继承如下哪个类 ( b )

A. HttpServletRequest B. HttpServlet C.HttpServletResponse D. GenericServlet

77. 在Servlet的生命周期中,不会调用的方法是 ( d )

A. init() B. service() C. destory() D .run()

78. 下面哪一条语句的语法是正确的 ( d )

A. <%= request.getParameter("name");%>

B. <%!String name="abc" %>

C. <% session.getAttribute("name",name);%>

D. <% String name2=null;%>

79. 以下关于JavaBean的描述错误的是

( c )

A. JavaBean是一个公有java类 B. JavaBean提供给外界使用的方法是公有类型的

C. JavaBean必须有一个带参构造方法 D. 在JSP中使用的JavaBean必须放在一个有名包中

80. 对于声明语法<%!%>的说法错误的是:(c)

A、一次可声明多个变量和方法,只要以“;”结尾就行 B、一个声明仅在一个页面中有效

C、声明的变量将作为局部变量 D、在预定义中声明的变量将在JSP页面初始化时初始化

81. 在JSP中使用<jsp:getProperty>标记时,不会出现的属性是:( c )

A. name B. property C. value D. 以上皆不会出现

82. Page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是:

(D )

A. <%@ page %>作用于整个JSP页面。

B. 可以在一个页面中使用多个<%@ page %>指令。

C. 为增强程序的可读性,建议将<%@ page %>指令放在JSP文件的开头,但不是必须的。

D. <%@ page %>指令中的属性只能出现一次。

83. 在JSP中调用JavaBean时不会用到的标记是:( A )

A.<javabean> B. <jsp:useBean> C. <jsp:setProperty> D. <jsp:getProperty>

84. 不能在不同用户之间共享数据的方法是(A )

A、通过cookie B、利用文件系统 C、利用数据库 D、通过ServletContext对象

二、填空题

1. Jsp page指令其language属性默认值__java_____;

2. Jsp注释中一种是__Java注释_____,其注释语法为____// 或/*_____*/_______.另一种注释是___Jsp注释________,其语法为___<%-- --%>

3. 从资源文件中读取消息内容的JSTL标记是___<fmt:message>__。

4. ${fn:substringAfter("Welcome#To JSP World","#")}的输出结果为____ To JSP World _______。

5. 为了让所开发的应用能够支持多国语言,可以使用JSTL标准标记库中的

___<fmt:bundle>____或__<fmt:setBundle>_ 标记将所需要的资源文件引入到JSP页面中。

6. 假定在一个Web应用中,我们创建了两个支持英文和中文的语言资源文件,它们分别为Resource.properties和Resource_zh_CN.properties,为了使我们开发的JSP页面能够支持国际化操作,需要在JSP使用JSTL的__<fmt:bundle>______或___<fmt:setBundle>______标记将资源文件包含到本页面中。

7. <c:if>标签的作用是 条件判断 。

8. <c:set>标签的作用是 将EL表达式的值存储在一个变量中 。

9. <c:forEach>标签的作用是 循环迭代 。

10. <c:out>标签的作用是 输出 。

11. <c:forTokens>标签的作用是 处理字符串中由指定分隔符分隔的各个子串 。

12. 在本机上安装了Tomcat服务器,使用的均为默认安装选项,将自己编写的test.jsp文件放在Tomcat安装目录\ webapps\ examples目录里,那么在本机的浏览器中要访问test.jsp文件,应使用的url地址为 http://localhost:8080/examples/test.jsp 。

13. 当getParameter()方法的参数部分指定的输入控件不存在时,该方法的返回值为 null 。

14. 列表框的name属性值为“city”,并且允许多选,若要一次读取所有的选中项并存放于数组str中,则对应的java语句为 String[] str = request.getParameterValues(“city”); 。

15. 若要修改Tomcat服务默认使用的端口号,可以在___server.xml__文件中修改。

16. page指令中language属性的默认值是_java___;isErrorPage属性的默认值是____false____;buffer属性的默认值是___8kb____。

17. 用response对象的___addCookie_____________方法可以将cookie对象写入客户端。

18. .已知文件look.jsp的路径为c:/myjsp/inc,文件login.jsp的路径为c:/myjsp。若使用response的重定向方法由look.jsp跳转到login.jsp中,则正确的写法

为 response.sendRedirect(“../login.jsp”) 。

19. 在Tomcat中,所有编译好的JavaBean都需要放在某个应用目录下的

_WEB-INF/classes_目录之下。

三、简答题

1. 请对JSP给出一个正确的定义,同时至少列举出它的三个特点。

2. 请至少列举出三个JSP中常用的内置对象并简要说明它们各自的功能。

3. 请简要说明编写一个数据库应用程序的基本流程。

4. 请简要说明编写一个JavaBean需要遵循的规范。

5. 请简要说明Servlet的生命周期分为几个阶段及各阶段调用的主要方法。

6. 简述JSP页面的工作原理。

(1) 客户端请求向JSP容器(如Tomcat)发出对JSP页面的请求;

(2) JSP容器将对应的JSP页面转换成Java Servlet源代码;

(3) JSP容器编译Servlet源代码,生成.class文件;

(4) JSP容器加载运行.class文件,生成响应结果;

(5) JSP容器把响应的输出结果发送到客户端。

7. JSP页面中注释有哪几种?

(1) Html注释:会输出到客户端浏览器,但不进行显示;

语法: <!-- 这是HTML注释 -->

(2) Java注释:不会输出到客户端,但会被JSP引擎解释,写入生成的Servlet类中

单行注释://

多行注释:/* */

(3) JSP注释: 用于描述JSP程序代码,不会被JSP引擎解释,也不会输出到客户端。

语法:<%-- 这是隐藏的注释 --%>

8. JSP容器支持的元素类型有哪几种?

(1) 脚本元素

(2) 指令元素

(3) 动作元素

(4) 表达式语言(EL)

9. 如何使用JSP页面来处理运行时错误?

通过page指令的errorPage和isErrorPage属性处理错误。例如:

testerror.jsp

<%@ page errorPage="dealerror.jsp"%>

<%

/* 可能产生异常的代码 */

%>

dealerror.jsp

<%@ page contentType="text/html;charset=gb2312" isErrorPage="true"%>

<%

/* 对异常的处理代码 */

%>

10. 请列出三个JSP标准动作,并说明这些动作完成的功能

(1) <jsp:include>动作:在JSP页面的执行过程中动态地加入外部的资源,外部的资源可以是

html或jsp文件

(2) <jsp:forward>动作:允许将当前的请求转发至另一个动态页面或Servlet

(3) <jsp:param>动作:用来给JSP页面传递参数

11. 请列出JSP对象的四种作用范围,以及对应的内置对象。(5分)

12. 请列出JSTL标记库的5类标准标记库的名称。(5分)

13. 分别介绍<c:foreach>和<c:fortokens>标签的作用,以及他们之间的区别

14. 请列出<c:if>标签的常用属性,并举例说明<c:if>标签的用法。

15. EL中隐含对象param的作用是什么?

16. 在EL中访问变量的值可以使用如下的EL元素:${变量名},如果没有指定变量的有效范围,JSP容器会依次到哪几个范围内查找该变量?

17. <% String a = “a book”; %> <% pageContext.setAttribute( “b”, a ); %> 要使用EL访问该字符串,是用${a}还是${b}?

18. EL表达式语言中支持算术运算符+、-、*、/ 吗?

19. jsp有哪些内置对象?作用分别是什么?

application对象代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息。

Config对象允许将初始化数据传递给一个JSP页面

Exception对象含有只能由指定的JSP“错误处理页面”访问的异常数据。

Out对象代表提供输出流的访问

Page对象代表JSP页面对应的Servlet类实例

PageContext对象是Jsp页面本身的上下文,它提供唯一一组方法来管理具有不同作用域的属性

Request对象提供对Http请求数据的访问,同时还提供用于加入特定请求数据的上下文 Response对象允许直接访问HttpServletResponse对象

Session对象可能是状态管理上下文中使用最多的对话

20. jsp有哪些动作?作用分别是什么?

<jsp:param>操作被用来以“名—值”队的形式为其他标签提供附加信息

<jsp:include>操作允许在请求是在现成的JSP页面里包含静态或者动态资源

<jsp:forward>操作允许将请求转发到另一个JSP、servlet或静态资源文件

<jsp:useBean>标签用来在JSP页面中创建一个JavaBean实例并指定他的名字以及作用范围 <jsp:setProperty>此操作和setBean一起协作,用来设置JavaBean的属性

<jsp:getProperty>操作是对<jsp:setProperty>操作的补充,用来访问一个Bean的属性 <jsp:plugin>用来产生客户端浏览器的特别标签,可以使用它来插入Applet和JavaBean <jsp:fallback>

21. JSP中动态INCLUDE与静态INCLUDE的区别?

如果文件仅仅是静态文件,那么这种包含仅仅是把包含文件的内容加到JSP文件中去,但这个被包含文件不会被JSP编译器执行。相反,如果这个被包含文件是动态的文件,那么他将被JSP编译器执行。如果是动态文件还可以用<jsp:param>传递参数

22. JSP的内置对象及方法

答:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。

response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)

out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果

pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法

session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息

config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 page表示从该页面产生的一个servlet实例。

23. MVC缩写的含义,以及各个部分通常实现技术?

24. 两种跳转方式分别是什么?有什么区别?

<jsp:include page="included.jsp" flush="true">

<jsp:forward page= "nextpage.jsp"/>

<jsp:include>操作允许在请求是在现成的JSP页面里包含静态或者动态资源

<jsp:forward>操作允许将请求转发到另一个JSP、servlet或静态资源文件

25. JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

答:JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

四、程序阅读题

1. 阅读下列程序,回答后面的问题。

文件名称:index.jsp

<%@ page contentType="text/html;charset=GBK" %>

<html>

<body bgcolor="white" >

这里是显示结果:<br>

<jsp:include page="in.htm"/> <p>

</body>

</html>

文件名称:in.htm

<a href=”contact.html”>联系我们</a><a href=”map.html”>网站地图</a>

<a href=”manager.html”>站务管理</a>

(1)简要说明页面中出现的<%@ page %>的作用。

设置输出文件的类型和字符集

(2)访问index.jsp页面,写出该页面的输出结果。

这里是显示结果:

联系我们网站地图站务管理

2. 请写出如下程序的运行结果:

<%@ page contentType="text/html; charset=gb2312" %>

<%! private int demoValue=56;

public int getValue()

{

return demoValue; }

%>

<html><body>

第一个表达式,value的值是<%=demoValue%> <br><!-- 表达式是一个变量-->

第二个表达式,value的值是<%=getValue()%><br><!--表达式是一个具有返回值的函数--> 第三个表达式,<%=new String("test")%><!--表达式是一个对象-->

</body></html>

第一个表达式,value的值是56

第二个表达式,value的值是56

第三个表达式,test

3. 有如下的JavaBean

package aaa;

public class A

{

private int num;

public void setNum(int num)

{ this.num = num; }

public int getNum()

{ return num; }

}

并通过<jsp:useBean class=”aaa.A” id=”mybean” />创建了一个JavaBean的实例

现要求使用EL表达式语言取得mybean的num属性值,该EL表达式该怎么写?

4. 阅读下列程序(index.jsp和title.htm),回答问题。

文件名称:index.jsp

<html><body>

<%@ page contentType=”text/html;charset=gb2312”%>

<%@ include file=”title.htm”%>

您好,欢迎您的到来!

</body></html>

文件名称:title.htm

<a href=”index.jsp”>回到首页</a>

<a href=”news.jsp”>校园新闻</a>

<a href=”forum.jsp”>师生论坛</a>

<br>

(1)简要说明index.jsp文件中出现的<%@ include%>指令的作用。(2分)

(2)访问index.jsp页面,写出该页面的输出结果。(3分)

5. 阅读下列程序(forward.jsp和forforward.jsp)

文件名称:forward.jsp

<html><body>

<jsp:forward page="forforward.jsp">

<jsp:param name="name" value="Andy"/>

<jsp:param name="friend" value="<%=request.getParameter(\"friend\")%>"/>

</jsp:forward>

</body></html>

文件名称:forforward.jsp

<%=request.getParameter("name")%>

and

<%=request.getParameter("friend")%>

are good friends!

(1)在浏览器的地址栏中输入http://127.0.0.1:8080/myjsp/forward.jsp?friend=Jack后回车,写出页面上的输出结果。(3分)

(2)本例中使用了<jsp:forward>动作进行重定向,请问页面执行完毕后,浏览器地址栏中的文件名仍保持forward.jsp文件名不变,还是改变为重定向后的新文件名forforward.jsp?(2分)

6. 阅读下面程序test.jsp,回答问题。

文件名称test.jsp

<%@ page contentType="text/html;charset=gb2312" import="java.sql.*"%>

<html><body>

<%

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection con =DriverManager.getConnection("jdbc:odbc:mydsn","","");

Statement stmt=con.createStatement();

ResultSet rs=stmt.executeQuery("select * from book where price>35.0");

while(rs.next())

{

out.print(rs.getString(2));

out.print(rs.getDouble(4));

out.print(“<br>”);

}

rs.close();

stmt.close();

con.close();

}

catch(SQLException e)

{ out.println(e.getMessage()); }

%>

</body></html>

数据源已配置完成,其中book表的内容如下所示:

bookID(文本型) bookName(文本型) publisher(文本型) price(双精度型) 001-22-23-1 J2EE应用开发 清华大学出版社 66.5

001-22-23-2 Java编程思想 机械工业出版社 35.0

001-22-23-3 JSP应用开发详解 电子工业出版社 59.9

(1)请写出本程序中所使用的数据库驱动程序的名称(驱动程序类名)。(2分)

(2)访问test.jsp页面,写出该页面的输出结果。(3分)

7. 阅读下列程序(JiSuanQi.java和act.jsp),回答问题。

文件名称:JiSuanQi.java

package jisuan;

public class JiSuanQi {

private String value1;

private String value2;

private String op;

public JiSuanQi() {

value1 = "";

value2 = "";

op = "";

}

public void setValue1(String v1) { value1 = v1;

}

public void setValue2(String v2) { value2 = v2;

}

public void setOp(String o) { op = o;

}

public String jiSuan() {

int v1 = Integer.parseInt(value1); int v2 = Integer.parseInt(value2); int result=0;

if(op.equals("+")) {

result = v1 + v2;

}

else if(op.equals("-")) { result = v1 - v2;

}

else if(op.equals("*")) {

相关推荐