JSP
1 | Web程序设计考试 |
选择填空
Web
Web前台技术题目可参考Web前台技术题库(类似)。
JSP部分
1)jsp执行结果
2)include的使用
1 | include指令 |
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 | <html> |
II.id选择器:例如:选择id为name的元素,然后将其元素设置CSS属性”color:red;”。
1 | <head> |
III.class选择器:例如:选中class为lv的所有元素,然后设置属性”color:red;”。
1 | <head> |
IV.子元素选择器:例如:
1 | #father1 div{color:blue;}表明选择id为father1元素下的所有div元素; |
V.相邻选择器:例如:#lv+div{color:red;}表明选择id为lv元素的相邻的下一个同级兄弟元素div,即第二个div。
1 | <head> |
VI.群组选择器:同时对几个选择器进行同样的操作。
1 | <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 | <jsp:include page=”URL” /> |
- ②param动作标记
键值对形式
1 | <jsp:param name=”属性名字” value=”属性的值” /> |
- ④plugin动作标记
指示JSP页面加载JAVA plugin插件。该插件右用户负责下载,并使用该插件来运行java applet 小程序。 - ⑤useBean动作标记
用来创建并使用一个javabean。
3)请说出一个JSP页面的基本组成。/JSP页面的执行步骤
一个JSP页面的基本组成
- JSP页面可由5种元素组合而成:
① 普通的HTML标记符;
② JSP标记,如指令标记、动作标记;
③ 变量和方法的声明;
④ Java程序片;
⑤ Java表达式 ;
- JSP页面可由5种元素组合而成:
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对象
- JSP中常用的内置对象:
简述request对象和response对象的作用。
- request对象的作用:获取用户提交的信息
- 内置对象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 | String str=request.getParameter("girl"); |
- 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 | DriverManager.getConnection(DB_URL, USERNAME, 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 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
1 | //1、编写一个jsp页面计算1+2+……+100的连续和。 |
2)Tag文件使用及参数传递;可参考实验2
1 | first.jsp: |
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