Servlet入门学习笔记-Servlet技术

为什么需要Servlet ?

  • 使用JSP技术如何编写服务器动态网页?
    • 流程图:JSP使用Java生成动态内容
  • 在JSP技术出现之前如何编写服务器动态网页?
    • 流程图:Java代码就是Servlet程序

什么是Servlet ?

  • Servlet 是一个 Java程序,是在服务器上运行以处理客户端请求并做出响应的程序

第一个serlvet程序

  • 手动编写一个Servlet需要以下几步:
    • 创建一个servlet类,此类继承自HttpServlet
    • 重写doGet和doPost方法中的一个
    • 配置Servlet

初识Servlet

Servlet的配置

  • 在web.xml文件中配置Servlet

运行Servlet

  • 启动Tomcat服务器
  • 在浏览器中输入

Servlet和JSP的关系

JSP在运行时会被翻译成一个Servlet类,然后进行执行,可以说JSP本质上就是Servlet。

Servlet的生命周期

生命周期的各个阶段

Servlet API

ServeltConfig接口

  • 在Servlet初始化过程中获取配置信息
  • 一个Servlet只有一个ServletConfig对象

ServeltConfig接口的常用方法

|--------------------------------------|-----------------------------|
| 方法名称 | 功能描述 |
| String getInitParameter(String name) | 获取web.xml中设置的以name命名的初始化参数值 |
| ServletContext getServletContext() | 返回Servlet的上下文对象引用 |

ServeltContext接口

  • 获取Servlet上下文

ServeltContext接口的常用方法

|-------------------------------------------|----------------------------------|
| 方法名称 | 功能描述 |
| ServletContext getContext(String path) | 返回服务器上与指定URL相对应的ServletContext对象 |
| void setAttribute(String name,Object obj) | 设置Servlet中的共享属性 |
| Object getAttribute(String name) | 获取Servlet中设置的共享属性 |

例:

java 复制代码
getServletConfig().getServletContext().getContext("/servlet").getServerInfo()

GenericServlet抽象类

  • 提供了Servlet与ServletConfig接口的默认实现方法

GenericServlet的常用方法

|--------------------------------------|-------------------------------------------------------------|
| 方法名称 | 功能描述 |
| String getInitParameter(String name) | 返回服务器上与指定URL相对应的ServletContext对象,实际上是调用ServletConfig接口的同名方法 |
| ServletContext getServletContext() | 返回Servlet的上下文对象引用,实际上是调用ServletConfig接口的同名方法 |
| void init() | 初始化Servlet |

HttpServlet类

  • HttpServlet继承于GenericServlet
    • 处理HTTP协议的请求和响应

HttpServlet的方法

|-----------------------------------------------------------------------|--------------|
| 方法名称 | 功能描述 |
| void doGet(HttpServletRequest request,HttpServletRresponse response) | 以Get请求服务时调用 |
| void doPost(HttpServletRequest request,HttpServletRresponse response) | 以Post请求服务时调用 |

  • 使用doXxx()接收用户请求
    • doGet():用户使用get方式提交请求时调用
    • doPost():用户使用post方式提交请求是调用

Servlet的部署

  • 在Tomcat中如何部署

使用Servlet处理GET/POST请求

  • HttpServletRequest类常用方法

|--------------------------------------------|-----------|
| 方法名称 | 功能描述 |
| String getParameter(String param) | 获取客户端请求数据 |
| void setCharacterEncoding(String encoding) | 设置输入字符集 |

  • HttpServletResponse类常用方法

|--------------------------------------|---------------|
| 方法名称 | 功能描述 |
| void setContentType(String contType) | 设置输出字符集 |
| void sendRedirect(String url) | 让浏览器重定向到指定的资源 |

获取Servlet初始化参数

  • Servlet初始化参数配置
XML 复制代码
<web-app>
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>org.jbit.servlet.HelloServlet</servlet-class>
        <init-param>
            <param-name>initParam</param-name>
            <param-value>Hello Servlet</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>
</web-app>
java 复制代码
 public void doGet(HttpServletRequest request, 
                      HttpServletResponse response)
                   throws ServletException, IOException {
        System.out.println("处理请求时,doGet()方法被调用。");
        String initParam = getInitParameter("initParam");
        System.out.println(initParam);
    }

获取Servlet上下文参数

  • 配置Servlet上下文
XML 复制代码
<web-app>
    <context-param>
        <param-name>contextParam</param-name>
        <param-value>Hello Servlet</param-value>
    </context-param>
    <!--省略其他配置-->
</web-app>
  • 读取Servlet上下文
java 复制代码
public class HelloServlet extends HttpServlet {
	// ...省略其他代码
	public void doGet(HttpServletRequest request, 
			HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("处理请求时,doGet()方法被调用。");
		String initParam = getInitParameter("initParam");
		String contextParam = 								
			this.getServletContext().getInitParameter("contextParam");		System.out.println("Servlet初始化参数" + initParam);
		System.out.println("系统初始化参数" + contextParam);
	}
}

调用<init-param>中的参量:

调用格式为:

String name = getInitParameter("name"); 或

String name = getServletConfig().getInitParameter("name");

调用<context-param>中的参量:

调用格式为:

String name =getServletContext(). getInitParameter("name"); 或

String name = getServletConfig().getServletContext().getInitParameter("name");

相关推荐
UQWRJ2 小时前
菜鸟教程R语言一二章阅读笔记
开发语言·笔记·r语言
YGY Webgis糕手之路5 小时前
OpenLayers 综合案例-轨迹回放
前端·经验分享·笔记·vue·web
遇见尚硅谷6 小时前
C语言:*p++与p++有何区别
c语言·开发语言·笔记·学习·算法
艾莉丝努力练剑6 小时前
【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
c语言·开发语言·数据结构·学习·算法·链表·排序算法
jz_ddk7 小时前
[HarmonyOS] 鸿蒙LiteOS-A内核深度解析 —— 面向 IoT 与智能终端的“小而强大”内核
物联网·学习·华为·harmonyos
试着7 小时前
零基础学习性能测试第五章:Tomcat的性能分析与调优-Tomcat原理,核心配置项,性能瓶颈分析,调优
学习·零基础·tomcat·性能测试
老虎06277 小时前
JavaWeb(苍穹外卖)--学习笔记13(微信小程序开发,缓存菜品,Spring Cache)
笔记·学习·微信小程序
@蓝莓果粒茶9 小时前
LeetCode第350题_两个数组的交集II
c++·python·学习·算法·leetcode·职场和发展·c#
无名工程师9 小时前
AI 学习过程中各阶段的学习重点、时间规划以及不同方向的选择与建议等内容
人工智能·学习
试着9 小时前
零基础学习性能测试第五章:JVM性能分析与调优-垃圾回收器的分类与回收
jvm·学习·零基础·性能测试·垃圾回收器