【JAVA WEB】笔记速成版本

目录

第1章 开发任务概述

概念

 题目

第2章  用户界面设计

html文件基本结构

页面元素

标题列表

文本段落

评论列表

输入表单

新闻发布表单

管理表格

功能菜单

CSS 

基本CSS选择器

 盒子模型

JavaScript

基本语法

题目

第3章 程序开发基础

jsp 

JSP基础语法

 JSP脚本

题目

第4章 流程控制与数据传递

JSP内置对象

 request对象

 response对象

session对象

控制流和数据流的实现

题目 

第5章  数据库访问

JDBC技术

题目

第6章 重构程序功能

JavaBean技术

(1)JavaBean的编写和使用

题目

第7章 重构程序界面

 EL表达式语言

JSTL标记库 

第8章 重构程序结构

MVC模型

MVC设计模式

Servlet开发

Servlet过滤器

简答题


第1章 开发任务概述

概念

JAVA WEB应用开发技术:

单机版到C/S结构到B/S结构,

C/S模式是一种两层结构的系统,主要由客户应用程序和数据库组成

B/S模式,即浏览器服务器模式,其本质是三层C/S模型

客户端开发技术:

HTML:超文本标记语言,符号标记语言

CSS:层叠样式表,定义样式结构的语言

JavaScript:脚本语言

服务器端开发技术:

servlet:

jsp:

javabean:实现重用

jdbc:API

http:

用于从web服务器传输超文本到本地浏览器的一个网络协议,采用请求/响应模型,简单快速,灵活,无连接,无状态

开发流程

需求分析,系统设计(页面设计,数据库设计,功能设计,架构设计),编程实现,测试发布

 题目

1. JSP是运行在__上的应用程序?B

  • A. Windows操作系统

  • B. Web服务器

  • C. Web浏览器

  • D. Linux操作系统

2浏览器向Web服务器发送数据时遵循的协议是(A)?

  • A. HTTP

  • B. FTP

  • C. TCP

  • D. UDP

3.什么是动态网页?B

  • A. 有js的网页

  • B. 与后台有交互的

  • C. 有css3动画的网页

  • D. 加jquery动画的网页

4Tomcat的默认端口是A

  • A. 8080

  • B. 80

  • C. 3306

  • D. 1433

5.JSP默认使用语言是?C

  • A. C

  • B. C++

  • C. Java

  • D. JavaScript

  • 6Java web 是指使用java语言,按照(java EE)规范开发的web应用

第2章  用户界面设计

html文件基本结构

<html >                        html文件开始

<head>            头部开始

……                          头部内容

</head>                        头部结束

<body>                         主体开始

……                         文件主体内容

</body>                        主体结束

</html>

页面元素

标题列表

无序列表元素:<UL>标记和<li>表项标记

建立无序列表的格式为:

<ul type="符号类型">        

        <li type="符号类型1" /> 第一个列表项

       <li type="符号类型2" /> 第二个列表项

        …    

</ul>

文本段落

段落标记<p>和</p>,基本语法如下:

     <p align=”对齐方式”>段落1内容

     <p align=”对齐方式”>段落2内容

</p>

评论列表align属性用于定义段落的水平对齐方式,可分别取left(左对齐),center(居中),right(右对齐),默认值为left。

评论列表

<div>标记是一个区块容器标记,可容纳标题、段落、表格、图像等各种HTML元素。

基本语法如下:    

<div>…</div>

<div>…</div>

 <span>标记

与<div>标记一样,<span>标记也是一种容器标记。二者的区别在于,<div>是块级元素,它包含的元素会自动换行,而<span>是行内元素,在它的前后不会换行。<span>标记可以作为子元素包含在<div>标记中。

<img>标记     HTML利用图片标记<img>向网页中插入静态或者动态的图像,如插入评论列表中的评论人图标。

    <img>标记的格式如下:      <img  src="图片地址"  >

输入表单

<form>标记      

表单定义的格式如下:

    <form  name="表单名"  action="URL"   method="get|post">

     <input  type="表项类型"  name="表项名"  value="缺省值"  placeholder="提示信息" required="required"/>

     ……</form>

name 表单名称

action 规定提交表格时,向何处发送表单数据

method 规定用什么方式发送表单数据

<input>标记

<input>标记用于定义表单中的输入控件,使用户能够使用文本、选择、按钮等多种方式输入信息。

type 设置输入控件的类型,如文本框text,密码框password 提交按钮submit隐藏域hidden复选框checkbox 文件域file

value 设置控制初值,告诉用户默认输入值或选择结果

checked 设置是否默认选中,默认未选中

name 指定输入控件名称

required 必填项目

新闻发布表单

下拉列表框需要使用<select>和<option>两个标记来定义。

定义形式如下:

<select  name=“控件名”  size=”大小”  multiple >

<option value=”选项值”>选项名称</option>

<option value=“选项值”  selected>选项名称</option>

</select>

多行文本框 <textarea>标记用于实现一个多行文本框 

定义形式如下:      

<textarea name=“content” cols=“25” rows=“5”> 编辑框默认显示的内容</textarea>

     其中cols设置输入域的列数,rows设置输入域的行数。 

管理表格

<table>标记:用于设置表格的格式,如表格宽度、高度、边框线、边距、单元格间距等,表格边框线宽度用border指定,单位是像素,当值为0时不显示边框。

<tr>标记:用于定义表格中的一行

<td>和<th>标记:表格的单元格用<td>标记定义,表头单元格也可以用<th>标记定义。

表格的一般定义格式如下:

   <table border="n">

        <tr> <th>表头1</th> <th>表头2</th> </tr>

        <tr> <td>单元格1</td> <td>单元格2</td> </tr>

       ……

       <tr> <td>单元格1</td> <td>单元格2</td> </tr>

   </table>

功能菜单

<a>和</a>为超链接的标记,可以实现从一个页面到另一个页面的跳转。

超链接定义格式如下:      

<a href="目标地址">超链接名称或者图片          

</a>

CSS 

基本CSS选择器

标记选择器 标记选择器是直接针对HTML标记定义样式。一个HTML标记名就可以作为一个样式选择器。基本格式如下:

HTML标记名{标记属性:属性值; 标记属性:属性值; 标记属性:属性值; ……;}

 类别选择器

(1)基本格式如下: .

类别选择器名 {标记属性:属性值; 标记属性:属性值; 标记属性:属性值; ……;}

(2)使用:

在HTML标记中实用class选择器,需要将标记的class属性值设置为类别选择器名。

格式如下: <HTML标记名  class=”类别选择器名”>

 ID选择器

(1)基本格式如下:

#ID选择器名{标记属性:属性值; 标记属性:属性值; 标记属性:属性值; ……;}    

(2)使用:

使用ID选择器,需要设置相应标记的ID属性值为ID选择器名。格式如下:

<HTML标记名  id=”ID选择器名”>

伪元素选择器        

伪元素选择器是指对同一HTML元素的各种状态来定义样式的一种方式。例如超链接存在正常超链接状态(link)、访问过后(visited)、光标移动到超链接文字上(hover)、选中超链接(active)等状态。要为每种状态设置不同的样式,就要用伪元素选择器,其定义的格式如下

HTML标记:伪元素{样式} 

 在HTML使用CSS的方法

(1)嵌入式        

嵌入式是将样式表嵌入到HTML标记的属性中,把样式的定义直接作为标记的style属性值。格式如下:

<HTML标记 style=“属性名:属性值”>

 (2)头部式

头部式是把样式定义在HTML页面的头部,用<style>标记进行声明。这样定义的样式在整个页面中都可以使用。基本格式如下:

<style>

   样式定义

</style>

(3)外部式

        外部样式表是把样式定义保存在一个专门的文本文件中,这个文件的文件名由用户自定义,但扩展名必须是“.css”。外部式的最大优点是实现了CSS代码和HTML代码的分离。

定义好的CSS文件可以通过在HTML页面头部的<link>标记将CSS文件链入HTML文件中, 格式如下:

<link href=“yangshi1.css”  rel=“stylesheet”  type=“text/css” /> 

 盒子模型

(1)CSS中有一个非常重要的概念叫作盒子模型,页面中的每个HTML元素都被看作是一个的盒子。 (2)一个盒子在页面中实际所占据的空间由“内容+内边距+边框+外边距”决定。 (3)在CSS盒子模型中,用来调节盒子大小和位置的属性主要有4个:content(内容),border(边框),padding(内边距),margin(外边距)。这四个属性构成了盒子模型的四个组成部分。

JavaScript

JavaScript是一种简单的脚本语言,由浏览器解释执行,简单易学易用,最基本的两个特点是基于对象和事件驱动。      对象,是指JavaScript支持使用对象。      事件驱动指JavaSrcipt程序的运行机制。它把GUI(图形用户界面)中的用户动作封装为各种事件,当某个事件发生时,就会触发相应的事件处理程序运行。

JavaScript脚本的使用方式

(1)嵌入标记事件属性 脚本代码可以直接嵌入到HTML标记的事件属性中。 (2)使用脚本语句块 把脚本语句块放在HTML页面中的<script>标记中,

基本语法如下:

<script language="javaScript">

   JavaScript脚本代码

</script>

(3)链接独立的脚本文件        为了使JavaScript脚本代码可以在多个页面中重用,还可以把JavaScript代码写到一个独立的文件中,文件的扩展名必须是js。在需要使用脚本代码的页面中,用<script>标记将文件链入。

基本语法如下:

<script src="脚本文件" 

       language="javaScript"></script>

基本语法

数据类型

1数值型:number,包括整型int和实型float;

字符串型:string,字符串是用单/双引号括起来的字符或数值;

布尔型:boolean,其值为True或者False;

Undefined类型:已声明但没有赋值的变量,不能直接使用;

变量 JavaScript是弱类型语言,在声明变量时,不需要指定变量的类型,变量类型会根据所赋的值来确定。变量声明使用命令var来完成,格式如下: var 变量名[=值];

变量

JavaScript是弱类型语言,在声明变量时,不需要指定变量的类型,变量类型会根据所赋的值来确定。变量声明使用命令var来完成,格式如下: var 变量名[=值];

流程控制

JavaScript的流程控制语句包括: 分支语句:if …else…、switch...case…; 循环语句:for、while、do...while;

程序结构和内置函数

       在JavaScript中单条语句即可构成程序。但是通常为了使程序结构更好,一般会使用函数作为JavaScript程序的基本构成单位。 JavaScript的函数有自定义函数和内置函数两种。

对象

由属性和方法构成

属性:描述对象特征的一组数据

方法:操作对象特征的一组动作

三种类型 JavaScript内置对象 浏览器提供的对象 自定义对象

 JavaScript内置对象

(1)Date对象:用于处理日期和时间,需要先创建才能使用。

(2)window对象:代表当前浏览器窗口所有 JavaScript 全局对象、函数和变量均自动成为 window 对象的成员。

(3)document对象:属于HTML DOM(Document Object Model,文档对象模型)。当网页被加载时,浏览器会创建当前页面的DOM模型。

事件驱动机制

事件驱动机制是事件发生者向事件处理者传递消息的一种机制。主要事件有标记事件、鼠标事件、键盘事件。

标记事件是标记状态或者内容的变化,比如点击按钮、做出选择、输入内容改变等,常用标记事件如下: onClick事件 onChange事件

题目:html

1. (单选题)下列哪一项表示的不是按钮。C

  • A. type="submit"

  • B. type="reset"

  • C. type="image"

  • D. type="button"

2. (单选题)为了标识一个HTML文件应该使用的HTML标记是()?C

  • A. <p></p>

  • B. <boby></body>

  • C. <html></html> 

  • D. <table></table>

3. (单选题) 在下列的 HTML 中,哪个可以产生超链接?B

  • A. <a url="http://www.w3school.com.cn">W3School.com.cn</a>

  • B. <a href="http://www.w3school.com.cn">W3School</a>

  • C. <a>http://www.w3school.com.cn</a>

  • D. <a name="http://www.w3school.com.cn">W3School.com.cn</a>

4. (单选题)以下选项中,哪个全部都是表格标签?B

  • A. <table><head><tfoot>

  • B. <table><tr><td>

  • C. <table><tr><tt>

  • D. <thead><body><tr>

5. (单选题)在下列的 HTML 中,哪个可以产生复选框?C

  • A. <input type="check">

  • B. <checkbox>

  • C. <input type="checkbox">

  • D. <check>

6. (单选题)CSS 指的是?B

  • A. Computer Style Sheets

  • B. Cascading Style Sheets

  • C. Creative Style Sheets

  • D. Colorful Style Sheets

  • 7. (单选题)在以下的 HTML 中,哪个是正确引用外部样式表的方法?B

  • A. <style src="mystyle.css">

  • B. <link rel="stylesheet" type="text/css" href="mystyle.css">

  • C. <stylesheet>mystyle.css</stylesheet>

  • D.  <style href="mystyle.css">

8. (单选题)在 HTML 文档中,引用外部样式表的正确位置是?D

  • A. 文档的末尾

  • B. 文档的顶部

  • C. <body> 部分

  • D. <head> 部分

9. (单选题)我们可以在下列哪个 HTML 元素中放置 Javascript 代码?A

  • A. <script>

  • B. <javascript>

  • C. <js>

  • D. <scripting>

10. (单选题)如何在警告框中写入 "Hello World"?C

  • A. alertBox="Hello World"

  • B. msgBox("Hello World")

  • C. alert("Hello World")

  • D. alertBox("Hello World")

11.表单标记中的action属性的作用是(   C )

A、为表单命名        

B、调用客户端验证方法

C、指明表单信息发送的目的地址    

D、声明表单的提交方式

17.关于get和post两种请求,下列说法正确的是(  A  )

A、get请求是默认的。

B、get请求处理的数据量大小不受到限制。

C、post请求地址栏里是能看到数据的。

D、post请求可以由doGet方法处理。

第3章 程序开发基础

运行环境是指能够使一个程序顺利运行的所有外部条件之和。它包括符合基本需要的硬件配置、特定版本的操作系统以及其它系统软件及运行库。 Java Web应用程序的运行环境涉及到三个方面的需要: 能够运行Java代码,需要提供JRE。 能够提供Web服务,需要Web服务器和WEB浏览器。 能够提供应用程序功能,需要有运行相关程序的基础平台,这个平台叫做JSP引擎。

jsp 

JSP(Java Server Pages,Java服务器页面)是一种创建和管理动态网页的技术标准。通过在传统的网页HTML文件中插入Java脚本代码和JSP标记,就可以得到JSP页面文件。 JSP程序本质上是在服务器端执行的Java Servlet,执行完毕通常会返回给客户端一个HTML文件作为响应,客户端浏览器即可查看该响应文件的内容

一个典型的Java Web应用包含四个部分:

公开文件夹,存放能够被用户访问的资源,包括.jsp、.htm、.js、.css、.jpg等文件。

WEB-INF/web.xml文件,应用的部署描述文件。

WEB-INF/classes文件夹,存放     编译好的Java类文件(.class)。

WEB-INF/lib文件夹,     存放Java类库文件(.jar)。

JSP基础语法

 JSP脚本

以“<%”标记开始,以“%>”标记结束

实际就是普通的Java语句,可以分为 脚本代码 声明 表达式

脚本代码       

语法格式: <% 脚本代码 %>

脚本代码中声明的变量在当前页面内的所有脚本代码和JSP表达式中有效,这样的变量被称为JSP页面的局部变量。

声明

语法格式:<%! 变量、方法或类的声明%>

表达式

语法格式:<%= 表达式 %>

表达式可以是任意合法的Java表达式。该表达式会被计算并将得到的结果以字符串的形式显示到页面中。 JSP表达式不是程序代码,所以末尾不能出现“;”。

JSP声明中定义的变量也被称作JSP页面的全局变量,所有访问同一个JSP页面的客户操作的都是同一个全局变量。

注释

语法格式:<%--JSP注释信息--%>

注释信息会在JSP转译为Java类时被忽略。 脚本代码中,也可以使用Java的单行注释和多行注释方式添加注释内容。    

JSP指令元素

用来通知JSP引擎如何处理JSP页面,所有指令都是在JSP的整个页面有效。 在JSP文件转译时处理,用于实现类的引入、定义JSP页面的编码格式、包含其它文件、引入新的标签库等功能。

共有三种:page、include和taglib,统一使用如下语法格式:

<%@指令名 属性1="值1" 属性2="值2" 属性n="值n" %>

page指令

用来定义JSP页面的全局属性。主要属性如下:

language属性:定义脚本代码使用的语言,默认值为Java

import属性:定义此JSP页面导入的类包

errorPage属性:定义当页面执行中发生异常错误时,对此页面的请求会被重新指向的错误处理页面URL

isErrorPage属性: 取值为true时表示当前JSP页面是一个错误处理页面

contentType属性:定义页面响应信息的MIME类型和编码方式

pageEncoding属性:定义页面响应信息的编码方式 

MIME(Multipurpose Internet Mail Extensions,多功能互联网邮件扩展) 互联网上判断文件格式的事实标准。

文件类型

文件扩展名

MIME

HTML文档

.html

text/html

普通文本

.txt

text/plain

PNG图像

.png

image/png

GIF图形

.gif

image/gif

JPEG图形

.jpeg,.jpg

image/jpeg

MPEG文件

.mpg,.mpeg

video/mpeg

Microsoft Word文件

.doc

application/msword

Microsoft Excel文件

.xls

application/x-msexcel

PDF文档

.pdf

application/pdf

任意的二进制数据

application/octet-stream

字符编码 字符编码是用二进制字符串来代表字符集的字符,以便于文本在计算机中的存储和网络传输。

include指令

在当前JSP页面中的指定位置插入另一个文件的内容,语法格式如下:     

<%@include file="URL"%>

URL是一个相对路径,用来定义被插入的文件。如果URL以“/”开头,代表当前Web应用的根目录,如果以文件名或目录名称开头,则代表当前目录下的相对位置。实现的文件插入被称为文件静态包含

JSP标记元素

标记元素是由JSP引擎解释执行的一组功能。 JSP2.0的规范里定义了20多种标记元素,可以实现动态文件包含、页面跳转、使用JavaBean组件等功能。标记元素的统一语法格式如下:

<jsp:标记名 属性1="值1" 属性2="值2" 属性n="值n">

……

</jsp:标记名>

 常用的JSP标记: <jsp:include>标记 <jsp:param>标记 <jsp:forward>标记

题目:jsp

1.在HTML中,<form method=post>,method表示()

A、提交的方式

B、表单所用的脚本语言

C、提交的URL地址

D、 表单的形式

我的答案:A :

2增加表单的文本框的HTML代码是()

A、<input type=submit></input>

B、<textarea name="textarea"></textarea>

C、<input type=checkbox></input>

D、<input type=text></input>

我的答案:B :

3可以在下列哪个HTML元素中放置javascript代码?

A、<script>

B、<javascript>

C、<js>

D、<scripting>

我的答案:A :

4向页面输出“Hello World”的正确javascript语法是 ()

A、document.write("Hello World")

B、"Hello World"

C、response.write("Hello World")

D、("Hello World")

我的答案:A :

5如何声明一个名为myFunction的函数?

A、function:myFunction()

B、function myFunction()

C、function=myFunction()

D、myFunction()

我的答案:B :

6将一个名为validate()的函数和一个按钮的单击事件关联起来的正确用法是?

A、<input type="button" value="验证" οndblclick="validate ()">

B、<input type="button" value="验证" οnclick="validate ()">

C、<input type="button" value="验证" οnkeydοwn="validate ()">

D、<input type="button" value="验证" onBlur="validate ()">

我的答案:B :

二.多选题(共1题,14.8分)

1以下关于<select>标记说法正确的是()

A、<select>定义的表单元素在一个下拉菜单中显示选项

B、rows和cols属性可以定义其大小

C、select>定义的表单元素是一个单选按钮

D、<select>定义的表单元素通过改变其multiple属性取值可以实现多选

E、一般情况下,<select>定义的表单元素以一个下拉列表形式出现

我的答案:ADE

1. (单选题)JSP的编译指令标记通常是指:(A)

  • A. Page指令、Include指令和Taglib指令

  • B. Page指令、Include指令和Plugin指令

  • C. Forward指令、Include指令和Taglib指令

  • D. Page指令、Param指令和Taglib指令

2. (单选题)可以在以下哪个(A)标记之间插入Java程序片?

  • A. <% 和%>

  • B. <% 和/>

  • C. <% 和!>

  • D. <%!和%>

3. (单选题)可以在以下哪个(B)标记之间插入变量与方法声明?

  • A. <% 和%>

  • B. <%!和%>

  • C. <% 和!>

  • D. <% 和/>

4. (单选题)下列变量声明在(C)范围内有效。

<%! Date dateTime;

int countNum;

%>

  • A. 从定义开始处有效,客户之间不共享

  • B. 在整个页面内有效,客户之间不共享

  • C. 在整个页面内有效,被多个客户共享

  • D. 从定义开始处有效,被多个客户共享

5. (单选题)JSP页面中的隐式注释为(C)

  • A. //注释内容

  • B. <!—注释内容-->

  • C. <%--注释内容--%>

  • D. /*注释内容*/

6. (单选题)在JSP中如果要导入java.util.*包要使用什么指令?A

  • A. page

  • B. taglib

  • C. include

  • D. forward

7. (单选题)JSP中存在如下代码:<%="2"+"4" %>,运行该JSP后,以下说法正确的是(  )D

  • A. 没有任何输出

  • B. 指令将引发错误

  • C. 6

  • D. 24

8. (单选题)Page指令用于定义JSP的全局属性,下面关于指令描述不正确的是C

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

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

  • C. <%@page%>指令只能出现一次

  • D. 为了增强程序的可读性,最好将<%@page%>指令放在开头,但不是必须的

1.在jsp中,要使用一个表达式,需要用到以下(A    )元素。

 A、<%=  %>   B、 <%   %>     C、 <%!   %>    D、<%@  %>

2.在客户端浏览器的源代码中可以看到( B   )

A、JSP注释     B、HTML注释    C、JSP注释和HTML注释    D、JAVA注释

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

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

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

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

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

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

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

8.page指令的import属性的作用是( C    )

A、定义JSP页面响应的MIME类型

B、定义JSP页面使用的脚本语言

C、为JSP页面引入JAVA包中的类

D、定义JSP页面字符的编码

6.page指令中的哪一个属性用来定义JSP页面的MIME类型和JSP字符的编码 (    A  )。

A、contnetType     B、import     C、 language      D、session

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

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

B、<% int i=0;%>

C、<%=i;%>

D、<%i++;%>

13、JSP页面组成包括:HTML标记符、脚本元素、(   B  )、动作标签、注释。

A、声明元素

B、指令标签

C、表达式元素

D、Java程序片

17、下列注释当中为JSP注释的是(  B    )

 A、(!--注释内容--)     B、 <%--注释内容--%>

 C、 /*注释内容*/      D、 /**注释内容*/

14、给定程序片段:

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

<html>

<body>

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

</body>

</html>

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

A、<%@ page import=“” %>

 B、<%@ import class=“”%>

 C、<%@ include file=“”%>

 D、<%@ include class=“”%>

1.下列哪一个不是JSP静态指令(   B        )。

A、page   B、forward    C、include   D、taglib

2.一个JSP网页可以使用exception对象,但是必须使用isErrorPage设为(    D   )。

A、null   B、none   C、false D、true

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

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

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

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

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

4.下列动作标签中哪一个是用于重定向一个HTML文件(   c )。

A、<jsp:useBean>   B、<jsp:include>     C、<jsp:forword>    D、<jsp:plugin>

5.useBean标签中scope有四中不同取值,下列哪一个scope取值是JSP引擎为每一个客户分配一个共享的beans(    a )。

A、 request       B、 application      C、 session          D、 page

第4章 流程控制与数据传递

HTTP请求响应机制 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是TCP/IP协议中的一个应用层协议,用于定义Web客户端与Web服务器之间交换数据的过程。 HTTP协议基于请求响应模式实现Web内容的传送,即Web客户端向服务器发送一个请求信息,服务器会返回一个对应的响应信息。 Web交互的基本单位就是HTTP请求和响应。

HTTP会话机制 HTTP协议是一种无状态协议,不保存客户端每次提交的信息。 一个HTTP会话代表服务器与浏览器的一次会话过程,这个过程包含连续或时断时续的多次请求响应。

Web应用程序基于HTTP协议的请求响应模式运行。 程序开发时,需要利用HTTP请求、HTTP响应以及HTTP会话等处理机制来实现诸如获取浏览器请求信息、对客户端作出响应和存储会话信息等功能。

为了简化程序的开发,JSP已经用一组类预先实现了这些常用的功能,并在JSP程序运行之前由JSP引擎自动创建好。 在编写JSP页面文件时,这些对象不需要创建,在脚本代码中直接调用其中的方法就可以实现特定的功能,因此被称为内置对象。

JSP内置对象

内置对象名称

类型

作用域

用途

request

javax.servlet.ServletRequest

Request

封装了客户端的请求信息,例如包含了通过GET/POST方式传递的参数等信息

response

javax.servlet.ServletResponse

Page

封装了客户端响应信息,例如包含了服务端发送到客户端的响应内容等信息

pageContext

javax.servlet.jsp.PageContext

Page

封装了当前页面的属性信息

session

javax.servlet.http.HttpSession

Session

封装了当前请求的会话信息

application

javax.servlet.ServletContext

Application

封装了整个应用共享的信息

out

javax.servlet.jsp.JspWriter

Page

用于向客户端输出信息

config

javax.servlet.ServletConfig

Page

封装了Jsp页面对应Servlet的配置信息

page

java.lang.Object

Page

Jsp页面类的实例,即Jsp页面本身被编译后会生成一个名为page的实例对象。

exception

java.lang.Throwable

Page

封装了发生的异常信息

 request对象

JSP提供了request对象来封装客户端的请求信息, response对象来封装响应信息。

方法声明

功 能 简 介

getParameter(String name) 

获取客户端提交的名称为name的请求参数值,不存在则返回null

getParameterValues(String name) 

获取客户端提交的名称为name的所有请求参数值,不存在则返回null

setCharacterEncoding(Stringenv) 

设置请求数据的字符编码类型

getCharacterEncoding() 

获取请求数据的字符编码类型

setAttribute(name, Object o) 

设置请求中name的属性值为o

getAttribute(String name) 

获取请求中名称为name的属性值,不存在则返回null

removeAttribute(String name) 

删除请求中名称为name的属性

getCookies()

获取客户端的Cookie集合

getMethod()

获取客户端提交信息的方法,例如 GET, POST

getContextPath()

获取请求URL的上下文路径

getRequestURI()

获取请求URL中端口号之后到查询字符串之前的路径信息

getServletPath()

获取请求URL中调用的servlet信息

getQueryString()

获取请求URL中路径之后的查询字符串

getRequestDispatcher(String path)

返回path表示的Web资源转发对象,可用于在不丢失请求信息的基础上实现服务器端的页面请求转发

request对象——乱码处理

setCharacterEncoding方法设置接收数据的字符编码。需同时设置server.xml URIEncoding=“utf-8"

 request.setCharacterEncoding(“utf-8");

或者 

 try { name = new String(name.getBytes("ISO-8859-1"),“utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }

 response对象

方法声明

功 能 简 介

setContentType(String type)

设置响应数据的MIME类型

getContentType()

获取响应数据的MIME类型

setHeader(String name, String value)

设置指定的响应报文头

sendRedirect(String location)

重定向到地址为location的Web资源

addCookie(Cookie cookie)

向响应中添加Cookie,用于在客户端保存信息

getWriter()

获取响应的PrintWriter对象,用于输出响应数据

页面重定向与请求转发的区别

重定向response.sendRedirect()

请求转发<jsp:forward>标记 

对比项

请求转发

页面重定向

URL地址的限制

只能在同一个应用中转发

可以跳转到任意的URL

地址栏URL是否有变化

不变

有变化

客户端请求的次数

一次

两次

行为的主体

服务端的行为

客户端的行为

请求的信息是否可以共用

共用相同的request,所以请求的信息不会丢失

两次请求使用不同的request,所以请求的信息会丢失

session对象

依靠HTTP协议本身并无法知道本次连接和上次连接是否属于同一客户。 为了实现Web应用中常见的用户身份识别、网上购物车等功能,需要保存会话信息。 

Cookie机制

Cookie是Web服务器产生并嵌入在HTTP响应报头中的一小段文本。 一个Cookie包含一个名称和值,以及一些可选的属性,如路径、最长存活时间等。

Java提供了javax.servelt.http.Cookie类来支持Cookie机制的实现。

使用response对象的addCookie()方法向浏览器发送Cookie;

使用request对象的getCookie()方法获取请求中的所有Cookie。

session对象代表一个HTTP会话,用于在服务器端保存会话信息。 session对象内部使用Map类来保存数据,因此保存数据的格式为“Key/value”。 当一个客户第一次请求JSP页面时,JSP引擎会为该用户创建一个session对象,并分配一个String类型的SessionID,然后以Cookie的形式将此SessionID值发送到客户端。这样session对象和客户端之间就建立起了一一对应的关系。

方法声明

功 能 简 介

getAttribute(String name)

获取session对象中名为name的属性值,不存在则为null

removeAttribute(String name)

删除session对象中名称为name的属性

setAttribute(String name, Object value)

设置session对象的属性,属性名为name,属性值为value

getCreationTime()

获取session对象的创建时间,返回1970年1月1日至今的毫秒数

getLastAccessedTime()

获取session对象对应客户端的最近发送请求的时间,返回1970年1月1日至今的毫秒数

invalidate()

销毁session对象里的信息,但session对象本身不会销毁

getMaxInactiveInterval()

获取会话的超时时间,单位为秒

setMaxInactiveInterval(int interval) 

设置会话的超时时间,单位为秒

 session对象与Cookie的区别

Session对象

Cookie

存储位置

数据在服务器端保存

数据在客户端保存

数量限制

不限制大小及数量,但是一般数量越多时服务器效率越低

单个Cookie大小不超过4K,浏览器一般对每个站点最多支持20个Cookie

有效期

会话期间

浏览器关闭之前或者设定时间内

安全性

高,不容易伪造

低,容易伪造

out对象 out对象是一个向客户端发送数据的输出流对象,同时管理服务器上的输出缓冲区。常用的方法是print()和println()。

application对象

page对象

config对象

exception对象

pageContext对象 

控制流和数据流的实现

JSP页面间的流程控制

超链接方法 <a href="userRegister.jsp">用户注册</a><br>

表单提交方法 <form action="userVeriRegister.jsp" method="post">

页面重定向方法 response.sendRedirect("index.jsp");

请求转发方法 <jsp:forward page="index.jsp"> request.getRequestDispatcher("index.jsp").forward(request,reponse);

JSP页面间的数据传递

表单传参

HTML的<form>标记用于实现供用户输入的HTML表单,可以将这些表单中的输入内容提交给服务器端,实现用户和服务器端程序之间的交互。

URL传参

URL传参,是指以“URL? name1=value1& name2=value2”的形式直接在URL后面加参数。

<jsp:param>标记传参

作用域传参

JSP内置对象作用域比较 

名称

作用域

application

整个应用程序有效

session

当前会话有效

request

当前请求中有效

page

当前页面有效

题目 

1. 下面哪个对象是用来获取页面发送的请求?C

A. out

B. response

C. request

D. application

2. (response对象重定向的方法是?C

A. addCookie()

B. setContentType()

C. sendRedirect()

D. setCharacterEncoding()

3. (下列哪个不是out对象常用的方法?A

A. getHeaderUrl()

B. print()

C. newLine()

D. close()

4. (request对象通过哪个方法是根据组件名称获取提交数据的?B

A. setCharacterEncoding()

B. getParameter()

C. getHeaderNames()

D. getRequestURI()

5. (要从一个JSP页面的响应交给另JSP页面处理我们可以使用?A

A. reponse对象

B. Application对象

C. config 对象

D. out 对象

6. (在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");

7. (在JSP中,以下哪个方法可以正确获取复选框的值( C)

A. request.getParameterValue()

B. response.setParameterValues()

C. request.getParameterValues()

D. request.getParameter()

8.在下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

1. 如果要把一个用户名jack保存在session对象里,则下列语句正确的是B

A. session.setAttribute( name, jack );

B. session.setAttribute(“ name” , “jack”);

C. session.setAttribute( “jack”, “ name” );

D. session.setAttribute(“jack”, name );

2. (下面关于JSP会话跟踪的说法错误的是C

A. HTTP协议是无状态的,所以服务器需要用会话跟踪技术来分辨每个客户

B. 服务器为每个会话分配了一个ID作为唯一标识

C. session由客户端创建,我们再用request.getSession()来获得HttpSession对象

D. 使用会话跟踪可以实现诸如用户登录和购物车此类的功能

3. 对如下JSP 代码说法正确的是( A   )。

<%

    Sring str = ”Hello.JBIT!”;

    session.setAttribute(“msg”,str);

    String getStr = session.getAttribute(“msg”);

    out.println(getStr);

%>

A. 运行成功,页面上输出Hello.JBIT;

B. 运行成功,页面上输出msg;

C. 代码行session.setAttribute(“msg”,str);有错误,无法运行

4. 以下方法,哪个可使session完全无效?B

A. session.removeAttribute(String key)

B. session.invalidate()

C. session.setAttribute(String key)

D. session.getAttribute(String key)

5. application对象能在( C )间共享。

A. 某个访问者所访问的当前页面

B. 某个访问者所访问的网站的各个页面之间

C. 该服务器上的所有的访问者的所有jsp页面

D. 该服务器上的所有的访问者的所有jsp页面和Java程序

6. 关于session的使用,下列说话正确的是B

A. 不同的用户打开同一个页面具有相同的session

B. 同一用户打开不同的页面窗口具有相同的session

C. 不能禁止session的使用

D. session永远不可能超时

7. JSP内置对象的有效范围最小的是A

A. page

B. request

C. session

D. application

8. 在JSP中为内建对象定义了4种作用范围,即Application Scope、Session Scope、Page Scope和( A )四个作用范围。

A. Request Scope

B. Response Scope

C. Out  Scope

D. Writer Scope

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

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

12.以下对象中的(  D   )不是JSP的内置对象。

A、request    B、session    C、application    D、bean

14.在JSP中,内置对象( B   )封装了用户提交的信息,使用该对象可以获取用户提交的信息。

A、session      B、request   C、response D、out

15.要在session对象中保存属性,可以使用以下哪个语句?( B    )

A、session.getAttribute("key","value");  B、session.setAttribute("key","value");

C、session.setAtrribute("key");             D、session.getAttribute("key");

20.使用 response 对象进行重定向时,使用的是(C    )方法。

A、getAttribute                B、setContentType

C、sendRedirect               D、setAttribute

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

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

15、以下哪一个是HttpSession的方法、并能实现在session中存放数据( C )

A、get(String name,Object value)

B、set(String name, Object value)

C、setAttribute(String name,Object value)

D、getAttribute(String name, Object value)

18、session对象中invalidate方法的含义是(  A    )

A、 使用session无效    

B、 获得session对象的生存时间

C、 获得当前session对象最后一次被操作时间

D、 以上都不对

1. 请说出常用的JSP内置对象,并简述它们的功能。(列举4个以上)

2.请写出JSP中5个内置对象。

答:request,请求对象:代表的是来自客户端的请求

response,响应对象:代表的是对客户端的响应

session,会话对象:代表服务器与客户端所建立的会话

application,应用程序对象:负责提供应用程序在服务器中运行时的一些全局信息

out,输出对象:代表了向客户端发送数据的对象

exception,例外对象:代表了JSP文件运行时所产生的例外对象

第5章  数据库访问

JDBC技术

JDBC (Java DataBase Connectivity)是Java数据库连接的简称; 由一组用Java语言编写的类和接口组成,位于java.sql包中; 提供了一种标准的应用程序设计接口(API)。

JDBC(Java DataBase Connectivity),一套专门用于执行SQL语句的API ,可以向各种关系数据库发送SQL语句,实现对数据库中数据的增删查改操作。

编写数据库访问代码遵循相对固定的模式

(1) 导入JDBC API

(2) 加载驱动程序

(3) 建立数据库连接

(4) 创建Statement对象

(5) 执行SQL语句

(6) 处理执行结果

(7) 关闭链接

 

 JDBC API包括一组支持数据库访问和操作的类与接口,位于java.sql包中 Driver 接口提供用来注册和连接基于JDBC 技术的驱动程序

Driver 接口提供用来注册和连接基于JDBC 技术的驱动程序

DriverManager建立与驱动程序的连接

Connection 接口代表了Java程序与数据库之间的连接

Statement接口用于执行静态 SQL 语句并返回它所生成结果的对象 

PreparedStatement接口继承自 Statement接口,用于向数据库发送准备好的语句或基本 SQL 语句

ResultSet 接口用于表示数据库结果集的数据表,通常通过执行查询数据库的语句生成,其中存放查询结果

题目:jdbc\数据库连接

 1. 在JSP中使用JDBC语句访问数据库,正确导入SQL类库的语句是( A   )

A. <%@ page import=”java.sql.*” %>

B. <%@ page import=” sql.*” %>

C. <%page import=”java.sql.*” %>

D. <%@ import=”java.sql.*” %>

2. 从 “员工” 表的“姓名”字段中找出名字包含“玛丽”的人,下面哪条select语句正确C

A. Select * from 员工 where 姓名 =’%玛丽_’

B. Select * from 员工 where 姓名 like ‘_玛丽%’

C. Select * from 员工 where 姓名 like ‘%玛丽%’

D. Select * from 员工 where 姓名 =’_玛丽_’

3. cn是Connection对象,创建Statement 对象的方法是D

A. Statement st=new Statement ();

B. Statement st=cn.newStatement()

C. Statement st=cn.createNewStatement()

D. Statement st=cn.createStatement()

4. 下述选项中不属于JDBC基本功能的是B

A. 处理查询结果

B. 数据库维护管理

C. 提交SQL语句

D. 与数据库建立连接

5. 下面( CD  )是ResultSet接口的方法。

A. forward()

B. back()

C. next()

D. close()

6. 使用JDBC访问数据时,常用的接口有ABD

A. ResultSet

B. PreparedStatement

C. Record

D. Statement

13.下述选项中不属于JDBC基本功能的是(  D   )

A、与数据库建立连接   B、提交SQL语句  

C、处理查询结果         D、数据库维护管理

10.JDBC API中,可通过(  STAEMENT )对象执行SQL语句。

第6章 重构程序功能

JavaBean技术

(1)JavaBean的编写和使用

JavaBean概述 是使用Java语言开发的一种可重用的组件。 通常可以将JSP页面中的实体信息和数据处理过程抽取出来,封装到JavaBean中。 JavaBean优势 在JSP页面中使用JavaBean可以减少重复代码,使JSP代码更简洁。 JavaBean分类 实体Bean和业务Bean两种。

编写JavaBean即为创建Java类的过程,规范如下: 是一个公共类; 具有无参数的公共构造方法; 具有公共的setter方法和getter方法来供外部存取其私有属性; JavaBean需要放在命名包里,不能放在默认包中。

使用JavaBean :

<jsp:useBean>标记

基本语法如下:

<jsp:useBean  id="id"  class="package.class"  scope="page|request|session| application"/>

功能:在指定scope范围内查找该JavaBean的对象,如果存在则返回给id变量,否则实例化该对象并将引用赋给id变量。

说明:id属性表示创建的对象的名字,class属性指定JavaBean的完整类名,scope属性指定所创建的对象的作用范围,默认值是page。

JavaBean的作用范围

page范围:page表示当前页面,实际上是当前JSP文件对应的Java类的对象范围。

request范围:request表示一次请求,从客户端发送请求开始到收到服务器端的响应,这之间就是一次请求。

session范围:session表示一次会话,从客户端发送请求开始,可以访问Web应用的不同页面,直到关闭浏览器结束本次会话,这之间就是一次会话。

application范围:application表示一个应用。从服务器启动当前Web应用,直到Web应用被停止运行,这之前就是一个应用。

<jsp:setProperty>标记

用于设置JavaBean的属性值 在使用该标记之前,需要先用<jsp:useBean>标记获得一个对象。

<jsp:setProperty>标记有四种用法之一:

自动匹配赋值

基本语法: <jsp:setProperty  name=" beanName "  property="*" />

功能:将request对象中的参数名与JavaBean类中的属性名做自动匹配,若两者名字相同,则将request对象中的参数值赋值给JavaBean对象的属性名。

说明:

name指出JavaBean对象的名字,其值应与useBean标签的id值相同。

property指出JavaBean对象的属性名,“*”表示匹配所有属性。

自动匹配指定属性

基本语法: <jsp:setProperty  name=" beanName "  property="beanPropertyName"/>

功能:获得request对象中名称为property指定的属性名的那个参数的参数值并赋值,即仅匹配property指定的那个属性。

手动设置属性

基本语法: <jsp:setProperty  name="beanName"  property="beanPropertyName"  value="Value"/>

功能:按value指定的值对属性名进行赋值,Value表示要赋的值。 

手动指定request参数名赋值

基本语法:

<jsp:setProperty  name="beanName" property="beanPropertyName"  param="requestParamName"/>

功能:param指定用哪个request对象的参数作为JavaBean属性的值,适用于JavaBean 属性名和request参数名不同的情况。 

题目

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

A、<java:bean>                B、<jsp:useBean>    

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

第7章 重构程序界面

 EL表达式语言

EL(Expression Language,表达式语言)是JSP2.0规范中增加的用于简化JSP页面开发的一种技术

EL语法 格式如下:${ EL表达式 } 所有的EL元素都是以“${”开始,以“}”结束,表示获取或显示“{}”中表达式的值。

EL组成:常量和运算符

运算符类型

运算符

说明

存取运算符

.

存取对象的属性或调用对象的方法

[]

存取数组、列表或其他集合对象的元素

算术运算符

+

加法运算

-

减法运算

*

乘法运算

/或div

除法运算

%或mod

求余运算

关系运算符

==或eq

相等运算

!=或ne

不等运算

<或lt

小于运算

>或gt

大于运算

<=或le

小于或等于运算

>=或ge

大于或等于运算

逻辑运算符

&&或and

与运算

||或or

或运算

!或not

非运算

条件运算符

a?b:c

若a成立,则执行b,否则执行c

empty

empty

空值判断

EL的组成: 变量和对象 EL中的变量并不只是普通的Java变量,还可以是存储于JSP作用域中的属性名。 例如 ${username}表示取出某一作用域中名为username的属性值。 搜索的作用域范围依次为page-->request-->session-->application。 EL中提供了四个内置对象分别代表四种不同的作用域,还有两个内置对象用于代表请求参数

内置对象

描述

pageScope

对应于JSP内置对象pageContext,可以用${pageScope.username}取出page作用域中的username属性值

requestScope

对应于JSP内置对象request,可以用${requestScope.username}取出request作用域中的username属性值

sessionScope

对应于JSP内置对象session,可以用${sessionScope.username}取出session作用域中的username属性值

applicationScope

对应于JSP内置对象application,可以用${applicationScope.username}取出application作用域中的username属性值

param

对应于request对象的getParameter()方法,可以用${ param .username}取出名为username的请求参数值

paramValues

对应于request对象的getParameterValues()方法,可以用${ paramValues.hobby}取出名为hobby的请求参数值数组

JSTL标记库 

JSTL(JSP Standard Tag Library)是一个开源的JSP标准标记库。

使用JSTL的步骤如下: 首先需要到http://tomcat.apache.org/taglibs/standard/下载JSTL标记库的jar包。 然后将获取到的JSTL标记库的jar包,复制到Web应用中的WEB-INF\lib文件夹下。 最后在JSP页面中用taglib指令设置标记前缀,即可使用JSTL标记。

JSTL标记包括5个实现不同功能的标记库组成,其URI和前缀见表7.3。

标记库

URI

前缀

核心标记库

http://java.sun.com/jsp/jstl/core

c

II8N标记库

http://java.sun.com/jsp/jstl/fmt

fmt

XML标记库

http://java.sun.com/jsp/jstl/xml

x

SQL标记库

http://java.sun.com/jsp/jstl/sql

sql

函数标记库

http://java.sun.com/jsp/jstl/functions

fn

 在JSP页面中使用核心标记库:

使用<taglib>指令导入的语法格式:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="前缀名"%>

uri属性用于指定核心标记库的URI。

prefix属性用于定义标记库的前缀,可以为任意字符串。

核心标记库的前缀通常设置为“c” 。

按照功能把核心标记库中的标记分为以下4类:

通用标记 用于操作变量

条件标记 用于流程控制

迭代标记 用于遍历集合

URL标记 针对URL相关的操作 

通用标记

<c:out>标记 负责JSP页面中变量的输出

<c:out>标记 等同于<%=表达式%>

语法格式: <c:out value=”value” [default=”defaultVaule”][escapeXml=”true|false”]/>

说明:

value属性表示输出到页面的数据,可以是EL表达式或常量,该属性不能省略。

default属性表示当 value 属性为null时显示的数据,该属性可选。

escapeXml属性表示是否对特殊字符进行转换,比如将“<”转换为“&lt;”。默认值为true,该属性可选。

<c:set>标记 赋值

用于将变量存储到JSP范围中或为JavaBean属性赋值。

将变量存储到JSP范围中的语法格式: <c:set var=”varName” value=”value”  [scope=”page|request|session|application”]/>

说明: var属性指定被赋值的变量名

value属性指定var属性的属性值,可以是EL表达式或常量。

变量的作用范围,若没有指定,默认为page。

为JavaBean属性赋值的语法格式: <c:set value=”value” target=”target” property=”propertyName”/>

说明: target属性表示被赋值的JavaBean对象的名称,若存在该属性则必须存在property属性。 JavaBean对象的属性名称。

<c:remove>标记 删除

用于从指定的JSP作用域中删除指定的变量

语法格式: <c:remove var=”varName” [scope=”page|request|session|application”]/>

说明: var属性指定要删除的变量名。 scope属性表示要删除变量的作用范围。如果没有指定,默认为全部查找,所有找到的变量名都删除。

<c:catch>标记 异常捕获
用于捕获嵌套在标记体中的内容抛出的异常.

语法格式: <c:catch [var=”varName”]> 存在异常的代码 </c:catch>

说明: var属性用于指定存储异常信息的变量,这是一个可选项。若省略,则表示不需要保存异常信息。

条件标记

<c:if>标记

用于单分支的条件判断,语法格式如下:

<c:if test=”condition” [var=”varName”]

[scope=”page|request|session|application”]>

        condition为true时执行的代码

</c:if>

当condition条件为true时,则执行标记体中的内容。

说明: test属性用于指定需要判断的条件。 var属性用于保存判断结果true或false的变量名,该变量可供之后的工作使用。 scope属性表示变量的作用范围,若没有指定,默认为保存于page范围。

<c:choose>标记

<c:when>标记

<c:otherwise>标记 

这三个标记用于复杂的条件判断,与Java中的switch-case-default条件语句类似; <c:choose>标记相当于switch; <c:when>标记相对于switch语句中的case关键字;<c:otherwise>标记相当于switch语句中的default关键字; 在<c:choose>标记中可以有任意多个<c:when>标记和一个<c:otherwise>标记。

<c:choose>

        <c:when test="condition">

                    when标记体

        </c:when>

        …<!—多个<c:when>标记 -->

        <c:otherwise>

                 otherwise标记体

        </c:otherwise>

</c:choose>

说明:在<c:choose>标记中可以没有<c:otherwise>子标记,但至少要有一个<c:when>子标记。

<c:when>和<c:otherwise>必须是<c:choose>的子标记,不能单独使用。

<c:when>必须在<c:otherwise>前出现, 如果包含<c:otherwise>,<c:otherwise>必须是<c:choose>的最后一个子标记。

 迭代标记

<c:forEach>标记

用于遍历处理一个集合对象中的元素,或者循环指定的次数。

 var属性用来指定循环的变量名。 items属性表示要遍历的集合对象。 varStatus属性用来指定一个状态对象,调用该对象的方法可以得到循环过程中的一些状态信息,如getIndex方法或getCount方法。 begin和end属性:如果存在items属性,则表示从集合对象的begin位置开始遍历,直至end位置结束遍历。若不存在items属性,begin表示循环的起始值,end表示循环的结束值。begin的取值要大于等于0。 step属性用来指定循环的步长,默认值是1。

<c:forTokens>标记

 说明: items属性表示要迭代的字符串。 delims属性用来指定一个或多个分隔符,如“,;”表示使用分隔符“,”和“;”来分割字符串。 其他属性的意义和作用和<c:forEach>标记类似。

URL标记

<c:import>标记

可以把本站内或其他网站的静态和动态文件导入到本JSP页面。

说明: url表示要导入资源的URL路径。 context表示上下文路径,用于访问同一服务器的其他Web应用。其值必须以“/”开头,如果指定了该属性,那么url属性值也必须以“/”开头。 charEncoding表示被导入文件的编码格式。

<c:redirect>标记

可以将客户端请求从一个页面重定向到其他文件,其功能作用相当于response.sendRedirect()方法。

 说明: 其中url、context属性的含义同<c:import>标记。 标记体中的<c:param>表示向目标路径传递的参数信息。

<c:url>标记

可以生成一个URL路径的字符串,该URL路径还可以带参数。

 说明: 该语法将输出产生的URL字符串信息。 如果指定了var和scope属性,所产生的URL字符串信息就不再输出,而是存储在变量中以备后用。

题目:JavaBean 

16.以下关于JavaBean的描述错误的是( C   )

A、JavaBean是一个公有java类         

B、JavaBean提供给外界使用的方法是公有类型的

C、JavaBean必须有一个带参构造方法    

D、在JSP中使用的JavaBean必须放在一个有名包中

第8章 重构程序结构

一个好的Web应用应该具有如下特点:功能完善、易于实现和维护、易于扩展等。 一个Web应用通常应该被分解为两个部分

1. 由界面设计人员完成的表示层(主要做网页界面设计)

 2. 由程序设计人员实现的行为层(主要完成本Web应用的各种功能)

用JSP开发的Web应用模型可以分为Model1和Model2。 JSP Model1简单轻便,适合小型Web项目的快速开发; JSP Model2模型是在JSP Model1的基础上提出的,它提供了更清晰的代码分层,更适用于多人合作开发的大型Web项目,实际开发过程中可以根据项目需求,选择合适的模型。

对于小型的Web应用,通常可以使用模型1来完成。 模型1可以分为两种方式:     一种是完全使用JSP页面来开发Web应用;另一种是使用JSP页面和JavaBean相结合的方式。由JSP页面来接收客户端请求,用JavaBean或其它服务来完成业务逻辑和生成返回页面。

在模型2中,使用了JSP、JavaBean和Servlet三种技术。 其中,Servlet扮演一个控制者的角色。 1. 浏览器的请求首先发送给Servlet; 2. Servlet执行流程控制,并根据需要创建JavaBeans对象,这些JavaBeans对象完成诸如访问数据库等服务,并返回处理结果; 3. 最后Servlet再将处理结果交由JSP文件生成网页返回给客户端。

在模型2中,JSP文件不再处理业务逻辑。 它的主要功能是生成返回给客户端的网页。 在模型2中,各个开发者的角色划分非常明确。   因此,对于复杂的Web应用开发,使用模型2的优点不言而喻。     (但对于小型应用,还是使用模型1更简单)

MVC模型

MVC模型是一种将应用分解成三个独立部分的通用模型(并不单指JSP应用)。 这三个部分分别是:     模型(Model):描述系统的数据     视图(view):数据的显示,包括图形、文本和文件输出等;      控制器(Controller):获取系统的输入,控制系统的执行;

JSP模型2其实就是一种MVC体系结构,也称为MVC模型2。

 其中,Servlet处理所有请求,并执行业务逻辑,相当于控制器(Controller)的作用;

 而JavaBeans用于操作各种数据和对象,相当于模型(Model)

JSP文件用于生成返回给客户端的页面,则相当于视图组件(View)。

MVC设计模式

MVC设计模式将软件程序分为三个核心模块:模型(Model)、视图(View)和控制器(Controller) 。

1.模型         模型(Model)负责管理应用程序的业务数据、定义访问控制以及修改这些数据的业务规则。当模型的状态发生改变时,它会通知视图发生改变,并为视图提供查询模型状态的方法。

2.视图         视图(View)负责与用户进行交互,它从模型中获取数据向用户展示,同时也能将用户请求传递给控制器进行处理。当模型的状态发生改变时,视图会对用户界面进行同步更新,从而保持与模型数据的一致性。

3.控制器         控制器(Controller)是负责应用程序中处理用户交互的部分,它负责从视图中读取数据,控制用户输入,并向模型发送数据。

 设计模式 针对典型问题所提供的一套成熟的解决方案 MVC是一种流行的程序设计模式,把程序理解为由模型(Model)、视图(View)和控制器(Controller)三个部分组成

MVC设计模式的特点

实现了程序的分层结构,将功能实现、用户界面和流程控制分别由不同的模块来实现,并在各模块之间实现了良好地解耦

程序结构的分层使得团队开发和项目管理更加容易

程序的分层实现使得系统的模块化程度高,便于升级和移植,同时也为组件的重用提供了方便

统一的处理流程便于代码的管理和阅读

基于MVC的开发增加了系统的复杂性 ,对于功能简单、规模较小的应用建议采用简化的MVC模型 ,JSP Model1

Servlet开发

Servlet是用Java语言编写的一个类,用于扩展服务器的功能,实现驻留在服务器上的通过请求/响应模型来访问的应用程序。 Servlet不是一个独立的应用程序,需要被Servlet容器调用才能执行。 容器与Servlet之间的接口是由Servlet API统一定义的

Servlet API中的javax.servlet.http包里定义了一组专门针对HTTP协议的接口和类

Servlet运行在Servlet容器中,其生命周期由容器管理,主要包括以下几个阶段:

(1)Servlet容器在首次调用Servlet时为它创建一个实例

(2)容器调用该实例的init()方法进行初始化。如果初始化失败则直接卸载该实例;

(3)如果容器对该Servlet有请求,就调用此实例的service()方法提供服务,如果服务出错则抛出Unavailable异常。

(4)在销毁此实例之前,容器会调用它的destroy()方法

(5)销毁实例,生命周期结束。 

编写Servlet的基本方法是实现javax.servlet.Servlet接口

Web应用中的Servlet主要用于处理HTTP请求,一般通过继承javax.servlet.http.HttpServlet类来编写Servlet

HttpServlet类的主要方法 

 使用Servlet需要在Web应用描述文件web.xml中配置它的定义和映射

 Servlet的应用方法 编写Servlet 编译和部署 调用Servlet

 编写Servlet 第一步,导入javax.servlet包、javax.servlet.http包及其它必要的包。 第二步,继承HttpServlet类,并重写doPost()和doGet()方法。 第三步,在doPost()和doGet()方法中依次实现获取请求参数、创建输出对象、设置响应类型、输出响应内容等功能。

Servlet过滤器

Servlet过滤器多用于身份认证、数据压缩、数据加密、乱码处理等非核心业务场景

Filter接口

 doFilter()方法的功能是调用过滤器链中的下一个过滤器,如果当前过滤器已经是最后一个,则会将请求转发给目标资源。当Web服务器向浏览器返回响应时,会被以相反的顺序再次通过过滤器链

 使用过滤器也需要在Web应用描述文件web.xml中配置它的定义和映射

过滤器的应用方法 编写过滤器 编译和部署 运行使用

题目:Servlet、MVC

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

A、HttpServletRequest        B、HttpServlet       

C、HttpServletResponse            D、GenericServlet

11.MVC中V指的是(   A  )。

A、视图层    B、控制层    C、模型层    D、持久化层

18.下列哪个不是Servlet接口的方法(   D  )

A、doGet方法    B、doPost方法    C、init方法    D、forward方法

19.Servlet 使用(   C )接口的 forward和 include方法进行通信。

A、ServletContext        B、ServletConfig   

C、RequestDispatcher     D、HttpSession

9.以下哪个方法不是Servlet的生命周期接口定义的?( D    )

A、init()

B、service()

C、destroy()

D、create()

11.MVC中C指的是(  B    )。

A、视图层    B、控制层    C、模型层    D、持久化层

12.MVC架构中使用HTML界面、JSP界面实现用户界面,使用(   B  )实现控制逻辑,使用JavaBean实现模型层。

A、JSP    B、 Servlet   C.、JavaScript    D.、EJB

20、用HttpServlet类的方法时,必须带两个参数,它们是(    A )

A、HttpServletRequest, HttpServletResponse

B、ServletRequest, ServletResponse

C、ServletIntputStream, ServletOutputStream

D、Request, Response

简答题

web简答题
1简述C/S结构与B/S结构的特点及各自的优势。
C/S模式就是客户端+服务器,一种两层结构的系统,第一层是在客户机系统上结合了表示与业务逻辑;第二层是通过网络结合了数据库服务器。
优点是:不依赖企业外网环境
缺点是复杂。
B/S模式,即浏览器/服务器模式,是一种从传统的二层C/S模式发展起来的新的网络结构模式,其本质是三层结构C/S模式。在B/S模式中,客户端运行浏览器软件。
优点是:异地浏览和信息采集的灵活性。
缺点是:客户端只能完成简单功能,服务器的负担很重。
2简述HTTP的主要特点
1.支持 客户/服务器模式。
2. 简单、快速
即:客户向服务器请求服务时,只需传送请求方法和路径
3. 允许传输任意类型的数据对象,具有灵活性。
4. 无连接(请求时连接,请求完释放连接)
无连接指的是 限制每次连接只处理一个请求。
5.无状态 (每个请求都是独立的)
3Web应用开发的主要流程包括哪些阶段?
需求分析,系统设计(界面设计,数据库设计,功能设计,架构设计),编程实现,测试发布
4举例说明HTML文件的基本结构。
HTML文档的基本结构包括文档类型声明、HTML标签、以及文档头部和主体。
5如何在HTML文件中使用CSS?
1、嵌入式,在HTML标签中使用style属性来设置css样式;
2、头部式,在head标签中使用style标签来设置css样式;
3、外部式,使用link标签导入一个外部css文件;
4、使用“@import”规则导入外部css文件。
6如何在HTML文件中嵌人JavaScript脚本?
嵌入标记事件属性,使用脚本语句块,链接独立的脚本文件

(1)嵌入标记事件属性 脚本代码可以直接嵌入到HTML标记的事件属性中。 (2)使用脚本语句块 把脚本语句块放在HTML页面中的<script>标记中,(3)用<script>l链接独立的脚本文件。
7Java web应用的开发环境和运行环境。
集成开发环境IDEor文本
jdk,tomcat,浏览器,MySQL

Java Web应用程序的运行环境涉及到三个方面的需要: 能够运行Java代码,需要提供JRE。 能够提供Web服务,需要Web服务器和WEB浏览器。 能够提供应用程序功能,需要有运行相关程序的基础平台,即JSP引擎。
8 JSP的运行机制
当浏览器向服务器发出请求来访问一个JSP页面时,所请求的JSP文件会被服务器端的JSP引擎转化为一个Java类,并被编译成一个字节码文件,再转载到Java虚拟机中运行,最后把运行产生的输出作为对本次请求的响应,返回给浏览器。

JSP程序本质上是在服务器端执行的Java Servlet,执行完毕通常会返回给客户端一个HTML文件作为响应,客户端浏览器即可查看该响应文件的内容
9JSP中实现页面间的跳转有哪几种方式?
超链接方法,href
表单提交方法,action
页面重定向方法,response对象的sendredirect方法
请求转发方法,forward标记or request对象的getrequestdispatcher方法
10简述JSP中的各种作用域及相关的内置对象。
1.application作用域,有效范围是整个应用
application,封装了整个页面共享的信息
2.session作用域,当前对话
session,当前请求的对话信息
3.request作用域,当前请求
request。封装了客户端的请求信息
4.page作用域,当前页面
response,封装了服务端响应信息
pageContext,当前页面的属性信息
out,用于向客户端输出信息
config,封装了jsp页面对应servlet的配置信息
page,jsp页面类的实例
exception,封装了发生的异常信息
九大内置对象,写在对应作用域下面
11简述session和Cookie的区别与联系
都可以保存会话信息,但实现机制完全不同
对象不同;
存储数据大小不同;不限制大小,4K*20
生命周期不同;会话期间,关闭之前或设定时间之前
存储位置不同;服务器端,客户端
数据类型不同;
安全性不同。高,低
12简述JDBC数据库连接的基本概念和主要功能。
JDBC是一种可用于执行SQL语句的JAVA API,是链接数据库和JAVA应用程序的纽带
与数据库建立一个链接
提交SQL语句
处理查询结果
13基于JDBC编写数据库访问代码主要有哪些步骤?
一导入JDBC API,二加载驱动程序,三建立数据库连接,四创建statement对象,五执行SQL语句,六,处理执行结果,七关闭链接。
14什么是SQL注入攻击?在JavaWeb应用开发中如何防范?
把恶意的SQL命令填写到web表单中提交,达到欺骗服务器执行恶意SQL命令的目的。
第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。
第二:删除用户输入内容中的所有连字符。
第三:对于用来执行查询的数据库帐户,限制其权限。
15编写JavaBean需要遵循哪些规范?
是一个公共类
具有无参数的公共构造方法
具有公共的setter方法和getter方法来供外部存取其私有属性
16简述创建JavaBean实例的4种作用范围及其含义。
page,表示当前页面
request,表示一次请求
session,表示一次会话
application,表示一个应用
17简述jstl的主要用途和使用步骤
简化代码,方便重用,简化开发方法,风格统一
下载jstld的jar包,复制jar文件到lib文件夹,用taglib指令设置标记前缀
18简述JSP model1的概念
 以Jsp为中心的设计模式
19什么是MVC,有什么特点
MVC指的是模型-视图-控制器,是一种常用的软件架构模式。
分层结构,低耦合性,模块化程度高,高维护性,高重用性
20基于mvc开发web如何功能设计
用jsp作为视图层,servlet作为控件层,javabean作为模型层

21.include指令标签和include动作标签有什么区别?

(1)include指令标记:

把被包含的文件的内容放于包含文件中组成一个文件后编译运行.

(2)include动作标记:

把被包含的文件的运行结果放于包含文件运行产生的结果中,这2个文件各自编译运行.

1 include 动作是动态的,而 include 指令是静态的

include 动作在执行阶段插入文件,把被插入文件包含进来。而 include 指令是静态的,它把被嵌入文件插到当前位置后再进行翻译。

2 include 动作所以 JSP 页面与被插入的文件在 逻辑和语法上是独立的。而 include 指令的 JSP 页面和被嵌入文件在语法上不独立,合并后 的新文件要符合 JSP 页面语法规则。

3 include 指令速度快。Include 动作处理灵活,但是运行速度稍慢。

22.请写出Servlet API包中5个类或接口。

sevlet接口,httpservlet类,servletrequest接口,

servletresponse接口,httpservletresquest接口

23 使用forward和sendRedirect进行重定向有什么区别?

sendRedirect()

(1) ServletResqonse接口中的方法,用于响应重定向

(2) 跳转后浏览器地址栏变化

(3) 可以请求其他服务器资源

(5) 传值只能在url中带parameter或者放在session中

forward()

(1) RequestDispatcher接口中的方法,用于请求跳转

(2) 跳转后浏览器地址栏不会变化

(3) 只能在应用程序内部转发

(4) 参数

A. ServletRequest获取的,参数可以指定

B. ServletContext获取的,绝对路径

传值可以使用三种方法:url中带parameter,session,request.setAttribut

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

JSP 共有以下6 种基本动作

jsp:include :在页面被请求的时候引入一个文件。

jsp:useBean :寻找或者实例化一个JavaBean 。

jsp:setProperty :设置JavaBean 的属性。

jsp:getProperty :输出某个JavaBean 的属性。

jsp:forward :把请求转到一个新的页面。

serverlet的生命周期及各阶段的作用

1)、初始化阶段:调用init()方法

2)、响应客户端请求阶段:调用service()方法

3)、终止阶段:调用destroy()方法

加载 servlet 、初始化(init())、处理服务(service())、销毁(destroy())、卸载
什么是cookie
是某些网站为了辨别用户身份,进行 Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户 客户端计算机暂时或永久保存的信息

简述表单中POST和GET的区别。

Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据

public class studao{
    public arraylist<student>find()
    {
        arraylist<student>list=new arraylist<student>();
        connection conn=null;//连接数据库的接口,得到连接数据库的对象
        statement stmt=null;//执行数据库语句
        resultset rs=null;//这是用来接受数据库返回对象的
        try{
            conn=deget.getconnection();//调用方法连接数据库
            stmt=conn.createstatement();//创建一个sql语句对象
            string sql="select * from stu";//写一个语句
            rs=stmt.executequery(sql);//执行静态查询语句,返回resultset对象
            while(rs.next())
            {
                student stu=new student();//建一个学生对象
                stu.setstuid(rs.getstring("stuid"));//读出学生对象
                stu.setstuname(rs.getstring("stuname"));
                ...
                list.add(stu);//把学生对象添加到列表
            }
        }catch(sqlexception e1){
            system.out.println(e1);
        }finally{deget.closeconnection(conn);}
        return list;
    }
    public student get(sting id){
        student stu=new student();
        connection conn=null;
        statement stmt=null;
        resultset rs=null;
        try{
            conn=dbget.getconnection();
            stmt=conn.createstatement();
            string sql="select * from stu where stuid="+id;//写一个语句
            rs=stmt.executequery(sql);//执行静态查询语句,返回resultset对象

        while(rs.next)
        {
            student stu=new student();
            stu.setstuid(rs.getstring("stuid"));
            ...
        }...
        return stu;
    }

    public boolean add(student stu)
    {
        boolean result=false;
        int n=0;
        connection conn=null;
        statement stmt=null;
        try{
            conn=deget.getconnection();
            stmt=conn.createstatement();
            string sql="insert into stu values('"
            +stu.getStuid()+"','"
            +stu....
            +")";
            n=stmt.executeUpdate(sql);

        }...
        if(n>0) result =true;
        return result;
    }

    public boolean deletebyld(string id)
    {
        boolean result=false;
        int n=0;
        connection conn=null;
        statement stmt=null;
        try{
            conn=dbget.getconnection();
            stmt=conn.createstatement();
            string sql="delete from stu where stuid= "+id;
            n=stmt.executeUpdate(sql);
        }...
        if(n>0)...
    }
    public boolean modify(student stu){
        boolean result=false;
        int n=0;
        connection conn=null;
        preparestatement stmt=null;
        try{
            conn=dbget.getconnection();
            string sql="update stu set stuname=?,stusex=?....where stuid=?";
            stmt=conn.prepareStatement(sql);
            stmt.setstring(1,stu.getstuname());
            stmt.setstring(2,...)...
            n=stmt.executeUpdate();

        }...
        if(n>0)...
    }
}

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值