一、Servlet简介

 1.1 什么是Servlet(server applet): 是一种独立于平台和协议的服务器端Java应用程序,通过Servlet可以生成动态web页面。还可以在服务器端对客户端的请求进行处理,控制程序的执行。

  作用:交互式的浏览和更新数据,并生成动态的页面内容展示。

  Servlet处理web请求过程:

  

  1. 服务器接受从客户端发送的请求
  2. 服务器将请求信息发送至Servlet
  3. Servlet经处理后,生成响应的内容
  4. 服务器将响应的内容返回客户端

  jsp和Servlet关系:Jsp被web容器解析时,最终会编译成一个Servlet类

1.2 Servlet API

名称 说明 包名
Servlet接口 Java Servlet的基础接口,定义类Servlet必须实现的方法 javax.srevlet
GenericServlet类 继承自Servlet接口,属于通用的、不依赖于协议的Servlet javax.srevlet
HttpServlet类 继承自GenericServlet类,是在其基础上拓展了HTTP协议的Servlet javax.srevlet.http
HttpServletRequest接口 继承自ServletRequest接口,用于获取请求数据的读取 javax.srevlet.http
HttpServletResponse接口 继承自ServletResponse接口,用于返回响应数据 javax.srevlet.http

1.3 Servlet生命周期

  Servlet生命周期:Servlet从创建到销毁的过程。

  Servlet容器:用来装载Servlet对象的一种容器,是负责管理Servlet的一类组件。

  包括一下几个环节:

  1.加载和实例化。

    Servlet容器负责加载和实例化Servlet,当客户端发送一个请求时,容器查找是否存在对应的Servlet实例,没有则创建一个,有则取出该实例来响应请求

  2.初始化。

     容器完成Servlet实例化后,容器将调用Servlet的init()方法进行初始化,初始化的目的是让Servlet对象在处理客户端请求前完成一些初始化工作,如设置数据库连接参数、建立JDBC连接,或者建立对其他资源的引用。init()方法在java.servlet.Servlet接口中定义。(对于每一个Servlet实例,init()方法只被调用一次)

  3.提供服务,请求处理。

         Servlet被初始化后,就处于能响应请求的就绪状态。当Servlet容器接收到客户端请求时,调用Servlet的service()方法处理客户端请求。Servlet实例通过ServletRequest对象获得客户端的请求。通过ServletResponse对象的方法设置响应信息。

  4.销毁。

    容器判断一个Servlet是否应当被释放时(容器关闭或需要回收资源),容器就会调用Servlet的destroy()方法。destroy()方法知名哪些资源可以被系统回收,而不是由destroy()方法直接进行回收。

二、Servlet应用

 2.1 创建Servlet三种方式

  • 实现Servlet接口
  • 继承GenericServlet类
  • 继承HttpServlet类
package myproject;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class MyServlet extends HttpServlet{
protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
System.out.println("调用doGet方法");
} protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
System.out.println("调用doPost方法");
} public void destroy(){
System.out.println("Servlet 被销毁");
} public void init(ServletConfig config)throws ServletException{
System.out.println("Servlet 初始化");
String initParam = config.getInitParameter("charSetConfig");
System.out.println(initParam);
}
}

2.2 Servlet的部署与运行

  部署Servlet需要配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>myproject</display-name> <servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>myproject.MyServlet</servlet-class>
<init-param>
<param-name>charSetContent</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
<welcome-file-list> <welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

 

web.xml常用的<url-pattern>设置有3中形式

  • <url-pattern>/xxx</url-pattern>。精确匹配,例如:<url-pattern>/helloserlvet</url-pattern>
  • <url-pattern>/xxx/*</url-pattern>。匹配路径,如果没有精确匹配,对/xxx/路径的说有请求将由该Servlet处理,例如:<url-pattern> /helloservlet/*</url-pattern>
  • <url-pattern>*.do</url-pattern>。如果没哦有精确匹配和路径匹配,则对所有的.do扩展名的请求将由该Servlet处理

运行:浏览器输入http://localhost:8080/myproject/test

控制台:

   

【JavaWeb】之Servlet的更多相关文章

  1. JavaWeb学习——Servlet相关的接口和类

    JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...

  2. JavaWeb之Servlet入门(二)

    1. 准备 在JavaWeb之Servlet入门(一)中,我们完成了第一个Servlet程序,完成了从URL到后台控制器的中转过程,接下来我们延续JavaWeb之Servlet入门(一)学习下如何传参 ...

  3. JavaWeb学习--Servlet认识

    Servlet开发 用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种请 ...

  4. IDEA新建javaWeb以及Servlet简单实现

    刚开始用IDEA开发,还不太熟悉,因此写一个教程,加深印象 1.新建一个Web项目 两种方法:java 和 Java Enterprise(推荐) 第一种)通过Java工程创建,这个方法需要手动导入T ...

  5. Intellij IDEA创建javaWeb以及Servlet简单实现

    1.创建web工程 File --> New --> Project...

  6. javaweb之servlet 全解

    ①Servlet概述 ⑴什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求, 服务器会把接收到的请求交给Servlet来处理,在Serv ...

  7. JavaWeb学习—Servlet

    1.什么是Servlet Servlet是一个继承HttpServlet类的Java类 Servlet必须部署在web服务器端,用来处理客户端的请求 2.Servlet运行过程 Web Client ...

  8. JavaWeb之Servlet总结

    今天上班居然迟到了,昨天失眠了,看完吐槽大会实在不知道做些什么,刚好朋友给我发了两个JavaWeb的练习项目,自己就又研究了下,三四点才睡,可能周日白天睡的太多了,早上醒来已经九点多了,立马刷牙洗脸头 ...

  9. javaWEB之Servlet

    Servlet 1. 什么是Servlet  * Servlet是JavaWeb三大组件之一(Servlet.Filter.Listener)  * Servlet是用来处理客户端请求的动态资源  * ...

  10. Intellijidea建javaWeb以及Servlet简单实现

    一.创建并设置javaweb工程1.创建javaweb工程File --> New --> Project... 点击Project后出现如下界面,选择Java Enterprise,选中 ...

随机推荐

  1. 【Linux开发】linux设备驱动归纳总结(三):7.异步通知fasync

    linux设备驱动归纳总结(三):7.异步通知fasync xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  2. 2019牛客暑期多校训练营(第一场)-E(DP)

    题目链接:https://ac.nowcoder.com/acm/contest/881/E 题意:求可分解成n个AB和m个BA的字符串的个数. 思路: 首先根据贪心思想,前n个A可作为AB的A,后m ...

  3. Dubbo使用Sentinel来对服务进行降级与限流

    一.Sentinel 是什么 Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳定 ...

  4. GDOI2018游记

    前言 不知怎的,本蒟蒻居然拿到了GDOI参赛名额 于是乎,我稀里糊涂地跟着诸位大佬屁颠屁颠地来到了阔别已久的中山一中 腐败difficult and interesting的GDOI比赛就这样开始了. ...

  5. GitHub从小白到熟悉<一>

    注册开始

  6. go语言坑之并发访问map

    fatal error: concurrent map read and map write 并发访问map是不安全的,会出现未定义行为,导致程序退出.所以如果希望在多协程中并发访问map,必须提供某 ...

  7. zabbix-3.4.6安装

    先安装myql和phpmysql5.7.17: http://www.cnblogs.com/cjsblogs/p/8116782.htmlphp7.2.1: http://www.cnblogs.c ...

  8. Redis安全策略

    1. 开启redis密码认证,并设置高复杂度密码 描述 redis在redis.conf配置文件中,设置配置项requirepass, 开户密码认证. redis因查询效率高,auth这种命令每秒能处 ...

  9. kinit: Bad encryption type while getting initial credentials

    描述:RHEL 6.x主机执行kinit -kt命令报如下错误 [heboan@localhost~]$ kinit -kt heboan.keytab heboan kinit: Bad encry ...

  10. echarts属性的设置

    // 全图默认背景  // backgroundColor: ‘rgba(0,0,0,0)’, // 默认色板 color: ['#ff7f50','#87cefa','#da70d6','#32cd ...