Javaweb基础概念
Javaweb,使用Java技术解决相关web互联网领域技术栈,web包括:web服务端和web客户端,java在客户端的应用有java applet,而在服务器有servlet,jsp和第三方框架
web应用程序
web应用组成部分
- html,css
- jsp,servlet
- java程序
- 配置文件(Properties)
静态web
静态网站特点:
- 网站每增加,删除,修改一个页面,都必须重新对服务器文件进行下载,静态网站是保存在服务器上的文件,每一个网页都是独立文件
- 静态网站相对来说比较稳定
- 没有数据库支持,在网站制作和维护方面工作量较大,不易维护
- 交互性差,在功能方面有较大的限制;
动态web
- 交互性,网页会根据用户要求和选择而动态的改变和响应
- 自动更新,无需手动更新html文档便会自动生成新页面
- 因时因人改变
web服务器
ASP:动态服务器网页,维护成本高
PHP:开发较快,功能强大,跨平台,代码很简单
JSP/Servlet:基于JAVA语言,可以承载三高问题带来的问题
各自特点:
servlet能够很好的组织业务逻辑代码,但是在Java源文件中通过字符串拼接的方式生成动态html内容导致代码维护困难,可读性差;
JSP规避了这些问题,但在html中混入了大量复杂的业务逻辑
HTTP协议
HTTP是用于万维网服务器传输超文本到本地浏览器的传送协议,工作于客户端-服务端架过上,Web服务器根据接收到的请求后,向客户端发送响应;
主要特点
- 简单快速
- 灵活:允许传输任意类型的数据
- 无连接:限制每次连接只能处理一个请求
- 无状态
- 支持B/s及C/S模式
HTTP和URL
HTTP使用统一资源标识符来传输数据和建立连接,URL是统一资源定位符
HTTP协议请求方式
HTTP是一个基于TCP/IP通信协议来传数据,包括html文件,图像,结果等,既是一个客户端和服务器端请求应答的标准。基本上用到的就是GET和POST
HTTP和HTTPS有什么区别
- HTTPS有ca证书,http一般没有
- http是超文本传输协议,信息是明文传输。https则是具有安全的ssl加密传输协议
- http默认端口是80端口,HTTPS默认是443端口
cookies机制和session机制区别是什么
cookies:客户端技术(响应,请求);
session:服务器技术,可以保存用户的会话信息;服务器中的session可以存东西
- cookies数据保存在客户端,session数据保存在服务端
- cookies可以减轻服务器压力,但是不安全
- session安全一点,但是占用服务器
GET和POST的区别
对于GET而言发送请求是一同将http header和data发送,而post是分别发送
前端三大结构
表示层,结构层,行为层
JS是怎么获取标签的值
-
JS可以获取对象inner Text属性来获取标签值
-
JS获取DOM元素方法获取标签,然后使用value获取标签的值。
HTML怎么获取CSS样式
它们分别是行内式、内嵌式、链接式和导入式
- 通过Style属性
- 通过link
- 通过@import
元素就是标签,布局中常用的有三种标签,块元素、内联元素、内联块元素,了解这三种元素的特性,才能熟练的进行页面布局。
块元素
块元素,也可以称为行元素,布局中常用的标签如:div、p、ul、li、h1~h6、dl、dt、dd等等都是块元素
http常见的状态码
200 OK:客户端请求成功
301:永久重定向
302:临时重定向
303:表示请求的资源被分配了新的URL
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,
什么是http无状态协议
无状态协议就是对于事物处理没有记忆能力,缺少状态意味着如果后续需要前面的信息就需要重新发送请求,服务器不会记得你;通过cookies和session会话保存
HTTP/1.1和HTTP/1.0的区别
- 可扩展性
- 缓存
HTTP协议有什么组成
请求报文:
请求行:请求方法,URL,HTTP版本信息
请求首部字段
请求内部实体
响应报文:
状态行:HTTP版本,状态码,原因短语
响应首部字段
响应内容实体
TCP和UDP的区别
TCP是基于连接的协议,就是说在发送数据前,必须要和对方建立连接,一个TCP连接必须要经过三次对话才能建立起来
UDP是面向非连接的协议,不需要建立连接就可以直接将数据发送只适用于发送少量数据。
tomcat是什么
tomcat是一个Servlet容器,实现了对Servlet和jsp的支持,并提供了web服务器的一些特有的功能
Tomcat的端口号是多少,怎么修改
默认8080
修改端口号的方式:
- 找到Tomcat目录下的conf文件
- 打开servle.xml,把Connector标签的8080端口改为你想要的端口
怎么在Linux上安装tomcat
- 下载tomcat安装包
- 上传至Linux,解压
- 进入bin目录输入./startup.sh进行启动
怎么在Linux部署项目
先使用eclipse或者idea把项目打包成.war包,然后上传到Linux服务器,然后把项目放在tomcat的bin目录下的webapps,然后重启tomcat就行了。
Tomcat如何优化
- 改tomcat最大线程连接数
- Tomcat内存优化增加内存配置
当你在浏览器地址输入地址并回车一瞬间到页面展示回来经历了什么
- 域名解析:在客户端,浏览器输入地址,首先在Windows系统文件中查找是否有对应的IP地址,如果没有则会向DNS域名解析服务器询问该域名对应的IP地址;
- TCP三次握手:获取对应的IP地址,客户端与服务器端建立TCP连接三次握手(网络层,数据链路层,物理层)
- 第一次握手:客户端向服务器端发送一个SYN段,该段包含客户端的初始序列号
- 第二次握手:服务器端返回客户端SYN+ACK,该段包含服务器端的初始序列,ACK表示已经确定客户端收到SYN段
- 第三次握手:客户端向服务器端响应一个ACK段,ACK表示已经确定受到服务器端的SYN段
- 建立TCP连接后发起HTTP请求
- 服务器响应http请求
- 浏览器解析http代码
- 断开连接
Maven
- 能够帮助我们在java项目中快速导入jar包,核心思想:约定大于配置,有约束不要违反;
- pom.xml文件是Maven的核心配置文件;
servlet
开发一个Servlet程序:
- 编写一个类,实现Servlet接口
- 把开发好的java部署到web服务器中
为什么需要映射
写的Java程序,需要通过浏览器访问,而浏览器需要连接Web服务器,所以我们需要在Web服务器中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径;
什么是jsp
Java服务器端页面,和Servlet一样,用于动态web技术;
JSP原理
- 客户端通过浏览器向服务器发出请求,在该请求中包含了请求的资源的路径,这样当服务器接收到该请求后就可以知道被请求的内容。
- 服务器根据接收到的客户端的请求来加载相应的JSP文件。
- Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet文件(.java)。
- JSP引擎将生成的Servlet代码编译成Class文件。
- 服务器执行这个Class文件。
- 最后服务器将执行结果发送给浏览器进行显示
Javabean
实体类
写法:
- 必须要与一个无参构造
- 属性必须私有化
- 必须要有对应的get/set方法
一般用来和数据库的字段做映射ORM(对象关系映射);
MVC三层架构
什么是MVC:模型,视图,控制器
model:
- 业务处理:业务逻辑(service)
- 数据持久层:CRUD(dao-数据持久化对象)
view:
- 展示数据
- 提供链接发起Servlet请求
controller:
- 接收用户的请求
- 交给业务层处理对应的代码
- 控制视图跳转
Filter过滤器
Filter:过滤器,用来过滤网站数据
- 处理中文乱码
- 登录验证
JDBC
JDBC用来连接数据库;
JDBC固定步骤
- 加载驱动
- 连接数据库,代表数据库
- 向数据库发送SQL的对象Statement:CRUD
- 编写SQL
- 执行SQL
- 关闭连接
什么是 jsp,什么是 Servlet? jsp 和 Servlet 有什么区别?
jsp 本质上就是一个 Servlet,它是 Servlet 的一种特殊形式(由 SUN 公司推出),每个 jsp 页面都是一个 servlet
实例。
Servlet 是由 Java 提供用于开发 web 服务器应用程序的一个组件,运行在服务端,由 servlet 容器管理,用来生
成动态内容。一个 servlet 实例是实现了特殊接口 Servlet 的 Java 类,所有自定义的 servlet 均必须实现 Servlet 接口。
区别:
jsp 是 html 页面中内嵌的 Java 代码,侧重页面显示;
Servlet 是 html 代码和 Java 代码分离,侧重逻辑控制, mvc 设计思想中 jsp 位于视图层, servlet 位于控制层
关系型数据库中连接池的机制是什么
- 从连接池获取或创建可用连接池
- 使用完毕后,把连接返回给连接池
- 在系统关闭前,断开所有的连接并释放连接占用的资源
- 能够处理无效连接
前端页面由哪三大层构成
块元素、内联元素、内联块元素
元素就是标签,布局中常用的有三种标签,块元素、内联元素、内联块元素,了解这三种元素的特性,才能熟练的进行页面布局。
块元素
块元素,也可以称为行元素,布局中常用的标签如:div、p、ul、li、h1~h6、dl、dt、dd等等都是块元素,它在布局中的行为:
支持全部的样式
如果没有设置宽度,默认的宽度为父级宽度100%
盒子占据一行、即使设置了宽度
内联元素
内联元素,也可以称为行内元素,布局中常用的标签如:a、span、em、b、strong、i等等都是内联元素,它们在布局中的行为:
支持部分样式(不支持宽、高、margin上下、padding上下)
宽高由内容决定
盒子并在一行
代码换行,盒子之间会产生间距
子元素是内联元素,父元素可以用text-align属性设置子元素水平对齐方式,用line-height属性值设置垂直对齐方式
解决内联元素间隙的方法
1、去掉内联元素之间的换行
2、将内联元素的父级设置font-size为0,内联元素自身再设置font-size