JavaWeb基础知识总结概述

先上一幅JavaWeb知识框架图在这里插入图片描述

一.Web应用服务器与Http协议

(1)Web概述

Web资源分为静态资源(HTML)和动态资源(jsp,php等),与静态资源相比,动态资源可实现与用户之间的交互。JavaWeb即为动态web资源开发技术的统称。

(2)Tomcat概述

Tomcat是一款开源小型web服务器,它只能支持开发中小型的Web项目,只支持Servlet等少量的JavaEE规范。属Apache组织旗下的产品,完全免费。在使用Tomcat的过程中常与IDEA等编程软件集成使用.

(3)Http协议

Http协议即超文本运输协议,用于定义Web浏览器与Web服务器之间交换数据的规范。一次完整的对话包括Request(请求消息)与Response(响应消息)。http协议定义了多种请求方式,其中getpost是最常见的请求方式。

get请求相关:一般浏览器直接访问一个地址(URL)的时候默认都会是get请求,get请求的特点是:在提交请求时,在请求行中会将提交信息直接带过去且get请求提交的数据一般都比较小

post请求相关:实现一个post请求一般是通过表单(form)来完成,post请求的特点是:用户提交的信息会在正文当中,相比更加安全,允许传输的最大数据量也比较大

然后是常见的响应消息状态码
1xx 什么都没做直接返回
2xx 成功返回
3xx 做了一些事情,没有全部完成。
4xx 客户端错误
5xx 服务器错误
特别有:
200 正确
302 重定向
304 页面没有改变
404 未找到页面
500 服务器出错.

二.JavaWeb三大组件概述

(1)Servlet

servlet定义是一个接口。在我的理解中,servlet应该算是一个JavaWeb工程的核心,因为servlet其实就是用来满足用户所需功能的。

既然是一个接口,在实际使用中自然就不能直接使用。一般我们都是通过继承它的实现类HttpServlet来使用的,同时需要在web.xml中配置好相关信息。而在较新的tomcat版本中,我们可以通过注解直接对servlet进行配置声明。

HttpServlet的使用:HttpServlet提供了一些与Http相关的功能,实际使用过程中我们只需要去覆盖重写它的dogetdopost方法。

servlet三大域对象
ServletContext:整个项目范围
HttpSession :会话范围
HttpServletRequest:请求范围
域对象可用于对Attribute(属性)的设置,读取和删除。注:ServletContext在Web容器创建之初即被创建,直到容器关闭才会死亡,整个项目中只能存在一个ServletContext对象。

servlet细节
1.servlet是单例的,同时也是线程不安全的。所以实际使用中我们尽可能不创建成员变量。
2.servlet可以在第一次请求时被创建,也可以在容器启动时被创建。默认是第一次请求时创建。

(2)Filter

Filter翻译即为过滤器。用于在客户端与服务器端交互的过程中实施拦截,当且仅当满足条件的时候才会放行。可用于根据用户身份或状态赋予不同的权限,也可用于对敏感字符的过滤等。事实上,Filter与Servlet很类似,同样也是一个接口,使用的时候仍然需要去编写它的实现类。

注:Filter的四种拦截方式:
request:拦截直接请求方式
forward:拦截请求转发方式
include:拦截请求包含方式
error:拦截错误转发方式

(3)Listener

Listener翻译即为监听器。用于对项目执行过程中的各种操作和属性变化的感知。与前两种相比,listener的重要性降低了一些。

三.Request&Response

(1)Request概述

当客户端发出请求时,tomcat会创建request和rsponse来调用Servlet的service方法,每次请求都会创建新的request和response。其中request是用来完成客户端对服务器端的请求消息。

Request常j用功能
1.获取请求消息(特别是getParametergetParameterValues方法)
2.设置请求编码(setCharacterEncoding方法)
3.请求转发(request.getRequestDispatcher(“/**”).forward(request,response)完成转发)
注:因为request也是域对象,转发的时候项目中的另一个servlet使用的也是同一个request对象,所以两者可共享request域中的数据。此处需要与重定向分清。

(2)Response概述

Response的功能与Request对应着,它是用来完成服务器端对客户端的响应消息。

Response常用功能
1.获取字符或字节流(getWritergetOutputStream方法)
注:在同一个请求范围内二者不能同时存在
2.设置字符编码(setCharacterEncoding方法)
3.设置自动跳转页面(eg:response.setHeader(“Refresh”, “5;URL=http://www.baidu.com”)意为5秒之后自动跳转到百度页面)
4.设置错误状态码(eg:response.sendError(404, “没找到您访问的资源”))
5.重定向(response.sendRedirect(“/***”)

四.会话技术

(1)Cookie

Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源。当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样就能记录下用户每一次的请求操作。

同样因为Cookie是保存在客户端的,所以我们也能够直接在客户端查看Cookie:

在这里插入图片描述

(2)Session

Session底层是依赖于Cookie的。Session也是由服务器创建的,同时保存在服务器中。服务器创建Session时会给客户端一个id,当客户端再次访问服务器时,在请求中会带上sessionId,服务器则会通过sessionId找到对应的session。

在实际使用中,Session的一个重要应用就是校验客户端验证码

注:Session在服务器中对内存有着较大的消耗,所以一般情况下一次会话中只存在一个Session。同时Session也是有着自动删除机制的,在tomcat中默认是30分钟。也就是说,当客户端超过30分钟无操作后上次的Session便已经被删除了

五.JSP&EL&JSTL概述

JSP实现了HTML标记语言和Java代码的共同编写。EL表达式则是对JSP中Java代码的简化,而JSTL是阿里巴巴旗下的一款标准标签库

六.数据库

(1)概述

数据库就是用来存储和管理数据的仓库。数据库分为关系型数据库和非关系型数据库。对关系型数据库而言,其内部的数据之间是存在耦合度的,它的数据是存储在硬盘上的。而对于非关系型数据库,其内部数据是以键值对的形式存在的,数据存储在内存中,每隔一段时间再固化到硬盘上,这与关系型数据库而言大大提高了查询修改等操作的效率

(2)MySQL数据库

MySQL数据库是甲骨文公司旗下的一款开源免费数据库软件,属于关系型数据库。操作大多数关系型数据库的语句是SQL语句。

常用的SQL语句
1.插入(eg:INSERT INTO stu(sid, sname,age,gender) VALUES(‘99’, ‘zhangSan’, 18, ‘male’)
2.修改(eg:UPDATE stu SET sname=’liSi’, age=’20’ WHERE sid>50 AND gender=’male’
3.删除(eg:DELETE FROM stu WHERE sid=‘99’
4.查询(eg:SELECT * FROM stu where sid=‘99’ and age=‘18’
注:实际使用过程中考虑到SQL注入的安全问题,用户参数一般用占位符 ? 来表示

(3)Redis数据库

Redis数据库是Apache组织旗下的一款开源的免费的非关系型数据库。它可以存储多种类型的数据,分别是String类型,Hash(map)集合,List集合,Set集合和有序的Set集合五种

操作非关系型数据库没有通用的语句,每一个非关系型数据库都有着各自完全不同的语法规范。在Redis中对于每一种数据类型的相同操作的代码也是不一样的。eg:添加String类型数据代码是set(***,***),而添加Set类型则是sadd(***,***)。

七. JDBC&Jedis

(1)JDBC概述

JDBC是SUM公司定义的用Java代码来操作数据库的一套规范(接口)。而各个数据库厂商就负责按照JDBC接口来实现连接自己数据库的API。
为了简化操作JDBC的代码和提高运行效率,我们通常使用数据库连接池。同时为了确保程序运行的正确性,我们使用JDBC事务管理
为继续简化Java代码的编写,我们经常编写使用DBCUtis工具类。与此类似,我们也常编写运用BeanUtils工具类。

(2)Jedis概述

Jedis和JDBC类似,也是用于实现Java代码对数据库的操作。Jedis用于对Redis数据库的操作,与JDBC相比,Jedis的操作简单了很多,Java代码与Redis的数据库操作语句完全一样。

八.Maven项目管理工具

猜你喜欢

转载自blog.csdn.net/m0_46550452/article/details/104988241