--- title: JSP date: 2020-05-06 updated: 2020-05-06 categories: [滨江] tags: [JSP] keywords: [JSP] description: JSP --- ``` Web程序设计考试 选择填空知识点及试卷分值分布: 选择:25分,Web前台技术10分,JSP15分 填空:15分,Web前台技术(js代码阅读),JSP 程序阅读:10分 简答:20分,简答:4题 综合:30分,设计:2-3题 ``` | 最后更新时间 | 2020.06.12/12:00 | | ------------------------------------------------------------ | ------------------------------------------------------------ | | [md下载](https://raw.githubusercontent.com/ZanderZhao/zanderzhao.github.io/source/source/_posts/blog/20/05061200.md) | [md下载备用](https://cdn.jsdelivr.net/gh/ZanderZhao/zanderzhao.github.io@source/source/_posts/blog/20/05061200.md) | | [docx下载](https://dir.zlogs.net/private/document/blog/20/05061200/src.docx) | [pdf下载](https://dir.zlogs.net/private/document/blog/20/05061200/src.pdf) | # 选择填空 ## Web Web前台技术题目可参考Web前台技术题库(类似)。 ## JSP部分 ### 1)jsp执行结果 ### 2)include的使用 ```jsp include指令 <%@ include file="head.jsp"%> 动作元素 ``` ### 3)JSP各标记(如`<% %>`)的规范写法 ### 4)JSP运行所需的环境 JDK 和 tomcat ### 5)bean的作用范围 ### 6)bean有关的动作标记 使用bean: `` 获得属性值: `` 设置属性: ` ` ### 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代码放在``标签对是放在head签对内的。 + 内联样式表(内嵌样式表): + 把HTML代码和CSS代码放在同一个文件中。 + CSS样式放在style属性中进行定义。 外部样式表:(位于外部的.css文件中,通过link元素引入) ```html ``` 内部样式表:(位于``标签内部) ```html ``` 内联样式表:(在HTML元素内部) ```html ``` + 一个CSS样式的语法的组成部分: + 选择器、属性、属性值。 + 选择器的分类: I.元素选择器:例如:将页面中所有的h2元素选中,并将所有的h2元素设置颜色为silver; ```html

这是 heading 1

这是 heading 2

这是一段普通的段落。

``` II.id选择器:例如:选择id为name的元素,然后将其元素设置CSS属性”color:red;”。 ```html
content
``` III.class选择器:例如:选中class为lv的所有元素,然后设置属性”color:red;”。 ```html

content

content ``` IV.子元素选择器:例如: ```html #father1 div{color:blue;}表明选择id为father1元素下的所有div元素; #father2 #p1{color:red;}表明选择id为father2元素下的子元素,其中子元素的id为p1;
content

content

``` V.相邻选择器:例如:#lv+div{color:red;}表明选择id为lv元素的相邻的下一个同级兄弟元素div,即第二个div。 ```html
content_1
content_2
``` VI.群组选择器:同时对几个选择器进行同样的操作。 ```html ``` ### 2)include标记与include动作标记有什么区别?/ Jsp常见的动作标记? P25 + include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖于当前的JSP页面,其优点是页面的执行速度快。 + include动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面,其优点是可以使用param子标记更灵活地处理所需要的文件,缺点是执行速度要慢一点。 + include标记与include动作标记有什么区别 | | include指令标记 | include动作标记 | | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | 简介 | `<%@include %>`页面转换期间发生作用,包换文件的实际内容,准换位一个servlet,编译慢,执行快 | ``请求期间发生作用,包含页面的输出,转换为独立的servlet,编译快,执行慢 | | 作用 | include指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件. | include动作标记告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。 | | 加入方式 | 当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。`加入后才是一个完整的页面` | 如果包含的文件是普通的文本文件,就将文件的内容发送到用户端,由用户端的浏览器负责显示; 如果包含的文件是JSP文件,JSP引擎就执行这个文件,然后将执行的结果发送到用户端,并由用户端的浏览器负责显示这些结果。`作为附属资源加载时加入` | | 加入时间 | 首次访问时,服务器合成加入 | JSP页面运行时才将文件加入 | | 注意 | 加入后文件和加入前文件不能存在语法冲突,比如不能两次使用page指令为contentType属性设置不同的属性值 | 文本文件直接发到客户端,而JSP文件由服务器执行然后将结果发到客户端 | ​ + JSP常见的动作标记: ``、``、``、`` + ​ ①include动作标记: ``` 或者: param子标记 ``` + ​ ②param动作标记 键值对形式 ``` ③forward动作标记:: 或者: param 子标记 ``` + ​ ④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进行编码 + 将编码存放到一个字节数组中 + 然后再将这个数组转化为字符串对象 ```java String str=request.getParameter("girl"); byte b[]=str.getBytes("ISO-8859-1"); str=new String(b); ``` + 2.request设置编码 ```java request.setCharacterEncoding(“GB2312”); ``` ### 6)JavaBean的作用范围有哪几种? scope取值:page(页面)、session(会话)、request(请求)、application(站点) 通过getAttribute()方法来获得 + page:① 通过``标签将请求转发到另一个文件。② 客户请求访问的JSP页面执行完毕并向客户端发送响应。 + request: ① 客户请求访问的当前JSP页面② 和当前JSP页面共享同一个请求的页面,包括`<%@ include%>`指令以及``标记包含的其他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参数主要包括的内容。 ```java 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被创建后,通过``标签与``标签调用时,将会按照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)``、response.sendRedirect()及转发的异同 ? ``: 地址栏没有改变,是服务器跳转,地址栏不变 `response.sendRedirect()`: 地址栏改变了,是客户端跳转,不可以传递request属性 + ``、`response.sendRedirect()`转发的异同 | | `` | `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(本服务器的和其他服务器的均可)。 | + https://www.cnblogs.com/davidwang456/p/3998013.html ### 21)在JSP页面中的注释形式 1.HTML注释(输出注释):指在客户端查看源代码时能看见注释。例如, `` 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页面设计(如计算多项式值,基本运算等); ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> 标题 <% //代码 %> ``` ```jsp //1、编写一个jsp页面计算1+2+……+100的连续和。 计算1+2+……+100的连续和 <% int sum=0;i=1; for(i=1;i>=100;i++){ sum=sum+i; } out.println(sum); %> ``` ### 2)Tag文件使用及参数传递;可参考实验2 ```jsp first.jsp: <%@ page contentType="text/html;charset=UTF-8" language="java" %> first

这是页面  1

<%@include file="leader.txt" %> leader.txt: <%@ page contentType="text/html;charset=UTF-8" language="java" %> 链接到页面1 链接到页面2 链接到页面3 ``` ### 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)的结合)