Servlet的详解

一、Servlet的介绍

1、What is Servlet?

Servlet(Server Applet),全称Java Servlet,主要用来服务程序,是由sun公司提供的一门用于开发动态Web资源的技术。Servlet是运行在服务器上的一个小程序,用来处理服务器的请求。就像我们现在所用的网页,都是通过浏览器来进行访问。我们使用的浏览器先发送请求,服务器接受到浏览器的请求后,并对其进行处理,这也就是我们经常所说的B/S模型(客户端与服务器的交互模型)。

 2、Servlet的作用

一般来说,servlet专门用来接受客户端的请求,专门接受客户端的请求数据,然后去调用底层service去处理数据,并返回结果。

servlet的三大作用域:

1、request(请求):作用范围是一次请求和响应,在三个作用域中最小。

2、session(会话):在一次会话过程中,它的作用域就一直存在。

3、servletcontext:作用域最大,作用于整个服务器中

servlet的核心作用:

1、接受客户端请求,从而完成操作任务。

2、动态生成页面网页。

3、将包含结果数据的动态网页响应给客户端。

 3、Servlet的生命周期

  • 实例化:servlet容器创建servlet对象。默认创建servlet实例的时机:当我们发送servlet对应的请求时(在使用时创建)。类似单例模式中的懒加载方式。希望容器一旦启动,就自动创建servlet实例通过load-on-startup=1设置,正数数值越低优先级别越高,优先实例化
  • 初始化:servlet实例一旦创建,就开始初始化一些参数配置,我们可以做一些参数配置,比如编码,可以在web.xml或注解中配置

  • 就绪状态:当发送对应的servlet请求时,会调用service()方法,注意此时不会重新创建servlet实例,也不会调用init()方法

  • 销毁状态:调用了destroy()方法后,当前servlet实例将会被标记为回收垃圾,会对servlet实例进行清除处理

4、Servlet的目录结构

webapp:存放部署的web项目

WEB-INF:存放web项目的核心内容

        web.xml:web的配置文件

        index.html/index.css/index.jsp/image…:存放一些写好的前端页面等等

因为idea会自动处理部署的文件并打包成war包存储在out文件夹中,因此我们使用idea时不用自己创建classes文件夹

5、Servlet创建核心目录结构(以IDEA为例)

可以用idea

6、MVC思想(Model View Controller)

MVC(Model View Controller)是软件工程中的一种软件架构模式,它把软件系统分为模型视图控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

优点:

  • 耦合性低,方便维护,可以利于分工协作
  • 重用性高

缺点:

  • 使得项目结构变得较为复杂,对开发人员要求高

三层结构的思想

三层架构通常意义上的三层架构就是将整个业务应用划分为:界面层、业务逻辑层、数据访问层。

区分层次的目的即为了“高内聚低耦合” 的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。

因此在servlet一般都是和MVC思想联合起来使用。使用三层架构的目的就是为了耦合度低,达到解耦的目的。

 二、Servlet的使用流程

1、Servlet的开发步骤

a.配置xml文件

把项目打包成war包形式

 <packaging>war</packaging>

导入servlet包的坐标 

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

 2、Servlet代码的示例(以查询全部数据为例)

package com.yu.web;

import com.yu.pojo.Brand;
import com.yu.service.BrandService;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;

@WebServlet("/selectAllServlet")
public class SelectAllServlet extends HttpServlet {
    private BrandService service = new BrandService();

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //1.调用BrandService完成查询
        List<Brand> brands = service.selectAll();

        //2.存入request域中
        request.setAttribute("brands",brands);

        //3.转发到brand.jsp
        request.getRequestDispatcher("/brand.jsp").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

一般每一个Servlet中都会有doGet和doPost方法,这是接受请求的两种方式,一般都把操作写在doGet这个请求方法中,在doPost方法中可以直接调用doGet的方法数据。同时,一般servlet都会继承HttpServlet这个对象,再进行页面数据的接受和处理。一个web项目,一般每个功能的实现(注册、登录、增删查看)都要有对应的Servlet对象,方可实现其功能。

Servlet中四个重要的对象:

HttpServletRequest            请求对象:获取请求信息

HttpServletResponse         响应对象:设置响应对象

ServletConfig对象              servlet配置对象

ServletContext对象         servlet的上下文对象

以上为我学习Servlet的一些小总结,如有错误,欢迎指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值