前言
黄色的是考点,蓝色的是重点。
HTML/CSS/JS
本章会有一个7分的程序设计题,用到前端知识
form表单元素,常用表单元素
html:HTML快速上手
基础语法、css常用选择器(ID、类)、盒子模型
css:网页美化指南
JS
常用数据类型(流程控制语句if-else)
概念:运行浏览器端上的脚本语言。可实现网页内容更新,数据动态变化,动画特效等。
作用:操作html页面元素、事件、属性,使其动起来
功能:数据校验、页面内容的动态处理、页面动画、控制浏览器行为
组成部分:
引入方式:注意:1.可多次引用 2.每次均使用script标签 3.不能混用
- 嵌入式:代码复用低、维护性、阅读性差
- 链接式 :复用高、易维护
基本语法
var a = 10, b = 'yy', c = 2;
一行只有一个语句时;可省略
var num = 24;
console.log(typeof num) 获取数据类型
js数据类型特点:
- js是弱类型脚本语言,所有变量均可使用var声明
- 变量赋值时确定类型
- 变量赋值为null时,类型为object
- 只声明不赋值,数据和数据类型均为undefined
- js标识符命名规则和java一致,避免使用$和jquery冲突
基本对象
数组、字符串、math
var num = Math.floor((Math.random()*100)) + 1 利用随机数[0,1)得到[0,100]的整数
JQuery
选择器:ID选择器标识一个元素怎么写
概念:兼容多浏览器的js脚本库,简化html文档的遍历、事件处理、动画和ajax交互
优点:强大的功能函数、丰富ui(用户界面)和插件、解决浏览器兼容问题、纠正错误脚本知识
选择器
核心:$代表对Jquery对象的引用
事件
入口函数和事件绑定:多为静态绑定
1.
- 将DOM原生对象转换为jQuery对象:可以使用
$()
函数,例如$('#myElement')
将选择器返回的原生DOM对象转换为jQuery对象。 - 将jQuery对象转换为DOM原生对象:可以通过调用jQuery对象的
.get(index)
方法,或者使用[]
索引访问器来获取原生DOM对象,例如$('#myElement').get(0)
或$('#myElement')[0]
。
2.使用.next()
方法可以获取id为myDiv
的div元素的下一个兄弟元素,例如 $('#myDiv').next()
3.
.attr()
:用于获取或设置元素的属性。.prop()
:用于获取或设置元素的属性或属性值(对于布尔值属性特别有用)。.addClass()
:添加一个或多个类到元素。.removeClass()
:移除一个或多个类从元素。.toggleClass()
:切换元素的一个或多个类。
4.
.each()
:对集合中的每个元素执行一个函数。.map()
:创建一个新数组,其包含集合中每个元素调用函数后的返回值。.filter()
:选择匹配特定选择器表达式的元素。.find()
:获取元素的后代元素,这些元素匹配选择器。.not()
:选择除了参数指定的元素之外的所有元素。.has()
:选择包含特定子元素的元素。.is()
:检查元素是否匹配特定的选择器或元素。
BootStrap
概念:由前端三件套开发的前端框架,由动态CSS语言Less编写
优点:开源、移动设备优先、浏览器支持、容易上手、快速开发、响应式设计
使用流程:下载bootstrap、将css、js文件放入项目、jquary放入js文件、页面引入
- container:固定容器的响应式布局规则,在窗口变化大小时,指定宽度范围使用固定的宽度
- container-fluid:流容器的响应式布局规则,随窗口大小变化时一同变化,横向全部占满
栅格系统:12列
HTTP协议与Web服务端
http协议
1.http请求方式有哪些?get post delete
2.http响应状态码有哪些?含义是?1xx、2xx、3xx
本节考选择和简答
即超文本传输协议,规定浏览器和服务器间数据传输的规定
HTTP协议特点:
- 基于TCP协议:面向连接、安全
- 1.基于请求响应模型:一次请求对应一次响应
- 2.无状态协议:对事务处理无记忆能力,每次请求响应都是独立的
- 优点:速度快
- 缺:多次请求间不能共享数据(java中使用会话技术cookie、session解决)
C/S结构:客户端-服务器端
用户通过客户端软件向服务器发起请求,服务端进行业务处理,并将处理结果响应给客户端
B/S结构 :浏览器-服务器端
无需开发客户端界面,使用统一标准的浏览器作为通用客户端,用户通过浏览器作为代理向web服务端发送请求,web服务端进行业务处理,将结果返回浏览器
每个网络分层模型有哪些协议?
请求
浏览器和服务器就可看作是不断地请求和响应。
给出url链接知道什么是请求行
浏览器的用哪个浏览器或者说是客户端的一些操作系统信息用哪个请求头
请求包含三部分:
- 请求行:请求方式/请求资源/http协议版本
- 请求头:第二行开始,为键值对
- 请求体:post请求的最后一部分,存放请求参数
响应
响应行的组成部分
包含三部分:响应行、响应头、响应体
常见的状态码,请求转发(重定向)它的响应状态码是3xx
- 301:请求资源永久移位 302请求资源临时移位
Tomcat
1.Tomcat乱码原因
Tomact控制台默认编码为UTF-8,windows控制台默认编码为ASCI,需调整日志输出编码
2.linux下解决端口号冲突的流程和命令
- 查看指定端口号占用 netstat -ano|findstr 8080
- 查看指定PID进程信息 tasklist|findstr 6980
- 终止程序taskkill/PID 6980 /F
tomcat每个目录的作用、常见问题怎么解决如闪退、启动乱码、端口占用
Servlet
servlet生命周期函数、体系结构、配置方法
问题3. Servlet 、GenericServlet、ServletRequest、ServletResponse接口
1.本质:Java类(程序)。web服务器或应用服务器上的Java类。
2.执行流程
接收请求、处理请求、发送响应
- 浏览器通过http请求访问web服务器,服务器接受请求根据URL查找servlrt,加载创建servlet实例处理请求,生成响应,清理资源销毁servlet,浏览器接收响应
3.特点:
- 平台独立性、多线程支持、优异性能
4.体系结构(2个类/3个接口如servletconfig)
5.创建servlet步骤
- 创建类,继承Httpservlet
- 重写doGet、doPost方法
- 配置servlet访问路径
配置:XML配置
注解配置(常用的参数)
urlpattern和servlet参数含义:都是servlet的访问URL,二者二选一
loadOnStartup=-1和1的区别
- 负数:延迟加载,即第一次请求时加载
- 非负数: 容器启动时加载,具有较高优先级,比其他正数值更先加载
映射路径
servlet程序若想被外界访问,需把servlet程序映射到一个URL路径上
- web.xml通过<url-pattern>配置
- 注解通过value和Urlpatterns配置
- Urlpatterns时要么以/开头,要么以*开头,"myweb"为非法路径,且下面映射规则不能混用如"/path/*.do"非法
映射规则:优先级依次降低
访问静态资源和静态页面是否需要经过Servlet处理,取决于Web服务器和应用服务器的配置以及所使用的框架 。如使用/*
即某个Servlet配置urlPatterns="/*"的话,访问任何界面都只会是该Servlet生成的响应
生命周期方法
servlet的生命周期由tomcat控制
四个方法:构造方法、init方法、service方法、destroy方法
- init方法:只调用一次,创建完servlet对象进行初始化,源码中有两个init方法:带参不带参
- service为servlet核心方法,每次请求都会调用,处理客户端的请求和响应,根据请求类型通过多态技术调用doGet、doPost方法
- destroy只调用一次,释放资源,停止服务器或重新部署web对象时销毁servlet对象
单例对象(存在并发问题、解决方式)
servlet是一个单例对象,服务器只会创建一个实例对象,驻留在内存中,为后续其他请求服务,直至应用卸载才会销毁。
当多个请求访问实例时就存在并发问题。解决:局部变量、同步代码块
1.声明servlet启动的顺序
2.精确、目录、扩展名、任意匹配
3.可看作四个方法,加载和实例化构造方法,初始化init,服务service,销毁destroy
JDBC
组件:
- DriveManager:驱动管理对象:注册驱动,获取数据库连接
- Connection:数据库连接对象
- Statement/PreparedStatement:执行sql对象
- ResultSet:结果集对象,封装查询结果
- SQLException:处理发生在数据库中的错误
工作原理(注册驱动...)
- 加载数据库注册驱动
- 连接数据库
- 执行SQL语句
- 处理结果
- 关闭连接
SQL注入问题(PreparedStatement)
含义:web应用没有判断用户输入是否合理,导致前端传入后端的参数是攻击者可控的,可根据参数带入到数据库查询,构造不同SQL语句对数据库作任意查询。
即用户在表单中输入包含SQL关键字的数据使数据库执行非常规代码的过程
数据库连接池技术
作用:避免频繁创建数据库连接
职责:分配、管理、释放数据库连接,允许应用重复使用现有数据库连接而非创建新的
技术原理:为数据库建立一个缓冲池,里面放入一定数量的连接,当有需要时从中取出,用完放回
专业描述:初始化时创建一定数量的数据库连接放在连接池中,当有需要时,不是直接创建Connection,而是向连接池申请,有空闲则返回,无空闲创建新的,用完回收。
JDBCUtils工具类
常用对象
servlet在接收http请求时会针对请求分别创建HttpServletRequest、HttpServletResponse对象。注意:每个请求都会包括三部分:请求行、请求头、请求体
HTTPServletRequest
请求行方法
请求行:内容包括:请求方式/请求资源/http协议版本
请求头方法
第二行开始,为键值对
请求体方法
请求参数方法
获取参数的方法有哪些?
请求转发
一种在服务器内部的资源跳转方式
如何获取cookies?
HttpServletRequest对象来获取客户端发送的cookies,使用getCookies()方法,返回一个Cookie数组:
Cookie[] cookies = request.getCookies(); // 获取所有cookies
转发方法
请求转发通过RequestDispatcher对象来实现,该对象可以通过HttpServletRequest对象的getRequestDispatcher()方法获得。:
// 获取请求转发器对象:RequestDispatcher
RequestDispatcher dispatcher = request.getRequestDispatcher("/targetServlet"); // 或者是"/target.jsp"
// 使用对象进行转发
dispatcher.forward(request, response);
HTTPServletResponse
概念:Tomcat接收请求就会创建HTTPServletResponse对象供servlet使用,其中不仅包括响应数据,何有方法去操纵数据,如设置响应头、发送错误状态码、写入响应内容
设置响应行
response对象可以改变响应信息
改变响应行:
response.setStatus(404)设置状态码
设置响应头
设置响应头
response.setHeader("server","JBoss")
重定向
概念:将用户从一个URL引导到另一个URL。一般会有两次请求,第一次是用户请求,第二次是浏览器自动发送。
请求转发和重定向的区别是?几个维度来说
- 请求转发是服务器端行为,客户端不知道、重定向是客户端行为
- 请求转发是一次请求,重定向是两次请求。
- 请求转发可以共享原始请求的数据(request对象进行数据保存传递),重定向则不能(除非通过其他方式传递)。
- 请求转发地址栏不变,重定向地址栏会改变。
- 请求转发只能是当前web应用资源,重定向可其他web应用甚至是外部域名网站
ServletConfig
概念:用于加载servlet初始化参数,代表当前servlet的配置信息
ServletConfig 和 ServletContext 并不是一一对应的关系
核心api
ServletContext
servlet的上下文对象,代表了当前应用程序的上下文。一个web程序中只有一个servletcontext。
三种获取对象的方法。所有servlet都共享这个对象,故叫做全局应用程序共享对象
核心api
得到当前web应用路径
String contextPath = context.getContextPath();
response.sendRedirect(contextPath + "/index.html");
得到web应用的初始化参数:getInitParameter();
域对象
概念:用于web应用中用于存储数据的
常用三大域对象:
servlet中三个:HttpServletRequest、HttpSession、ServletContext
JSP中有四个:多一个PageContext
每个域对象的作用范围和创建时机:
HttpServletRequest
- 作用范围:请求域,一次HTTP请求。当一个客户端发送一个请求到服务器时,这个请求对象就会被创建,并且在整个请求被处理的过程中都是可用的。
- 创建时机:在每个请求被服务器接收时创建。当请求结束时,这个对象就会被销毁。
HttpSession
- 会话域,作用域是一次会话。会话可以跨越多个请求,只要客户端不关闭浏览器,会话就会一直存在。
- 当用户第一次访问一个应用时,如果没有为该用户创建会话,就会创建一个新的HttpSession对象。
ServletContext
- 应用域,作用域是整个Web应用。这个对象在整个应用的生命周期内都是可用的,通常用于存储全局信息。
- 当Web应用启动时,就会被创建。这个对象会一直存在,直到Web应用被卸载。
使用域对象共享数据操作:
- 保存数据:void setAttribute(String name,Object object)
- 获取数据:Object getAttribute(String name)
- 删除数据:void removeAttribute(String name)
不同点、共同点
JSP
运行原理和域对象
概念:java服务器端页面,用于实现javaweb中客户端页面,servlet更高级别的扩展。文件由html和java语句 默认编码UTF-8
基本语法
可以看到html文件结构相似,区别在于多了page指令
本质:就是一个servlet,可以使用servlet的所有功能,但jsp部分功能servlet不能使用
运行原理
<%%>中可写入常规java语句
、
jsp工作模式:请求/响应模式。jsp文件收到请求时,jsp容器(也是servlet)会把jsp文件转化成servlet
运行原理
- 请求JSP页面:客户端发出请求,请求访问jsp文件
- 编译JSP页面:jsp容器(就是servlet)会把jsp文件转化成java源文件(servlet),若有错误,中断转化,向服务端客户端发送错误信息
- 转换成功jsp容器会将java源文件编译成同字节码文件*.class(就是个servlet)
- 执行Servlet:servlet容器会加载转换的servlet,并实例化对象,执行getInit()完成初始化,生命周期内该方法只执行一次
- jsp容器执行jspService()方法处理客户端请求,为每个请求创建一个线程,多请求多线程,一一对应
- 生成HTML发送响应:请求完成,响应对象由JSP容器接收,将HTML格式响应信息发送回客户端
脚本元素的三种类型
- JSP Scriptlets
- 声明标识
- JSP表达式
熟悉指令page include taglib
9大内置对象
jsp默认创建的,可在页面直接使用。pageContext
域对象查找数据顺序:
页面缓冲机制
缓存机制
概念:JSP页面执行过程中,输出流被缓存起来,直到整个页面执行完成,再一次性发送给客户端的机制。主要目的是为了提高页面的响应速度和减少网络传输的数据量。
缓存区数据与外写触发条件4个
- 缓冲池满
- 刷新缓区
- 关闭缓区
- 执行完jsp页面
session原理
概念:session对象代表用户会话,用户访问网站时创建,会话过期或关闭浏览器后销毁。jsp页面中可通过session存储和获取会话数据,可跨多个页面和请求共享数据。每个session独立互不干扰。
原理 :
- 服务器接收浏览器第一次请求(登录),创建一个Session,并生成一个唯一的JSESSIONID
- 服务器将JSESSIONID存储在Cookie中,并随响应发送回浏览器。
- 浏览器自动设置Cookie
- 后续请求自动带上Cookie:
Ajax与JSON技术
概念:异步的javascript和xml。
ajax可以实现页面的局部刷新,数据异步交互(在等待数据到达的同时继续执行其他任务,提高了效率和响应性。)
Ajax与传统请求方式的区别
传统请求方式:
- 每次请求都会请求一个新的页面
- 刷新页面也会请求重新加载页面
优势
- 请求数据量少:只对所需必要数据做请求
- 请求分散:按需请求,异步形式,请求不会集中爆发,减小了服务器压力
- 用户体验优化
Ajax基础操作
JavaScript方式
XMLHttpRequest对象:可扩展超文本传输请求,缩写为XHR。这是Ajax基础,该对象可在不向服务器提供整个页面时,实现局部更新网页。也可用于客户端和服务器的局部通信。
XHR使用:
1.创建
var xhr = new XMLHttpRequest(); // 创建一个新的XMLHttpRequest对象
2.open()send()方法发送请求
xhr.open('GET', 'http://example.com/api/data', true);
// 设置请求头部(如果需要)
// xhr.setRequestHeader('Content-Type', 'application/json');
// 发送请求
xhr.send();
3.接受并处理响应结果
// 定义响应到达时的处理函数
xhr.onload = function () {
if (xhr.status >= 200 && xhr.status < 300) {
// 请求成功,可以处理响应数据
console.log(xhr.response); // 打印响应内容
JQuery方式
$.ajax方法可实现所有Ajax操作
JQuery中的GET请求POST请求
GET/POST:向服务器发送get/post请求
- url:要请求的资源的 URL。
- data:(可选)发送到服务器的数据。可以是 key=value 形式的字符串或一个对象。
- funtion(data,status,xhr):(可选)当请求成功时执行的data表从服务器返回的、status为当前请求状态码、xhr为当前请求的xhr对象
- dataType:(可选)期望的数据类型(例如:"json"、"xml"、"html"、"text")。
$.get(url, [data], [callback], [type])
$.get('http://example.com/api/data', function(data) {
console.log(data); // 处理返回的数据
});
ajax中常用数据格式为json,键值对形式,且值若为string,必须用“”括住,其他数据类型不必。
过滤器
应用场景:字符编码过滤、统一缓存控制、用户登录与权限控制、资源保护
生命周期、执行顺序、配置过滤资源的方式
servlet有三个高级特性:Filter、Listener和文件上传下载
Filter概念:对servlet容器调用servlet的过程进行拦截,位于客户端和处理程序之间,能够对请求响应进行检查和修改
过滤器执行流程:客户端请求,触发过滤器,拦截请求访问的资源,放行,返回
接口
Filter接口:分三个方法
- init(FilterConfig filterConfig):初始化,创建Filter实例后即调用init方法
- doFilter:三个参数。Servlet容器调用该方法完成实际的过滤操作。其中,参数request和response为Web服务器或Filter链中的上一个Filter传递过来的请求和响应对象,参数chain代表当前Filter链的对象。
- destory:释放Filter打开的资源,如关闭数据库和IO流。在web服务器释放Filter对象之前被调用
FilterConfig接口
封装Filter配置信息,在初始化阶段服务器将接口对象传递给初始化方法init
FilterChain接口
FilterChain接口的doFilter()方法用于调用过滤器链中的下一个过滤器, 如果这个过滤器是链上的最后一个过滤器,则将请求提交给处理程序或 将响应发给客户端。
生命周期
三阶段:创建执行销毁
创建:web启动时创建Filter实例对象,调用init方法,完成对象初始化。且一个完整请求Filter只会创建一次,init方法也只执行一次。
执行:客户端请求目标资源时,服务端筛选处符合条件的filter,按照类名先后顺序执行doFilter方法,如Filter01优先于Filter02,且一次完整请求可执行多次doFilter方法
销毁:服务器关闭时,调用destroy方法销毁Filter对象
过滤器开发步骤
定义类,实现Filter接口:两种方式:
- 手动:编写java类实现Filter接口并实现doFilter方法。
- 自动:IDE直接创建Filter
重写接口规范:即Filter接口中那三个方法
配置Filter资源:
两个方法:
web.xml:通过<filter><filter-mapping>元素对编写类进行注册,设置所能拦截的资源
注解配置:
过滤器链:编写多个Filter组合在一起称为Filter链,根据注册方式不同,执行filter流程也不同
监听器
分类:
会话技术
概念:管理浏览器和客户端在和服务器端会话时产生的会话数据。
为保存这些数据提供两个对象:cookie、session
Cookie客户端会话技术
初次访问,服务器会给客户端发送信息,保存在cookie中,二次访问时,会将cookie信息加在请求头上发送服务器
特点:会话数据保存在浏览器客户端
原理过程分6步:
- 服务器端创建cookie对象,保存会话数据
- 服务器发送cookie信息到浏览器
- 浏览器得到cookie保存在浏览器端
- 浏览器下次访问服务器带着cookie信息
- 服务器接收cookie信息
常见方法:构造方法、有效访问路径、有效时间
Cookie cookie = new Cookie("name","value")
cookie.setPath("/Web01")
cookie.setMaxAge(20) int
浏览器在有效路径下访问服务器才会带cookie信息
cookie局限:
- 只能存字符串类型,不能保存对象
- 只能存非中文
- 一个cookie容量不超过4KB
Session服务器端会话技术
会话管理为什么创建session域对象:通过session,服务器可以识别不同的用户,并存储每个用户的特定信息。
session创建的时机是:初次访问服务器,如果没有找到对应的session,服务器会自动创建一个新的
session核心方法
特点:通过域对象将会话数据保存在服务器。session技术只能采用会话域
三大域对象:HttpServletRequest请求域、HttpSession会话域、ServletContext应用域
Session接口常用方法
技术核心就是HttpSession嘛,所以session指得就是HttpSession接口,常用方法:
创建:HttpSession session = request.getSession()
保存获取删除和域对象中一致:保存setAttribute、获取getAttribute、删除removeAttribute
原理
在浏览器初次请求访问服务器时,服务器通过get.Session()方法船舰session对象,分配唯一ID:JSESSIONID,作为cookie值发送给浏览器,浏览器在二次访问时就会携带ID,服务器通过getSession方法在服务器内存中搜索对应session,找到则返回,找不到重新创建。
cookie和session区别
文件的上传下载
上传
两方面:JSP页面如何提交 Servlet对数据接收和保存
设置表单的3要点
提交表单数据
表单提交时表单项都以表单数据的方式进行编码,因此不能通过常规的getParameter来获取非文件数据,需要获取相应part对象后,单独获取该对象的输入流获得内容
下载
设置响应头
Content-Disposition这个响应头可以告诉浏览器文件应该被如何处理。
步骤