Servlet介绍

jar包介绍

JAR包是 Java 的一种文档格式,是一种与平台无关的文件格式,可将多个文件合成一个文件。
jar包主要是对class文件进行打包,而java编译生成的class文件是平台无关的,这就意味着jar包是跨平台的,所以不必关心涉及具体平台的问题。
IDEA打jar包的方式
file->projecct structure->artifacts-JAR(快捷键:Ctrl+Shift+Alt+S)

Servlet

什么是 Servlet
Servlet Server applet (小程序)的结合写法,意思是服务器小程序用于扩展 web 服务软件业
务功能的组件,每一种请求都需要对应一个单独的 Servlet (对应 WebServer 的业务)
Servlet JavaWeb 最为核心的内容,它是 Java 提供的一门动态 web 资源开发技术。
Servlet JavaEE 规范之一,其实就是一个接口,将来我们需要定义 Servlet 类实现 Servlet
Servlet 想要运行,必须依靠一个 Web 服务器软件,也称 Web 容器( Tomcat
Servlet 的作用
Servlet 刚刚出现的年代, Servlet 的作用十分复杂,即承担了处理数据的作用,又承担了展示
页面的作用,导致代码的耦合性过高 , 不易于维护。随着时间的推移,出现了 MVC 思想,也就是
模型 - 界面 - 控制器思想,极大的简便了开发,也明确了 Servlet 的作用。
附加:最经典的 MVC 模型是: JSP+JavaBean+Servlet 开发模式。
MVC 模型
MVC 模式,全称为 Model-View-Controller (模型 - 视图 - 控制器)模式,它是一种软件架构模
式,其目标是将软件的用户界面(即前台页面)和业务逻辑 分离 ,使代码具有更高的可扩展性、
可复用性、可维护性以及灵活性。
MVC 模式将应用程序划分成模型( Model )、视图( View )、控制器( Controller )等三层
分层阐述
Model
(模型)
它是应用程序的主体部分,主要由以下 2 部分组成:
1. 实体类 Bean :专门用来存储业务数据的对象,它们通常与数据库中的某
个表对应,例如 User Student 等。
2. 业务处理 Bean :指 Service Dao 的对象,专门用于处理业务逻辑、数
据库访问。 一个模型可以为多个视图( View )提供数据,一套模型
Model )的代码只需写一次就可以被多个视图重用,有效地减少了代码的
重复性,增加了代码的可复用性。
View (视
图)
指在应用程序中专门用来与浏览器进行交互,展示数据的资源。在 Web 应用
中, View 就是我们常说的前台页面,通常由 HTML JSP CSS JavaScript
等组成
Controller
(控制
器)
通常指的是 Servlet 。它负责将用户的请求交给模型( Model )层进行处理,
并将 Model 层处理完成的数据,返回给视图( View )渲染并展示给用户。
在这个过程中, Controller 层一般不会做任何业务处理,它只是 View (视
图)层和 Model (模型)层连接的枢纽,负责调度 View 层和 Model 层,将
用户界面和业务逻辑合理的组织在一起,起到控制效果。

Servlet 生命周期
对象的生命周期指一个对象从被创建到被销毁的整个过程

Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象

@WebServlet(urlPatterns = "/demo",loadOnStartup = 1)
//配置路径时,配置loadOnStartup,修改Servlet创建的时机,参数为负数和非负数
//1,负整数:第一次被访问时创建Servlet(默认情况)
//2,零或者正整数:服务器启动时创建Servlet对象,数字越小,优先级越高(把创建的时机提前了,把耗时的
//操作提前到服务器启动的时候,用户在访问Servlet耗时更少,更快)


2. 初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如
加载配置文件、创建连接等初始化的工作。该方法只调用一次
3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。
4. 服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法(只会调用一次)完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收

Servlet方法介绍

 前四种以上介绍过,这里不过多赘述,介绍下面两种

getServletConfig()

获取Servlet配置对象

public String getServletInfo(){
    return null;
}

getServletInfo()

不常用,主要是获取一些信息,一般写返回空

public String getServletInfo(){
    return null;
}

GenericServlet

  • 直接编写Servlet,比较复杂,有的方法不一定需要,但是却必须重写,导致大量无用代码生成。

  • 构建一个GenericServlet(通用Servlet)抽象类,其中重写所有Servlet接口的方法,并将service方法设置为abstract

    我们需要使用Servlet的时候可以继承GenericServlet,减少重写的代码量

    同时必须继承service方法实现用户逻辑

  • 一般称这种设计模式为适配器设计模式

ServletConfig

  • Servlet的配置信息对象

    • 存储了web.xml中的配置信息
    • 一个Servlet对应一个ServletConfig对象
    • 在Servlet的init函数调用时会传入一个ServletConfig对象
  • 注意:以上方法在GenericServlet中可以直接使用this调用,因为GenericServlet实现了ServletConfig接口。

ServletContext

  • Servlet的环境(上下文)对象,在一个webapp中只有一个,也就是说不管几个Servlet对象,它们的ServletContext是共用的。

  • ServletContext在服务器启动时创建,服务器关闭时终止。

 ServletContext属于应用域,与其对应的还有请求域,会话域等,在不同的域可以存放一些数据,在对应的域之内均可使用,例如在应用域存放的数据在整个webapp中均可使用。

Servlet 获取参数及响应
请求与响应对象
如果想通过 Servlet 获取用户参数,以及给出用户响应,我们需要用到的就是两个对象:
  •  HttpServletRequest:获取请求数据
            1,浏览器发出 HTTP 请求到 Tomcat
            2,Tomcat 会解析本次 HTTP 请求中的数据,并把解析的结果存入到 request 对象中
            3,request 对象中就可以获取请求的所有相关数据,用于完成业务
  • HttpServletResponse:设置响应数据
           1,业务处理完成后,需要给前端返回处理结果即为响应数据
           2,响应数据需要封装到 response 对象中
           3,Tomcat 会解析 response 对象,按照 HTTP 响应格式拼接结果发送给前端浏览器
           4,浏览器解析结果,显示内容

Cookie

基本概念
  • Cookie是在浏览器访问web服务器上的某个资源时,由web服务器在响应浏览器时通过响应
头附带的传送给浏览器并存储在浏览器端的一小段数据;
  • 一旦web浏览器保存了来自于某个服务器的Cookie,那么当浏览器再次访问这个服务器的时
候,会通过请求头将 cookie 传递给 web 服务器;
  • 浏览器访问服务器的时候,只会携带由当前服务器存储在客户端的cookie
  • Cookie中缓存的数据数据是以键值对形式存储的(name-value)。
  • Cookie默认在浏览器关闭之后,就立即实现失效,如果想长期有效,需要设置过期时间

HttpSession

Session 对象,就是当浏览器向服务器发送请求建立连接后,由服务器创建的存储在服务器端的
用于记录用户状态对象
特点
服务器会为每个客户端连接分配一个 Session 对象,存储在服务器上;
同一个浏览器发送多次请求,同属于一次会话,共享同一个 Session 对象;
原理
Session 原理:
1. 当客户端浏览器 ( 第一次 ) 请求服务器时,服务器会为当前客户端连接创建一个 Session 对象,
同时将 sessionID 通过 Cookie 响应给客户端,并存储在客户端;
2. 当客户端端再次请求服务器的时候,会通过请求头携带存储 sessionID cookie ,服务器接
收请求之后获取 cookie 中的 sessionID ,通过这个 sessionID 获取第一次连接时创建 Session
对象。
常用方法
HttpSession request.getSession(); 获得当前会话对象
void session.setAttribute([key], [value]); 向会话中保存对象 , 键值对形式
Object session.getAttribute([key]); 从会话中获得指定 key value
void session.removeAttribute([key]); 从会话中删除指定的 key 和它对应的 value
String session.getId(); 获得当前会话的 ID
void session.setMaxInactiveInterval([ 时间 : ]); 设置 HttpSession 失效时间 , 单位秒(超时断开登录,会话默认保持时间为30min
void session.invalidate(); 设置当前 Httpsession 立即失效(立即失效 - 比如注销的时候)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值