1
2
3
4
5
6
7
Web程序设计考试
选择填空知识点及试卷分值分布:
选择:25分,Web前台技术10分,JSP15分
填空:15分,Web前台技术(js代码阅读),JSP
程序阅读:10分
简答:20分,简答:4题
综合:30分,设计:2-3题

选择填空

Web

Web前台技术题目可参考Web前台技术题库(类似)。

JSP部分

1)jsp执行结果

2)include的使用

1
2
3
4
include指令
<%@ include file="head.jsp"%>
<jsp:include>动作元素
<jsp:include page="head.jsp"/>

3)JSP各标记(如<% %>)的规范写法

4)JSP运行所需的环境

JDK 和 tomcat

5)bean的作用范围

6)bean有关的动作标记

使用bean:
<jsp:useBean id="aver" type="bean.data.SaveNumber" scope="request"/>

获得属性值:
<jsp:getProperty name="aver" property="firstNumber"/>

设置属性:
<jsp:setProperty name="aver" property="firstNumber"/>

7)Java操作文件的常用流

字节输入流:FileInputStream 字符输入流:FileReader
字节输出流:FileOutputStream 字符输出流:FileWriter

8)file对象的常用方法

创建:
  createNewFile()指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false。
  mkdir() 在指定位置创建一个单级文件夹。
  mkdirs() 在指定位置创建一个多级文件夹。
  renameTo(File dest)如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是在同一个路径下,那么renameTo的作用就是剪切,而且还不能操作文件夹。

删除:
  delete() 删除文件或者一个空文件夹,不能删除非空文件夹,马上删除文件,返回一个布尔值。
  deleteOnExit()jvm退出时删除文件或者文件夹,用于删除临时文件,无返回值。

判断:
  exists() 文件或文件夹是否存在。
  isFile() 是否是一个文件,如果不存在,则始终为false。
  isDirectory() 是否是一个目录,如果不存在,则始终为false。
  isHidden() 是否是一个隐藏的文件或是否是隐藏的目录。
  isAbsolute() 测试此抽象路径名是否为绝对路径名。

获取:
  getName() 获取文件或文件夹的名称,不包含上级路径。
  getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系
  length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
  getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
  lastModified()获取最后一次被修改的时间。

9)JSP常用的动作指令

include、param、forward、useBean

10)分页的使用

总页数=(m%n)== 0 ? (m/n): (m/n+1)

11)Servlet常用的方法

init、service、destory

12)对象的宽度表示

13)颜色的表示方法

RGB、#FFFFFF

14)html常用标记

15)表单对象常用属性

16)request和response常用属性

17)JSP内置对象作用

request、response、application、out

18)JSP开发网站常用模式,如mvc

19)js输出、字符与数字转换

简答

1)简述层叠样式表(css)的分类。(Web前台技术)

  • 简述层叠样式表的分类
    • 外部样式表:
      • 将css代码和html代码单独放在不同文件中,
      • 然后再HTML文档中使用link标签来引用css样式表。
    • 内部样式表:
      • 把HTML代码和CSS代码放在同一个文件中。
      • 其中CSS代码放在<style></style>标签对是放在head签对内的。
    • 内联样式表(内嵌样式表):
      • 把HTML代码和CSS代码放在同一个文件中。
      • CSS样式放在style属性中进行定义。

外部样式表:(位于外部的.css文件中,通过link元素引入)

1
<link href="xxx.css" rel="stylesheet" style="text/css">

内部样式表:(位于<head>标签内部)

1
<style>p  { font-size:24px;}</style>

内联样式表:(在HTML元素内部)

1
<span style="background-position:center"></span>
  • 一个CSS样式的语法的组成部分:

    • 选择器、属性、属性值。
  • 选择器的分类:

I.元素选择器:例如:将页面中所有的h2元素选中,并将所有的h2元素设置颜色为silver;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<head>
<style type="text/css">
h2 {color:silver;}
</style>
</head>

<body>
<h1>这是 heading 1</h1>
<h2>这是 heading 2</h2>
<p>这是一段普通的段落。</p>
</body>
</html>

II.id选择器:例如:选择id为name的元素,然后将其元素设置CSS属性”color:red;”。

1
2
3
4
5
6
7
8
<head>
<style type=”text/css”>
#name{color:red;} <!--id名前面必须加上’#’-->
</style>
</head>
<body>
<div id=”name”>content</div>
</body>

III.class选择器:例如:选中class为lv的所有元素,然后设置属性”color:red;”。

1
2
3
4
5
6
7
8
9
<head>
<style type=”text/css”>
.lv{color:red} <!--必须加上’.’-->
</style>
</head>
<body>
<p class=”lv”>content</p>
<span class=”lv”>content</span>
</body>

IV.子元素选择器:例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#father1 div{color:blue;}表明选择id为father1元素下的所有div元素;
#father2 #p1{color:red;}表明选择id为father2元素下的子元素,其中子元素的id为p1;

<head>
<style type=”text/css”>
#father1 div{color:blue;}
#father2 #p1{color:red;}
</style>
</head>
<body>
<div id=”father1”>
<div>content</div>
</div>
<div id=”father2”>
<p id=”p1”>content</p>
</div>
</body>

V.相邻选择器:例如:#lv+div{color:red;}表明选择id为lv元素的相邻的下一个同级兄弟元素div,即第二个div。

1
2
3
4
5
6
7
8
9
<head>
<style type=”text/css”>
#lv+div{color:red;} <!--此’+’别忘了加了-->
</style>
</head>
<body>
<div id=”lv”>content_1</div>
<div>content_2</div>
</body>

VI.群组选择器:同时对几个选择器进行同样的操作。

1
2
3
4
5
<head>
<style type=”text/css”>
div,p,span{color:red;} <!--此’,’别忘了加了-->
</style>
</head>

2)include标记与include动作标记有什么区别?/ Jsp常见的动作标记? P25

  • include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖于当前的JSP页面,其优点是页面的执行速度快。

  • include动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面,其优点是可以使用param子标记更灵活地处理所需要的文件,缺点是执行速度要慢一点。

  • include标记与include动作标记有什么区别

include指令标记 include动作标记
简介 <%@include %>页面转换期间发生作用,包换文件的实际内容,准换位一个servlet,编译慢,执行快 <jsp:include page=>请求期间发生作用,包含页面的输出,转换为独立的servlet,编译快,执行慢
作用 include指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件. include动作标记告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。
加入方式 当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。加入后才是一个完整的页面 如果包含的文件是普通的文本文件,就将文件的内容发送到用户端,由用户端的浏览器负责显示; 如果包含的文件是JSP文件,JSP引擎就执行这个文件,然后将执行的结果发送到用户端,并由用户端的浏览器负责显示这些结果。作为附属资源加载时加入
加入时间 首次访问时,服务器合成加入 JSP页面运行时才将文件加入
注意 加入后文件和加入前文件不能存在语法冲突,比如不能两次使用page指令为contentType属性设置不同的属性值 文本文件直接发到客户端,而JSP文件由服务器执行然后将结果发到客户端

  • JSP常见的动作标记:
    <jsp:include><jsp:param><jsp: forward ><jsp: useBean >

  • ​ ①include动作标记:

1
2
3
4
5
<jsp:include page=”URL” />
或者:
<jsp:include page=”URL”>
param子标记
</jsp>
  • ​ ②param动作标记
    键值对形式
1
2
3
4
5
6
7
<jsp:param name=”属性名字” value=”属性的值” />
③forward动作标记::
<jsp:forward page=”转向的页面” />
或者:
<jsp:forward page=”转向的页面” />
param 子标记
</jsp>
  • ​ ④plugin动作标记
    指示JSP页面加载JAVA plugin插件。该插件右用户负责下载,并使用该插件来运行java applet 小程序。
  • ​ ⑤useBean动作标记
    用来创建并使用一个javabean。

3)请说出一个JSP页面的基本组成。/JSP页面的执行步骤

  • 一个JSP页面的基本组成

    • JSP页面可由5种元素组合而成:
      ① 普通的HTML标记符;
      ② JSP标记,如指令标记、动作标记;
      ③ 变量和方法的声明;
      ④ Java程序片;
      ⑤ Java表达式 ;
  • JSP页面的执行步骤

    • 把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。
    • JSP标记、数据和方法声明、Java程序片由Tomcat服务器负责执行,将需要显示的结果发送给客户的浏览器。
    • Java表达式由Tomcat服务器负责计算,将结果转化为字符串,交给客户的浏览器负责显示。

    当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译生成字节码文件,然后通过执行字节码文件响应用户的请求。当多个用户请求一个JSP页面时,JSP引擎为每个用户启动一个线程,该线程负责执行常驻内存的字节码文件来响应用户的请求。

4)JSP中常用的内置对象。/简述request对象和response对象的作用。/session对象与application对象区别?

  • 常用的内置对象:request、response、session、application、out

  • JSP中常用的内置对象。

    • JSP中常用的内置对象:
      page对象
      config对象
      out对象
      response对象
      request对象
      session对象
      application对象
      pageContext对象
      exception对象
  • 简述request对象和response对象的作用。

    • request对象的作用:获取用户提交的信息
      • 内置对象request封装了用户请求页面时所提交的信息,该对象调用相应的方法可以获取封装的信息。即request对象可以获取用户提交的信息。
  • 可以用response对象对用户的请求做出动态响应,向用户端发送数据。

    • response对象的作用:对用户的请求作出动态响应,向用户端发送数据
  • session对象与application对象区别

    • session:用户访问到离开网站的期间; application:用户间数据共享,从服务器启动到关闭
    • 应用范围不同:Session是对应某一个用户的。而application是整站共用的。
    • 存活时间不同:Session在窗口关闭后就消失了,Application在服务器关闭才消失
  • HTTP协议是一种无状态协议。一个用户向服务器发出请求(request),然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一用户。

session application
对象 每个用户都对应着一个session对象(该用户的会话),不同用户的session对象互不相同,即具有不同的Id号码。 任何客户在所访问的服务目录的各个页面浏览时,application对象都是同一个.
值访问 Session对象中存储的值在整个用户会话过程中都可以访问到该值 Application对象中存储的值在整个服务器运行过程中都可以访问到该值
会话 Session对象是单会话、多页面的 Application对象是多会话、多页面的
例子 一人购物车 多人一个留言版

5)常见的表单提交的汉字处理方式?

  • 1.对信息重新编码
    • 将获取的字符串用ISO-8859-1进行编码
    • 将编码存放到一个字节数组中
    • 然后再将这个数组转化为字符串对象
1
2
3
String str=request.getParameter("girl");
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
  • 2.request设置编码
1
request.setCharacterEncoding(“GB2312”);

6)JavaBean的作用范围有哪几种?

scope取值:page(页面)、session(会话)、request(请求)、application(站点)
通过getAttribute()方法来获得

  • page:① 通过<jsp:forward>标签将请求转发到另一个文件。② 客户请求访问的JSP页面执行完毕并向客户端发送响应。
  • request: ① 客户请求访问的当前JSP页面② 和当前JSP页面共享同一个请求的页面,包括<%@ include%>指令以及<jsp:forward>标记包含的其他JSP文件。③ 当所有共享同一个客户请求的JSP页面执行完毕并向客户端发回响应时,JavaBean对象结束生命周期。
  • session:JavaBean对象被创建后,它存在于整个Session的生命周期内,同一个session中的所有JSP文件共享这个JavaBean对象。
  • application:在整个Web应用的生命周期内,Web应用中的JSP文件都能共享同一个JavaBean对象。

7)字节流和字符流有何区别?

字节输入流:InputStream
字符输入流:FileReader

文件字节输入、输出流的read和write方法使用字节数组读取数据,即以字节为单位处理数据。因此,字节流不能很好地操作Unicode字符。比如,一个汉子在文件中占用两个字节,如果使用字节流,读取不当会出现“乱码”现象。

stream结尾是字节流,reader和writer结尾都是字符流,一个是按字节读写,一个是按字符。在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,一般选择字节流。

8)简述RandomAccessFile访问文件的特点及两个构造方法。

RandomAcessFile类既不是输入流类InputStream类的子类,也不是输出流OutputStream类的子类。习惯上,仍然称RandomAcessFile类创建的对象为一个流。
RandomAcessFIle流的指向既可以作为源也可以作为目的地。换句话说,当对一个文件进行读写操作时,可以创建一个指向该文件的RandomAcessFile流,这样既可以从这个流读取文件的数据,也可以通过这个流向文件写入数据。

1.只能操作文件2.既能读,有能写3.维护了一个byte数组,内部定义了字节流的读取和写入4.通过对指针的操作可以实现对文件的任意位置的读取和写入

构造方法:
1.RandomAcessFile(String name,String mode)
name:文件名
mode:“r”(只读)、“rw”(可读写)
2.RandomAccssFile(File file,String mode)
file:File对象,给出创建的流的源
mode:“r”(只读)、“rw”(可读写)

9)如何处理文件读写操作中发生的异常?

Try-catch

10)什么是JDBC编程接口?

jdbc是用来对数据库进行操作的函数库,对屏蔽了数据库不同导致的不同访问方法,只需设置连接字符串便可实现对不同数据库的访问。

11)采用JDBC操作数据库(如MySQL)的步骤?

加载JDBC驱动:Class.forName(“com.mysql.cj.jdbc.Driver”);
建立连接: DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);

加载JDBC驱动程序;提供连接的URL;创建数据库连接;创建Statement;执行SQL语句;处理结果;关闭JDBC对象

12)加载SQL Server Java驱动程序的代码?

Class.forName(“com.mysql.cj.jdbc.Driver”);

13)Connection对象中url参数主要包括的内容。

1
2
DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
DriverManager.getConnection("jdbc:mysql://localhost:3306/"+dbname+"?user="+username+"&password="+password);

14)使用预处理语句和存储过程有什么好处?

事先将SQL语句解释为数据库底层的内部命令,然后直接让数据库去执行这个命令,显然不仅减轻了数据库的负担,而且也提高了访问数据库的速度。

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。

查询只需要被解析一次,但可以使用相同或不同的参数执行多次。当查询准备好后,编译并优化执行查询的计划。对于复杂查询,使用一个预处理语句你就可以避免重复分析、编译、优化的环节。预处理语句使用更少的资源,执行速度也就更快

15)Bean的作用域和生命周期;

page范围:与当前页面相对应,JavaBean的生命周期存在于一个页面之中,当页面关闭时JavaBean被销毁。

request范围:与JSP的request生命周期相对应,JavaBean的生命周期存在于request对象之中,当request对象销毁时JavaBean也被销毁。

session范围:与JSP的session生命周期相对应,JavaBean的生命周期存在于session会话之中,当session超时或会话结束时JavaBean被销毁。

application范围:与JSP的application生命周期相对应,在各个用户与服务器之间共享,只有当服务器关闭时JavaBean才被销毁。

这4种作用范围与JavaBean的生命周期是息息相关的,当JavaBean被创建后,通过<jsp:setProperty>标签与<jsp:getProperty>标签调用时,将会按照page、request、session和application的顺序来查找这个JavaBean实例,直至找到一个实例对象为止,如果在这4个范围内都找不到JavaBean实例,则抛出异常。

16)试述Servlet对象及其生命周期。/Servlet类的几个方法/ RequestDispatcher对象作用。

JSP的根基时Java Servlet技术,该技术的核心就是在服务器端创建能响应用户请求的对象,被创建的对象习惯上称为一个servlet

生命周期:
(1)初始化servlet。servlet第一次被加载时,调用init方法完成初始化。
(2)新诞生的servlet再调用service方法响应用户的请求
(3)当服务器关闭时,调用destroy方法销毁servlet
init和destory只在初始化和销毁的时候被调用一次,用户访问servlet时启动一个新的线程调用service方法。

RequestDispatcher对象的使用:
   RequestDispatcher  rd = getServletContext().getRequestDispatcher("/index.jsp");
   rd.forward(request,response);

17)MVC模式的核心思想是什么?

MVC的核心思想是将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。

18)谁来担当MVC模式的视图、模型和控制器角色?

模型Model:javabean对象
视图View:jsp页面
控制Controller:servlet对象

19)使用MVC模式有什么好处?

分离职责,低耦合

20)<jsp:forward>、response.sendRedirect()及转发的异同 ?

<jsp:forward>
地址栏没有改变,是服务器跳转,地址栏不变

response.sendRedirect()
地址栏改变了,是客户端跳转,不可以传递request属性

  • <jsp:forward>response.sendRedirect()转发的异同
<jsp:forward> response.sendRedirect()
forward重定向是在容器内部实现的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变 sendRedirect方法可以重定向到任何URL, 因为这种方法是修改http头来实现的,URL没什么限制,重定向后浏览器地址栏URL改变
forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例 采用sendRedirect方式两者不是同一个application
基于第二点,参数的传递方式不一样。forward的form参数跟着传递,所以在第二个实例中可以取得HTTP请求的参数。 sendRedirect只能通过链接传递参数,response.sendRedirect(“login.jsp?param1=a”)
RequestDispatcher.forward是直接在服务器中进行处理,将处理完后的信息发送给浏览器进行显示,所以完成后在url中显示的是跳转前的页面。在forward的时候将上一页面中传送的request和response信息一同发送给下一页面(而response.sendRedirect不能将上一页面的request和response信息发送到下一页面)。由于forward是直接在服务器中进行处理,所以forward的页面只能是本服务器的。 response.sendRedirect是向客户浏览器发送页面重定向指令,浏览器接收后将向web服务器重新发送页面请求,所以执行完后浏览器的url显示的是跳转后的页面。跳转页面可以是一个任意的url(本服务器的和其他服务器的均可)。

21)在JSP页面中的注释形式

1.HTML注释(输出注释):指在客户端查看源代码时能看见注释。例如,

<!-- this is an html comment.it will show up int the response. -->

2.JSP页注释(隐藏注释):指注释虽然写在JSP程序中,但不会发送给客户,因此在客户端查看源代码时不能看见注释。这样的注释在JSP编译时被忽略掉。

<%--this is a JSP comment.it will only be seen in jsp code--%>

3.Java注释:只能出现在Java代码区中,不允许直接出现在页面中。
//单行注释
/*多行注释*/

  • 在JSP页面中的注释形式

注释可以增强JSP页面的可读性,使JSP页面易于维护。JSP页面中的注释可分为三种。

教材上没算Java注释,是两种

JSP注释 HTML注释 Java注释
客户端可见性 不可见 可见 不可见
位置 主体部分,除了java程序片、表达式、声明内部 主体部分,除了java程序片、表达式、声明内部 java程序片、表达式、声明内部
形式 <%-- 注释内容 --%> <!-- 注释内容 --> //单行注释 /* */多行注释
注意 不要在java程序片、表达式、声明内部 用户可见,不要在java程序片、表达式、声明内部 不要把结束标识%>给注释掉了

程序类(代码填空、设计):

1)简单JSP页面设计(如计算多项式值,基本运算等);

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>

<head>
<title>标题</title>
</head>

<body>
<%
//代码
%>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
//1、编写一个jsp页面计算1+2+……+100的连续和。
<html>
<head><title>计算12+……+100的连续和</title>
</head>
<body>
<% int sum=0;i=1;
for(i=1;i>=100;i++){
sum=sum+i;
}
out.println(sum);
%>
</body></html>

2)Tag文件使用及参数传递;可参考实验2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
first.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>

<head>
<title>first</title>
</head>

<body>

<h2>这是页面&nbsp;&nbsp;<b>1</b></h2>

<%@include file="leader.txt" %>
</body>
</html>

leader.txt:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<a href = "first.jsp"> 链接到页面1</a>
<a href = "second.jsp"> 链接到页面2</a>
<a href = "third.jsp"> 链接到页面3</a>

3)页面请求、会话与响应;可参考第4章实验

4)文件上传/下载过程;可参考例5-9、5-11

P226-233

5)操作常见数据库过程;用结果集操作数据库表;可参考6-3、6-7,6-10

P160-161

6)Bean的使用;可参考7-1、7.4.4四则运算、习题7-5

P87

7)servlet文件使用及文件配置;可参考8-1、8-4、8-5

P99-100

8)MVC(类似6)、7)的结合)