名词解释4*5
选择2*10
填空2*15
论述3*10
Client/Server, 客户端/服务器结构,服务器常采用高性能的PC或工作站,并采用大型数据库系统(Oracle或SQL Server)。需要安装专用的客户端软件。(在2000年前,C/S结构占据网络程序开放领域的主流)。
Browser/Server,浏览器/服务器结构,客户端不需要开发任何用户界面,而统一采用浏览器,通过Web浏览器向Web服务器发送请求,由Web服务器进行处理,并将处理结果逐级传回客户端。这种结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,从而节约了开发成本,是一种全新的软件体系结构。这种体系结构已经成为当今应用软件的首选体系结构。
Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型,用于设定某种扩展名的文件的类型,可以告诉浏览器如何显示或打开该文件。
Document Object Model,文档对象模型,定义了访问HTML和XML文档的标准api,DOM提供了对整个文档的访问模型,HTML文档被解析后,转化为DOM树,因此对HTML文档的处理可以通过对DOM树的操作实现。DOM模型还定义了结点对象的行为,利用对象的方法和属性,可以方便地访问、修改、添加和删除DOM树的结点和内容。
过滤器,servlet的一个接口,用于在进入或离开servlet时处理请求和响应或执行某些操作的可重用代码
javascript object notation,轻量级独立于语言的数据交换文本格式。
asynchronous javascript and xml,通过js异步发起请求,局部更新网页。可以在不刷新页面的情况下与服务器通信,减少用户等待时间,改善用户体验,减轻服务器压力。
1、按需获取数据,可将一部分工作转移到客户端,减轻服务器负担
2、无刷新更新网页,用户体验感好
3、可调用xml等外部数据,进一步促进页面显示和数据的分离
4、基于标准化并被广泛支持的技术不需要下载其它插件。
Hyper Text Markup Language,超文本标记语言,用标签描述网页,由浏览器解释执行。
Extensible Mark-up Language, 可扩展标记语言,标准通用标记语言的子集,简单的数据存储语言。
Cascading Style Sheets,层叠样式表,用于表现HTML或XML等文件样式的语言。
javascript,具有解释型、基于对象、事件驱动、安全性、跨平台特点的一门解释型编程脚本语言。
java server pages,sun公司倡导的动态网页技术标准,运行在服务器端的脚本语言,简化了servlet输出页面。
1、跨平台(基于Java);
2、业务代码分离;
3、组件重用(重用JavaBean);
4、继承servlet功能;
5、预编译(只在第一次访问时编译,之后只需执行编译好的字节码)。
Java server pages standarded tag library,即JSP标准标签库,它一个标准通用的标签库,可利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。
Hypertext Transfer Protocol,HTTP,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据。HTTP 是一个在计算机网络里传输超文本数据的约定和规范。
java virtual machine,是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆和 一个存储方法域。 JVM 是运行在操作系统之上的,它与硬件没有直接的交互。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Cookie:是由Web服务器管理的存放在客户端的一个数据集合,这些数据是客户端、服务器端相关的信息,一般有一定的生存期,有大小限制,在每次客户端发送请求时请求头都会带上cookie(如果存在)。
Session:会话,用于保存客户访问网站期间,在多个页面之间跳转的信息,从客户第一个请求开始,到会话超时为止。
Application:它是服务器运行期间所有用户共享的一个容器,用于用户之间的数据共享,类似于服务器运行期间的全局变量。
Server Applet,狭义的Servlet是指Java的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet必须运行在支持Java的Web服务器上(如Tomcat),可以对客户端请求进行处理,返回响应,生成动态Web内容。
是轻量级开源框架,致力于解决企业应用开发的复杂性,整合各种流行框架,以IOC和AOP为基础。
Inversion of Control控制反转,将创建对象的任务交给IOC容器,需要对象时通过IOC容器获取,解耦。
Aspect oriented programming,面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,是OOP的延续,实现在不修改源代码的前提下对方法进行增强。利用AOP可以使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,减少重复代码,同时提高了开发的效率。
model-view-controller 模型-视图-控制器设计模式,强制的将应用程序的输入、处理和输出分开,基于mvc架构模式的轻量级web框架,其目的是将web开发模块化,对整体架构进行解耦,简化web开发流程。
model :体现应用功能,包括业务逻辑层(业务逻辑处理)和数据库访问层(数据库操作)
view: 负责应用程序外观,用于描述模型,一般由jsp和html组成,用于接收用户输入并将其交给控制器,根据控制器响应的数据更新视图。
controller:负责交互和将用户发送的数据提交给模型处理,并将处理的结果发送给相应的视图。
spring+spring mvc+mybatis,
spring负责管理bean,实例化对象,配置数据源,事务控制,组件管理,核心是IOC(控制反转),DI(依赖注入)和AOP(面向切面编程);
spring mvc负责实现业务逻辑,网站功能,核心是Dispatcher Servlet(前端控制器);
mybatis负责数据库CRUD持久化操作,核心是ORM(对象/关系映射【把关系数据库包装成面向对象的模型】)。
套接字,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个 socket。
Open Database Connectivity,开放数据库连接,为不同的数据库访问提供统一接口,允许应用程序以SQL为数据存取标准,存取不同DBMS管理的数据;使应用程序直接操纵DB中的数据。
Java Database Connectivity,Java数据库连接,Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法,由java语言编写的类和接口组成。
遵循特定书写规范的java类,通常由如下特点:
1、成员变量私有;
2、必须有无参构造函数;
3、通过标准的getter和setter访问私有属性;
4、可序列化。
免费开源的轻量级web应用服务器。
运行及发布web应用的容器,只有将web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。
World Wide Web, 即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
是网站中的页面,通常是html格式的,可以展示超文本(文字图片视频等),需要通过浏览器阅读。
1xx 服务器已接受请求,正在处理
2xx 成功
3xx 重定向
4xx 客户端错误
5xx 服务器内部错误
CSS -- CSS选择器_CodeJiao的博客-CSDN博客基本选择器(重要)优先级:ID选择器 > 类选择器 > 标签(元素)选择器。标签(元素)选择器:选择某一个或者某一类元素。ID选择器 :id不能重复,全局唯一。类选择器:可以跨标签,类相同,可以复用。示例:通配符选择器: * { margin: 0; padding: 0; }元素选择器 h1 { color: orange; }.https://blog.csdn.net/I_r_o_n_M_a_n/article/details/114198236?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165182581916781667894970%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165182581916781667894970&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-114198236-null-null.142%5Ev9%5Econtrol,157%5Ev4%5Econtrol&utm_term=css%E9%80%89%E6%8B%A9%E5%99%A8&spm=1018.2226.3001.4187通配符选择器:*{}
id选择器:#id{}
类选择器:.类名{}
元素选择器:标签名{}
派生选择器(子选择器、后代选择器):a>b{}、a b{}
并集选择器:a,b{}
伪类选择器
JSP基本语法_海盗船长没有船y的博客-CSDN博客_jsp语法1.JSP页面的基本构成JSP页面是指拓展名为.jsp的文件。在一个JSP页面中,可以包括指令标识、HTML代码、JavaScript代码、嵌入的Java代码、注释和JSP动作标识等内容。但这些内容并不是一个JSP页面所必需的。下面将通过一个简单的JSP页面说明JSP页面的构成。2.指令标识指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何输出到网页中的内容,也就是说指令标识对客户端浏览器是不可见的。JSP指令标识的语法格式如下:<%@ 指令名https://blog.csdn.net/weixin_44826356/article/details/106412573指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,对客户端浏览器是不可见。
定义整个JSP页面的相关属性,这些属性在JSP被服务器解析成Servlet时会转换为相应的Java程序代码。
语法:
<%@ page 属性1="属性值1" 属性2="属性值2"...%>
常用属性:
属性 |
作用 |
language |
设置JSP页面使用的语言 |
extends |
设置JSP页面继承的Java类,所有JSP页面在执行之前都会被服务器解析成Servlet,而Servlet是由Java类定义的,所以JSP和Servlet都可以继承制定的父类。 |
import |
设置JSP导入的类包。JSP页面可以嵌入Java代码片段,这些Java代码在调用API时需要导入相应的类包。 |
pageEncoding |
用于定义JSP页面的编码格式,也就是指定文件编码。JSP页面中的所有代码都使用该属性指定的字符集。 |
contentType |
设置JSP页面的MIME类型和字符编码,浏览器会据此显示页面内容。 |
在JSP页面中静态包含另一个JSP页面。
语法:
<%@ include file="JSPPath"%>
该指令只有一个file属性,用于指定要包含文件的路径。该路径是相对路径,也可以是绝对路径,但不可以是通过<%=%>表达式所代表的文件。
用于加载自定义标签(JSTL)。
语法:
<%@ taglib prefix="tagPrefix" uri="tagURI"%>
在jsp页面嵌入java代码,将在页面请求的处理期间被执行。
语法:
<% Java代码 %>
定义jsp页面的全局的成员变量或方法。
语法:
<%! 声明全局变量或方法的代码 %>
可直接输出java表达式结果到jsp页面中,结果类型转换为字符串输出。
语法:
<%= 表达式 %>
1、html注释
不会显示在页面中,但是在浏览器中查看源代码可以看到。
语法:
2、jsp注释
相比html注释安全性更高,在浏览器源代码中也不会显示
语法:
<%--注释内容--%>
3、动态注释
由于HTML注释对JSP嵌入的代码不起作用,因此可以利用他们的组合构成动态的HTML注释文本。
例如:在JSP页面中添加动态注释,显示请求的日期,代码如下:
4、内部注释
JSP内部注释和Java注释一致。 // 和 /* */。
application:整个应用
session:某一用户第一次请求开始直至用户关闭浏览器或会话超时
request:一次请求(包括请求转发)
page:用户请求的当前页面内有效
jsp:forward: 执行页面转向,将请求的处理转发到下一个页面。
jsp:param: 用于传递参数,必须与其他支持参数的标签一起使用。
jsp:include: 用于动态引入一个 JSP 页面。
jsp:plugin: 用于下载 JavaBean 或 Applet 到客户端执行。
jsp:useBean: 声明并创建JavaBean对象。
jsp:setProperty: 设置 JavaBean 实例的属性值。
jsp:getProperty: 获取 JavaBean 实例的属性值。
1.客户端向服务器发出请求;
2.JSP服务器将JSP翻译成Servlet源代码(.java代码);
3.将产生的Java代码进行编译,使之成为.class文件,将.class 文件加载到内存执行;
4.把执行后的结果(HTML文本)作为响应发至客户端由浏览器解释显示。
加载类并实例化
初始化(调用Servlet init()方法)
处理请求(调用Servlet service()方法)
销毁(调用Servlet destroy()方法)。
请求报文:请求行(请求方式、请求URL、报文协议及版本)、请求头、空行、请求体
响应报文:响应行(报文协议及版本、状态码)、响应头、空行、响应体
客户端发出一个HTTP请求,Web应用服务器接收这个请求。如果请求匹配DispatcherServlet的请求映射路径,就将之转发给DispatcherServlet处理。
DispatcherServlet接受到请求后,将根据请求的信息及HandlerMapping的配置找到处理请求的处理器(Controller)
DispatcherServlet把请求交给处理器。
处理器调用服务层方法处理业务逻辑。
处理器的返回结果为ModelAndView
DispatcherServlet查询一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图。
将结果显示到客户端
对比 |
xml |
html |
语法 |
语法严谨 |
松散 |
用途 |
数据存储与传输 |
显示网页内容 |
大小写 |
区分 |
不区分 |
标记 |
自定义、可扩展 |
预定义 |
js:基于对象和事件驱动的脚本语言、解释型、弱变量(使用前无需声明)
java:面向对象语言、编译型、强变量
forward |
redirect |
|
数据共享 |
存在request域中 |
只能放在url参数里 |
效率 |
高 |
低 |
浏览器url |
不变 |
变成重定向页面 |
行为 |
服务器内部 |
浏览器 |
请求次数 |
一次 |
两次 (第一次状态码302表示重定向) |
使用情景 |
用户登录,转发到相应模块 |
用户注销,返回主页或跳转其他页面 |
相同 |
都可用于页面跳转 |
区别 |
cookie |
session |
保存位置 |
客户端 |
服务器 |
大小限制 |
有 |
无 |
安全性 |
低 |
较高 |
服务器性能 |
影响小 |
较大 |
相同点 |
都是用来跟踪浏览器用户身份的方式 |
区别 |
servlet |
jsp |
路由映射配置 |
需要 |
不需要 |
侧重 |
侧重逻辑控制 |
页面显示 |
内置对象 |
无 |
9个内置对象 |
关系 | Jsp 编译后为servlet,用jsp实现的页面用servlet也能实现 |
区别 |
tcp |
udp |
安全性 |
可靠 |
不可靠 |
连接 |
有连接 |
无连接 |
连接方式 |
三次握手,四次挥手 |
|
通信方式 |
一对一通信 |
可一对一,一对多,多对多 |
适用 |
要求可靠传输 |
实时传输 |
● 最简单的区别就是,HTML能直接打开,jsp只能发布到Tomact等服务器上才能打开;
● 定义上HTML页面是静态页面可以直接运行,JSP页面是动态页面它运行时需要转换成servlet;
● 他们的表头不同,这个是JSP的头“ <%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>”在表头中有编码格式和导入包等。
○ 开发过程中前端与后端脱离,交互通过JSON传输来实现
○ 按需获取数据,可将一部分工作转移到客户端,减轻服务器负担
○ 无刷新更新网页,用户体验感好
○ 使后台数据接口能够得到复用
○ 可被爬虫爬到
○ 减少请求次数
○ 传值方便
○ 接口代码少
○ 不用考虑浏览器的兼容性
○ 开发难度大,考虑浏览器的兼容性
○ 页面请求过多
○ 属于后加载,无法被爬虫爬到
○ 接口代码需要新增很多
○ 无法直接显示java实体类对象,需要转换为json格式
○ 增大了服务器的压力
○ 前端与后端未脱离,增加开发维护难度
○ 过于依赖java运行环境
○ 复用较低。
传统:同步、页面交互为主导
ajax:异步、数据交互为主导
优点:代码简单
缺点:用户体验感差、服务器压力大
优点:按需请求数据,减少服务器负担、促进页面显示和数据分离、用户体验感好、使用基于标准化的并被官方支持的技术,不需要下载插件或小程序。
缺点:接口代码繁杂、无法直接显示java实体类对象,需要转换为json格式
区别 |
get |
post |
参数长度 |
有限制 |
无 |
安全性 |
低(参数直接暴露在url上) |
较高(参数可封装在request body中) |
编码 |
url编码(对非ascii字符编码) |
无限制 |
参数位置 |
url |
请求体,url皆可 |
请求发送 |
浏览器回退时无害 |
post会重复提交请求 |
●响应速度快,服务器压力小。
●满足客户自身的个性化要求。
●较强的事务处理能力。
●安全。
●部署安装和配置繁琐。
●兼容性差。
●开发、维护成本较高。
●对客户端性能有一定要求
●适用面窄。
●分布性强,客户端零维护。
●跨平台
●业务扩展简单方便,通过增加网页即可增加服务器功能。
●开发简单,共享性强。
●服务器负载较重
●无法实现具有个性化的功能要求。
●响应速度较慢。
●在速度和安全性上需要花费巨大的设计成本。
●功能弱化,难以实现传统模式下的特殊功能要求。
优点:易于理解,直接清晰
缺点:灵活性低
易于维护
优点:易于复用,便于维护,减少文件大小,加载速度更快,HTML页面的大小更小,结构更清晰;
缺点:在加载完外部CSS之前,页面可能无法正确呈现。
mybatis |
jdbc |
开发效率高 |
性能好 |
支持动态sql |
|
简化重复代码 |
|
松耦合 |
|
支持数据库连接池 |
|
sql统一管理 |
|
自动映射结果集 |
|
面向对象 |
面向关系 |
优点
1. 理解简单;(JDBC与ODBC十分相似,便于软件开发人员理解)
2. 有统一接口;(JDBC使软件开发人员从复杂的驱动程序编写工作中解脱出来,可以完全专注于业务逻辑的开发)
3.增强软件的可移植性;( JDBC支持多种关系型数据库,大大增加了软件的可移植性)
4. 面向对象,可以二次封装。(JDBC API是面向对象的,软件开发人员可以将常用的方法进行二次封装,从而提高代码的重用性)
缺点
1.性能稍低;(相比原厂驱动,通过JDBC访问数据库时速度将受到一定影响)
2. 虽然JDBC API是面向对象的,但通过JDBC访问数据库依然是面向关系的。
3. JDBC提供了对不同厂家的产品的支持,这将对数据源带来影响。
1、 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。
2、 Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变Java代码。
3、 使用preparedStatement向占位符传参数时存在硬编码,不支持动态sql,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,不易维护。
4、 对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。
servlet |
springmvc |
性能好 |
开发效率高 |
降低耦合度 |
|
模块化 |
加载jdbc驱动程序,创建数据库连接,执行sql语句,获得查询结果,关闭连接。
Connection connection=null;
Statement statement=null;
ResultSet resultSet=null;
ArrayList arrayList= null;
try {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//定义sql
String sql="select * from account";
//获得Connection对象
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root");
//获取执行sql对象
statement = connection.createStatement();
//执行sql
resultSet = statement.executeQuery(sql);//存储查询语句返回的表格
//处理数据
arrayList = new ArrayList<>();
while(resultSet.next()){//1、游标向下移动一行,转到第一行
//2、取出需要的列数据
int anInt = resultSet.getInt(1);
String name = resultSet.getString("name");
double aDouble = resultSet.getDouble(3);
arrayList.add(new Account(anInt, name, aDouble));
}
System.out.println(arrayList);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}finally {
if (resultSet!=null){
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (statement!=null){
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (connection!=null){
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
Connection connection=null;
Statement statement=null;
try {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//String sql = "insert into account values(null,'王五',3000)";// 报错不用管:无法解析 表 'account'
String sql="delete from mydb.account WHERE NAME='王五'";//获得Connection对象
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root");
statement = connection.createStatement();
int executeUpdate = statement.executeUpdate(sql);
if (executeUpdate>0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}finally {
if (statement!=null){
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (connection!=null){
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
Mybatis是一个半自动的ORM持久层框架,内部封装了JDBC。作为开发者只需要关注sql语句本身,几乎避免了手动设置参数和获取结果集。Mybatis是通过xml或注解的方式将需要执行的sql语句配置起来。通过Java对象和statement中的sql动态参数映射生成最终执行的sql语句,最终由Mybatis框架执行sql并将结果映射为Java对象并返回。MyBatis 支持定制化 SQL、存储过程以及高级映射。MyBatis 是可以双向映射的,可以将数据集映射为Java对象,也可以将Java对象映射为数据库中的记录。
(1)简单易学,容易上手,基于SQL编程,效率更高(相比于Hibernate);
(2)同JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;
(3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持,而JDBC提供了可扩展性,所以只要这个数据库有针对Java的jar包就可以就可以与MyBatis兼容),开发人员不需要考虑数据库的差异性。
(4)提供了很多第三方插件(分页插件 / 逆向工程);
(5)能够与Spring很好的集成;
(6)MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,解除sql与程序代码的耦合,便于统一管理和优化,并可重用。
(7)提供XML标签,支持编写动态SQL语句。
(8)提供映射标签,支持对象与数据库的ORM字段关系映射。
(1)SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。
(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库(各个数据库间有方言差异)。