j7-前端基础&通信基础&Servlet-请求与响应&Cookie和Session&JSP&El表达式和JSTl标准标签库&JDBC&数据库连接池与DBUtils工具&文件的上传和下载

前端基础

1 HTML

超文本标记语言,最新版本是HTML5,常见版本是HTML4.01

标签说明

<!DOCTYPE>:说明HTML使用版本和标准

<html></html>:说明是一个html文档

<head><head>:头部信息

<body><body>:主体标记

<textarea><textarea>:多行文本标记

注释

<!-- -->

2 CSS

层叠样式表,用于控制网页样式,并允许将样式信息网页内容分离的标记语言

2.1 好处

1.美化网页

2.提高代码复用率

3.实现结构与样式相分离

2.2引入方式

1.行内样式:写在标签内部的样式

标签内使用style属性,在其内部书写样式

color:字体颜色

2.内部样式:写在html文件内的样式

在head标签内使用style标签

选择器{

样式名:属性值;}

3.外部样式

a 新建css文件

b 让css文件与html文件关联,使用<link />

c 在css样式中书写样式语句

内部样式优先级与外部样式相等。谁后写以谁为主,即谁离标签近以谁为主

优先级:行内样式 > 内部样式 = 外部样式

2.3 选择器

1.通用选择器

* 可以选择到所有元素

项目中比较普遍的样式都可以在此内部写出,不常用的样式尽量不要在此使用

2.元素选择器直接以标签的名字作为选择器使用

3.类选择器 class

a.在标签内使用class属性,给标签命名一个名字className

b.使用 .className的方式,作为选择器,选中该标签

注意:class 是可以重复命名的

元素名.className 限定所有使用此className的标签,只有此类标签可以使用

一个标签可以使用多个class 使用空格隔开即可

4.id选择器主要在js中使用id

a.在标签内使用id属性,命名idName

b.在样式中使用#idName的方式,作为选择器

id不能重复命名,主要在js中使用,但如果只是在css中,是可以重复显示效果

优先级:id>class>元素>*

3 JavaScript-Web动态脚本语言

Web动态脚本语言,嵌入网页中,给网页添加动态功能。简称JS语言,现在的标准是ES6

3.1 HTML DOM树

把HTML各节点做成树模型

document对象表示整个页面

获取指定元素的两种方法

1 通过id属性获取元素

document.getElementById(“id名”)

2 通过name属性获取元素

name属性可能相同,返回一个数组,使用数组下标获取指定元素

document.getElementByName(“name名”)[0]

3.2 JS的引入

1 内嵌式

在head部,使用<script></script>引入

<script  type=”text/javascript”>js代码</script>

2 外链式

当js代码比较复杂或js代码需要在多处使用,可用外链式。

使用<script></script>,增加src加入js文件路径

<script  type=”text/javascript  src=”js文件路径”></script>

3.3 数据类型

类型

含义

说明

Number

数值型

不区分整型和浮点型,不要引号括起来

String

字符型

用单引或双引括起来

Boolean

布尔型

true、false两种值

Object

对象型

一组键值对集合

Null

空类型

没有值

Undefined

未定义类型

变量被创建但未赋值

3.4 变量

JS是弱语言,在声明变量时不用指定变量类型

使用var声明变量

var  num=13

3.5 方法

方法名唯一,区分大小写。

使用function声明方法

function  fname(参1,参2){语句

return 表达式}

常用方法

alert():弹出警示对话框

3.6 常用事件

JS使用事件驱动,响应用户操作。

类型

事件

说明

鼠标

onclick()

鼠标单击

表单

onblur()

失去焦点

onchange()

失去焦点且元素改变

onfocus()

获得焦点

onreset()

表单被重置

onsubmit()

表单被提交

页面

onlodad()

页面加载完成

3.7 常用对象

Windows对象:浏览器窗口,用于获取窗口大小、位置和设置定时器。

Date对象:日期和时间对象,使用时要new,提供get和set方法

var  myDate=new  Date()

String对象:字符串对象,提供对字符串处理的方法

3.8 ES6高级语法

let:提供了块作用域

变量作用域范围更小,控制更加细粒度,更加节省资源

let x = 10;

const常量,不能修改,不能再次赋值。

const P = 3.14;

arrow function:箭头函数,新语法形式,较难理解

var  es6Fun = () => "es6箭头函数无参"

通信基础

1 XML传输格式

统一的数据传递格式,解决不同语言之间数据传递格式不兼容。

特点:标记成对出现,标记可嵌套可自定义标记

1.1 HTML和的XML区别

1)HTML用来显示数据,XML用来传递数据

2)HTML不区分大小写,XML严格区分大小写

3)HTML中空格自动过滤,XML空格不会自动删除

4)HTML标记是预定义的,XML标记可以自定义

1.2 XML声明

XML文档声明位于第一行

<?xml  版本  编码  文档独立性>

<?xml  version=”1.0”  encoding=”UTF-8”  standalone”yes”?>

1.3 XML元素定义

<城市>贵阳</城市>

1.4 XML元素属性定义

属性是对元素的进一步说明

<售价  单位=”元”>23</售价>

1.5 XML约束语言-DTD

对XML标签约束,早期出现。

1 DTD文件引入

内嵌式

<?xml  version=”1.0”  encoding=”UTF-8”  standalone”yes”?>

<!DOCTYPE  根元素  [DTD语句]>

外链式

<!DOCTYPE  根元素  SYSTEM  “DTD文件路径”>

2 DTD元素定义

<!ELEMENT  元素名称  元素内容>

1.6 XML约束语言-Schema

Schema采用XML语法格式,比DTD更好理解。

Schema和XML的合法性检测机制相同

Schema比DTD支持更多数据类型,约束能力比DTD更强

引入:通过“xsi:schemaLocation”声明

元素定义

<xs:element name=”元素名称”  type=”数据类型”>

2 HTTP传输协议

超文本传输协议,解决客户端和服务端数据传输。

HTTP请求消息包括:请求行、请求头、实体

HTTP响应消息包括:响应行、响应头、实体

请求行:位于第一行,有3部分:请求方式、资源路径、HTTP版本

GET  index.html  HTTP/1.1

2.1 常用请求方法

1)get请求:直接在浏览器地址输入url

?问号后为参数,参数间用&隔开

https://www.baidu.com/?source=baidu

2)post请求:以实体传输内容

post比get更安全,post传输数据大小无限制

3)put请求:修改数据

2.2 常用状态码

状态码

说明

202

请求成功

302

重定向错误

304

客户端缓存版本是最新的

404

请求地址错误

500

服务器错误

Servlet-请求与响应

1 Servlet基础

1 Servlet是指java中Servlet抽象类及其实现类

2 Servlet是用来处理客户端请求,并返回响应

1.1特点

1 方便:提供大量工具用来处理http请求

2 跨平台:Servlet是java类,也有java的跨平台性

3 灵活可扩展:因为是java类,有java继承性

1.2 Servlet抽象类

抽象方法

init():初始化

service():响应用户请求

destroy():释放资源

geServletConfig():获取初始化配置信息

getServletInfo():获取Servlet信息

1.3 Servlet的实现类HttpServlet

常用方法

doGet():处理get请求

doPost():处理post请求

doPut():处理doPut请求

1.4 Servlet的生命周期

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

2 运行阶段:调用service()方法,处理请求,返回响应

3 销毁阶段:调用destroy(),释放资源

2 请求对象-HttpServletRequest

封装Http请求,包含:

获取请求行的方法

获取请求头的方法

获取请求体的方法

3 响应对象-HttpServletResponse

封装响应信息,包含:

发送状态码的方法

发送响应头的方法

发送响应体的方法

4 请求重定向

当一个Servlet无法处理请求,通过改变请求路径,指向另一个Servlet。

重定向方法一

调用HttpServletResponse中的,sendRedirect()方法,返回302响应码

重定向方法二

创建RequestDispatcher对象,调用forward()方法或include()方法

forward():转发请求;include():包含当前Servlet响应和转发后的响应

5 Filter过滤器

1 对调用Srvlet过程进行拦截,实现特殊功能

2 请求Servlet前,经过过滤器,进行预处理

3 响应客户端前,经过过滤器,处理后在响应

4 Filter是servlet.Filter的一个实现类

5 可以有多个Filter

6 多个Filter对同一个请求拦截,会形成Filter链(FilterChain对象),调用FilChain的doFilter()方法可对请求放行

常用方法

init():初始化

doFilter():过滤处理代码

destroy():销毁并释放资源

Filter过滤器事例

1 使用过滤器,对请求和响应进行统一编码设置,实现全站统一编码。

6 Servlet的Listener监听器

监听器:对事件发生做监听并处理。如鼠标点击,键盘按下

Servlet监听器

1 实现HttpSessionListener、ServletRequestListener等Java特殊类

2 对HttpSession和ServletRequest8类Java域对象的创建、修改和销毁过程进行监听

会话技术:Cookie和Session

会话技术:服务器跟踪用户信息的技术

1 Cookie

将会话数据保存在用户的浏览器中。

服务器向客户端发送数据时,会在HTTP响应头字段中增加Set-Cookie字段。

构造方法:Cookie类有且仅有一个构造方法

public Cookie(String name,String value)

常用方法:

getName():返回Cookie名称

getValue():返回Cookie值

setValue(String value):为Cookie设置一个新值

SetMaxAge(int expiry):设置Cookie在用户浏览器保持的有效秒数

2 Session

1 当会话数据较多时,将会话数据保存在服务端

2 服务端保存Session,客户端浏览器保存id。通过id找到Session

3 Session也使用Cookie技术,即浏览器保存id

4 如果用户禁用Cookie,使用URL重写机制(将jsessionid做键,标识id做值,把参数附加到请求URL中)

创建Session

public  HttpSession  getSession(boolean  create):判断是否创建新的Session对象

public  HttpSession  getSession()

常用方法

getId():返回Session标识id

idNew():判断Session是否是新创建的

setAttribite(String name  Object value):添加一个Session的值

getAttribite():获取一个Session的值

removeAttribite(String name):删除指定名称的值

Session实列

1 将商品信息保存到Sesion中,实现购物车功能

2 将用户名和密码保存到Sessin中,判断用户是否登录,实现用户登录功能。

JSP-动态网页开发技术

建立在Servlet规范上的动态网页开发技术

1 HTML代码和Java代码共存

2 HTML实现网页静态内容显示,Java代码实现网页动态内容显示

3 文件扩展名是.jsp

4 与HTMl页面的区别是:JSP页面第一行多出一句<page>指令

5 JSP是在原有的HTMl基础上添加具有Java特点的代码(JSP的语法元素)

1 特点

1 跨平台:使用Java语言,可以跨平台

2 组件重用:使用JavaBean封装业务代码,可以重用

3 预编译:JSP页面代码会预编译,再次访问不会重新编译,节省资源

2 JSP运行原理

1 发出请求,访问JSP

2 将jsp文件转换成java源文件(.java)

3 将java源文件编译字节码文件(.class),一个字节码文件就是一个Servlet

4 初始化Servlet,执行jspInit()方法,常驻内存中

5 执行jspService()方法处理请求,一个请求创建一个线程,使用多线程

6 如果修改Jsp,重新编译,取代内存的Servlet

7 由于系统资源不足等原因,调用jspDestroy()方法,释放资源

8 请求处理完成,返回HTML格式响应消息

3 脚本元素

嵌套在<%和%>中的Java代码

JSP Scriptlets

一段Java代码

<%  java代码  %>

JSP 声明语句

声明变量和方法

<%!  定义变量和方法  %>

JSP 表达式

将程序数据输出到客户端

<%=  表达式  %>

4 注释

<%--  注释  --%>

5 JSP指令

page指令

对页面信息进行描述

<%@  page  属性名=“属性值”  %>

include指令

静态的引入一个文件

<%@  include  file=”文件路径”  %>

6 JSP隐式对象

在JSP页面中,有些对象要频繁使用,JPS提供9个隐式对象,它们是默认创建(隐式)的。

对象

说明

out

用于用户页面输出

request

得到请求信息

response

响应信息

config

服务器配置

session

保存用户信息

application

所有用户的共享信息

page

当前页面转换后的Servlet类实例

pageContext

JSP页面容器,提供方法获取其他8个隐式对象

exception

用来处理异常

7 JSP动作元素

控制JSP,执行常用的JSP页面动作,实现多行Java代码实现的效果。

1 <jsp:include>动作元素

把其他页面的输出内容插入当前JSP中

<jsp:include  page=”文件相对路径”  flush=”是否刷新”>

include指令和<jsp:include>的区别

1 include指令引入文件遵循jsp规范,要与当前jsp页面合并,编译成一个Servlet

2 <jsp:include>引入的文件是一个实列,要能独立运行

3 include指令文件在编译时包含,<jsp:include>引入文件在运行时包含

4 <jsp:include>被引入的页面不能改变响应码或设置响应头。include则可以。

2 <jsp:forward>动作元素

将当前请求转发到其他Web资源

<jsp:forward  page=”相对路径”

8 JSP开发模型

采用JSP+Servlet+JavaBean。事实上就是MVC模型。

Model:JavaBean  View:JSP  Controller:Servlet

El表达式和JSTl标准标签库

1 JavaBean

1 Java中一个可以重复使用的软件组件,本质是一个java类

2 必须具有一个公共的、无参构造方法,java会默认生成

3 必须提供公共的get()方法和set()方法

目的:对需要重复使用的数据和功能进行封装,提高复用性。

BeanUtils

动态访问JavaBean属性的工具。

常用方法

static  getProperty():获取bean属性

static  setProperty():设置指定的属性值

static  populate():根据指定名称,为bean赋值

2 El表达式

简化jsp页面的书写,是一种简单数据访问语言。语法如下:

${表达式}

1 EL中的标识符

1 不能以数字开头

2 不能使用EL中的保留字

3 不能是EL隐式对象

4 不能包含特殊字符

2 EL中的变量

EL的变量不用事先声明,就可以直接使用

${product}

3 EL中的运算符

点运算符(.)

用于访问JSP页面中某些对象的属性

${user.name}

方括号运算符 ([])

1 与点运算符功能相同,但当属性名有特殊字符(-或?等)时只能使用方括号运算符。

2 点运算符有时可以和方括号运算符互换${user.name}等价于${user[name]}

比较运算符

为避免与jsp标签冲突,EL通常使用以下比较运算符

如果运算符后是数字,比较符和数字之间要有一个空格

<(it):${1it 2}

>(gt):${2gt 1}

<=(le):${1le 2}

>=(ge):${2ge 1}

empty运算符

判断对象或变量是否为空

${empty  var}

4 EL中隐式对象

EL中有11个隐式对象,如pageContext、Cookie

3 JSTl标准标签库

JSP支持自定义标签,JSTL是统一的标准标签库。

JSTL由五部分构成:

Core:通用操作标签,前缀c

l18N:国际化标签,前缀fmt

SQL:数据标签,前缀sql

XML:XML文档标签库,前缀x

Functions:方法标签库,前缀fn

常用标签

标签

说明

<c:out>

向页面输出一段文本信息

<c:if>

if条件判断

<c:choose>

if-else条件判断

<c:forEach>

for循环

<c:url>

构造URL

<c:param>

向url中附件参数

JDBC-Java数据库连接

一套执行SQL语句的Java API,可对数据库中的数据操作。

要求不同的数据库厂商按照统一的规范提供数据库驱动。

1 Driver接口

所有JDBC驱动必须实现的接口,专门给数据库厂商使用

2 DriverManager类

用于加载JDBC驱动并创建连接。

常用方法:

static  registerDriver(Driver driver):向DriverManager中注册JDBC驱动

static  getConnection(String  url,String  user,String  pwd):建立连接,返回Connection对象

3 Connection接口

数据库连接,只有获取Connection对象后才能访问数据。

常用方法

getMetaData():返回表示数据库的元数据的DatabaseMetaData对象

createStatement():创建一个Statement对象并将SQL语句发送到数据库

prepareStatement(String sql):创建一个prepareStatement对象并将参数化的SQL语句发送到数据库

prepareCall(String sql):创建一个CallableStatement对象调用存储过程

4 Statement接口

执行静态sql,返回结果对象

Statement接口的对象通过Connection实例调用cteateStatement()方法获得

执行sql语句方法

execute(String sql):执行各种sql,返回布尔值,是否有结果。查询结果通过Statement的getResultSet()方法获得

executeUpdate(String sql):执行insert、update、delete语句,返回一个int值,表示受该sql语句影响的条数

executeQuery(String sql):执行select,返回一个查询结果的ResultSet对象

5 PreparedStatement接口

1 是Statement的子接口,用于执行预编译的SQL语句。

2 可使用带参数的SQL语句,SQL语句中用占位符“?”代替参数

3 通过setXxx()方法为SQL语句的参数赋值

常用方法:

executeUpdate():更新数据,无返回值

executeQuery():执行查询,返回ResultSet对象

setInt(int para,int x):指定参数,设置int值

setFloat(int para ,float x):指定参数,设置float值

setString(int para,String x):指定参数,设置String值

setDate(int para,Date x):指定参数,设置Date值,是sql.Date而不是util.Date

addBatch():将一组参数添加到批处理中

setCharacterStream(int para,Reader r,int length):输入流写入数据库文本字段

setBinaryStream(int para,inputStream x,int length):二进制输入流写入二进制字段

6 ResultSet接口

用于保存JDBC查询时的结果集。

常用方法

getString(int index):获取字段的String值,index表示字段索引

getString(String name):获取字段的Sring值,name表示字段名

getInt(int index):获取字段的int值,index表示字段索引

getint(String name):获取字段的int值,name表示字段名

getDate(int index):获取字段的Date值,index表示字段索引

getDate(String name)获取字段的Date值,name表示字段名

next():指向下一行

absolute(int row):移动到指定行

afterLast():移动到最后一行之后

beforeFirst():移动到第一行之前

previous():移动到上一行

last():移动到最后一行

7 编写JDBC

1 注册数据库驱动

DriverManger.registerDriver(Driver driver)

Class.forName(“DriverName”)

2 通过DriverManger获取数据库连接

Connection  conn=DriverManger.getConnection(String url,String user,String pwd)

Mysql的URL写法

jdbc:mysql://127.0.0.1:3306/databasename

3 通过Connection 对象获取Statement对象

①createStatement():创建基本的Statement对象

②prepareStatement():创建预编译的对象

③prepareCall():创建CallableStatement对象,调用存储过程的

Statement  stmt=conn.createStatement();

4 使用Statement执行SQL语句,返回结果集

execute()、executeQuery()、executeUpdate()

ResultSet  rs=stmt.executeQuery(sql)

5 操作ResultSet结果集

6 关闭结果集、关闭Statement语句,关闭连接、释放资源

rs.close()

stmt.close()

conn.close()

数据库连接池与DBUtils工具

1 数据库连接池

1)频繁创建数据库连接,消耗资源影响数据库访问效率

2)连接池管理连接,允许程序重复使用现有连接,减少创建和断开次数提高访问效率

DataSource接口

1)负责与数据库建立连接

2)把实现DataSource接口的类称为数据源

DBCP数据源

tomcat服务器使用的连接池组件

创建连接池的两种方式

1 通过BasicDataSource类直接创建数据源

BasicDataSource是DataSource接口的实现类

2 使用BasicDataSourceFactory工厂类读取配置文件,创建数据源

配置文件:config.properties

C3P0数据源

流行的开源数据库连接池之一。

开源框架Hibernate和Spring都支持该数据源

2 DBUtils工具

对JDBC简单封装,简化JDBC编码工作量

下载地址

http://commons.apache.org/proper/commons-dbutils/index.html

QueryRunner类:简化执行SQL语句。有两个方法

query():查询操作

update():增、删、改

ResultSetHandler接口:处理ResultSet结果集。有三个实现类

BeanHandler:将第一行数据封装到JavaBean中

BeanListHandler:将每一行数据封装到JavaBean中,并放到List

ScalarHander:将某条数据的一列存储成Object对象

文件的上传和下载

文件上传步骤:

1)在Web页面中添加上传输入项

2)在Servlet中读取上传的文件,并保存到本地磁盘

大多数文件上传是通过表单提交给服务器

1)form标签中,enctype设置为“multipart/form-data”,method设置为“post”

2)使用<input  type=”file”  name=”myfile”>,必须设置name的值

<form  enctype=”multipart/form-data”  method=”post”>

<input  type=”file”  name=”myfile”/>

</form>

开源组件:FileUPload组件通过Servlet来实现文件的上传功能

FileItem接口

封装单个表单字段元素的数据

DiskFileItemFactory类

将每一个文件封装成单独的FileItem

ServletFileUpload类

处理文件上传的核心高级类,使用parseRequest()方法将每一个表单数据封装成一个FileItem对象,然后以列表形式返回

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值