美文网首页
JavaWeb之Servlet

JavaWeb之Servlet

作者: 指间Hrc | 来源:发表于2018-11-14 14:02 被阅读18次

概念

Servlet 是服务端的组件,运行在 Servlet 容器中,而 Servlet 容器负责 Servlet 和 客户的通信以及调用 Servlet 的方法,Servlet 和客户的通信采用“请求/响应”的模式。

可以完成以下功能:

1、创建并返回基于客户请求的动态 HTML 页面

2、创建可以嵌入到现有 HTML 页面中的部分 HTML 页面

3、与其他服务器资源进行通信

使用

当项目里找不到  Servlet 类时,需要在 Project Structure 中的 Libraries 进行添加 jar 包。

创建类 helloServlet 并实现 Servlet:

在 web.xml 文件里配置和映射 Servlet:

注:必须配置和映射,为了让网页直接访问 Java 类

运行 Tomcat,并访问 localhost:8080/hello:

可以看出 Servlet 所执行的生命周期,如果一直刷新网页则会一直执行 service:

当我们关闭 Tomcat 时:

Servlet 生命周期的方法(以下方法都是由 Servlet 容器负责调用)

1、构造器:只被调用一次,只有第一次请求 Servlet 时,创建 Servlet 的实例,调用构造器。说明 Servlet 是单实例的。

2、init 方法:只被调用一次,在创建好实例后立即被调用,用于初始化当前 Servlet。

3、service 方法:被多次调用,每次请求都会调用 service 方法。实际用于响应请求的。

4、destroy 方法:只被调用一次,在当前 Servlet 所在的 WEB 应用被卸载后调用,用于释放当前 Servlet 所占用的资源。

load-on-startup 参数

1、配置在 servlet 的节点中,如下图

2、指定 Servlet 被创建的时机,如果该数值若为负数,则在第一次请求时被创建,若为 0 或者正数,则在当前 WEB 应用被 Servlet 容器加载时创建实例,且数值越小越早被创建。

关于 servlet-mapping

1、同一个 Servlet 可以被映射到多个 URL 上,即多个 <servlet-mapping> 元素 <servlet-name> 子元素的设置值可以是同一个 Servlet 注册名。

2、在 Servlet 映射到 URL 中也可以使用 * 通配符,但是只能有两种固定的格式:

⑴ “ *.扩展名 ”

⑵ “ /* ”

注:带扩展名的不能带斜杆

Servlet 初始化参数

以节点 <init-param> 配置初始化参数,且该节点位置必须在节点 <load-on-startup> 前面。

获取初始化参数:

1、通过 getInitParamter 获取指定参数名称的参数值

2、通过 getInitParameterNames 获取参数名组成的 Enumeration 对象

ServletContext:

Servlet 引擎为每个 WEB 应用都创建一个对应的 ServletContext 对象,一个 WEB 应用中的所有 Servlet 都共享同一个 ServletContext  对象,所以 ServletContext  对象被称之为 application 对象。

ServletContext 由 ServletConfig 来获取,相当于 WEB 应用的一个大管家,可以从中获取 WEB 应用中的各个方面的信息。

配置当前 WEB 应用的初始化参数:

获取当前 WEB 应用的初始化参数:

用法和 Servlet 获取初始化参数一样。

两者区别在于,Servlet 初始化参数是局部参数,针对某个 Servlet 使用,而 ServletContext 初始化参数是全局的,每个 Servlet 都可以使用。

获取当前 WEB 应用的某个文件的的绝对路径(不是部署前的位置):

返回的路径其实是应用的部署后输出的位置:

获取当前 WEB 应用某个文件对应的输入流:

ServletRequest、ServletResponse:

ServletRequest 封装了请求信息,可以从中获取到任何的请求信息。

ServletResponse 封装了响应信息,如果给用户什么响应,具体可以使用该接口的方法实现。

这两个接口的实现类都是服务器给予实现的,并在服务器调用 service 时传入。

案例:

在 webapp 下新建 login.html,并放置一个 <form> 表单,以 POST 方式提交:

新建 LoginServlet 类,在 service 里面接收参数并打印:

在 web.xml 里添加配置:

其中节点 <url-pattern> 的信息对应的是 form 表单里的 action 值。

重启 Tomcat 服务器,访问以下地址:

分别填写信息:

点击 login:

打印了接收参数的值,通过参数可以在 Java 类里面使用 JDBC 去访问数据库。

如果是以 checkbox 的方式提交参数:

应使用如下来接收多个参数:

如果需要获取更多信息,可以将 servletRequest 转换为子接口 httpServletRequest:

servletResponse:

getWriter():返回 PrintWriter 对象,调用 print 或者 write 方法可以将信息打印到网页上

setContentType():设置响应的内容类型

每次新建 Servlet 都得实现 Servlet 的全部方法,而继承 GenericServlet 可以省略到只剩 service 方法,简便很多。

GenericServlet 是 Servlet 接口和 ServletConfig 接口的实现类,也是一个抽象类。

HttpServlet(实际开发用):

1、继承自 GenericServlet,针对于 HTTP 协议所定制

2、在 service 方法中直接把 ServletRequest 和 ServletResponse 转为 HttpServletRequest 和 HttpServletResponse,可以用来获取请求方式

3、实际开发中,使用时直接继承 HttpServlet 并重载里面的 doGet 或者 doPost 方法:

补充

Servlet 3.0 以上可以通过注解的方式来配置 servlet

表单使用

以上为本人的一些学习笔记,如有出错欢迎指正,陆续更新!!!

相关文章

  • JavaWeb之Servlet

    Servlet:Sun公司制订的一种用来扩展Web服务器功能的组件规范。当浏览器将请求发送给Web服务器(比如:a...

  • JavaWeb之Servlet

    概念 Servlet 是服务端的组件,运行在 Servlet 容器中,而 Servlet 容器负责 Servlet...

  • JavaWeb之Servlet

    什么是Servlet? Servlet(Server Applet)是 Java Servlet 的简称,是使用 ...

  • javaWEB之servlet

    一、Servlet 简介 1.1 Servlet是什么 Java Servlet是运行在 Web 服务器或应用服务...

  • JavaWeb之Servlet

    Servet Servlet其实就是一个需要实现特定接口的实现类,它能接收http请求,只需要在web.xml进行...

  • JavaWeb之Servlet

    六、Servlet 目录:Servlet简介、HelloServlet、Servlet原理、Mapping问题、S...

  • javaee 02 servlet

    servlet 是javaWeb 三大组件之一(Servlet,Filter,Listener)servlet 的...

  • JavaWeb知识点笔记

    1.1 Servlet 1.1.1 什么是Servlet Servlet是JavaWeb三大组件之一(Servle...

  • 4.0.1 JSP

    JavaWeb早期 :applet + servlet,其中servlet中需要大量的response.getWr...

  • IntelliJ 中JavaWeb的简单使用

    Intellijidea建javaWeb以及Servlet简单实现

网友评论

      本文标题:JavaWeb之Servlet

      本文链接:https://www.haomeiwen.com/subject/dwmhfqtx.html