JAVA-008-Servlet学习


1.1什么是Servlet

1.1.1 概念

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

1.1.2 Servlet开发流程

(一)、实现Servlet接口或者继承HttpServlet类
注:继承HttpServlet类更简洁更常用。

(二)、重写HttpServlet类的doGet()和doPost()方法
(三)、配置web.xml文件或者使用注解对servlet进行配置

1、首先在maven配置文件pom.xml中导入javax.Servlet - API的依赖

2、使用web.xml配置servlet访问路径

3、使用注解配置servlet访问路径(二选一)

HttpServlet类上加上@WebServlet(/WEB/DoLogin1)

1.1.3 Servlet的生命周期

  • init方法:创建完servlet对象时调用,只调用一次(单例)
  • Service方法:每次发出请求时调用
  • Destory方法:销毁servlet时调用,只调用一次。

Servlet执行流程:

​ 1、读取web.xml文件解析servlet

​ 2、使用反射机制初始化servlet类

​ 3、执行httpservlet父类service方法

​ 4、通过service()方法判断请求

​ 5、实现具体子类方法

Servlet线程安全问题:单例的,不安全的,不要在servlet中定义成员变量,会发生线程安全问题

cookie实现原理

​ 1、服务端创建cookie,使用响应头返回客户端

​ 2、客户端接收cookie,保存到本地

​ 3、客户端请求时会将cookie放入请求头中

​ 4、服务端从请求头获取cookie消息

session实现原理

​ 1、服务端创建session

​ 2、将sessionid放入响应头返回客户端

​ 3、客户端请求时会将sessionid放入请求头中

​ 4、服务端从请求头获取sessionid,使用session获取对应session消息

1.2HTTP请求分析

1.2.1请求格式

Https协议需要CA申请证书、443端口,具有安全的SSL加密传输协议,而Http是超文本传输协议、端口80、明文传输。

1.2.2HTTP防盗链

  • 控制请求资源,判断请求来源referer
  • 使用nginx反向代理

1.2.3跨域

跨域其实是浏览器的安全机制,请求访问的域名与Ajax请求地址不一致,浏览器会无法返回请求结果。

解决方案:

  1. 使用jsonP,支持get方法,但不支持post方法

  2. 添加header请求允许访问,

response.setHeader(“Access-Controller-Allow-Origin”,*“*”)

  1. 使用接口网关 - - nginx、springcloud

  2. httpclient内部转发

1.2.4网络攻击

表单重复提交及接口模拟(CSRF):

  • 表单重复提交:使用token,如果获取到请求,则删除该token(最好使用redis)

  • 接口模拟:使用token+验证码 例:12306登录验证码,防止恶意攻击

JavaScript脚本攻击:

  • xss攻击:使用拦截器将脚本进行转义。

    • 例:钓鱼网站思路

      https://www.baidu.com/login/username=<script>localtion.href="www.jiabaidu.com"</script>


文章作者: truly
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 truly !
 上一篇
JAVA-009-初识Linux JAVA-009-初识Linux
Linux 是一种自由和开放源码的类 UNIX 操作系统,英文解释为 Linux is not Unix,是在 1991 由林纳斯·托瓦兹在赫尔辛基大学上学时创立的,主要受到 Minix 和 Unix 思想的启发!
2022-01-14
下一篇 
JAVA-007-初识JVM JAVA-007-初识JVM
JVM一般指Java虚拟机,虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的!
2022-01-12
  目录