Java Web学习3(Servlet技术1-基础知识、项目搭建流程)

一、基础知识

 1、Servlet简介

Servlet是JavaWeb应用中最核心的组件,它是运行在Web服务器的Java应用程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

Servlet的运行需要Servlet容器支持,Servlet容器通过调用Servlet对象提供的标准API接口对请求进行处理。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet指的是任何实现了Servlet接口的类,一般人们理解为后者。

Servlet的主要功能如下:

  • 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单。
  • 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
  • 处理数据并生成结果。
  • 发送显式的数据(即文档)到客户端(浏览器)。
  • 发送隐式的 HTTP 响应到客户端(浏览器)。

特点:

  • 运行在支持java的应用服务器上。
  • Servlet的实现遵循了服务器能够识别的规则,即服务器会根据请求对应的servlet进行请求处理。
  • 简单方便,可移植性强。 

2、Servlet结构体系

 

(1)Servlet接口

在Servlet开发中,任何一个Servlet对象都直接或间接实现javax.servlet.Servlet接口,该接口包括5个方法:

 (2)ServletConfig接口

ServletConfig接口位于javax.servlet包中,它封装了Servlet的配置信息,在Servlet初始化期间被传递。该对象定义了4个方法:

 (3)GenericServlet类

该类是一个抽象类,创建Servlet对象时,可以简化程序代码。

 (4)HttpServlet类

HttpServlet类是一个抽象方法,可以很方便的对HTTP请求进行处理和响应。

 3、Servlet生命周期

  • 加载Servlet类,创建Servlet实例。
  • Servlet 通过调用 init () 方法进行初始化:可在web.xml文件中为servlet指定初始化参数。
  • Servlet 调用 service() 方法来处理客户端的请求:对于收到的每个Http请求,容器会调用service()方法处理请求。对于HttpServlet类,通常调用doGet()、doPost()等方法。
  • Servlet 通过调用 destroy() 方法终止。
  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回。

(1)init()方法

 init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。

(2)service()方法

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

(3)destroy()方法

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。该方法可以关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。

二、Servlet基本应用

 1、Servlet创建主要有两种方式

  • 第一种为创建一个普通的Java类,使这个类继承HttpServlet类,再通过手动配置Web.xml文件注册Servlet对象。
  • 第二种方法直接通过IDE集成开发工具进行创建。

 2、Servlet配置

通过Servlet配置,告诉web容器哪个请求调用哪一个Servlet对象处理,对Servlet起到一个注册作用。

 Servlet配置包含在web.xml文件中,主要通过以下两步:

(1)声明Servlet对象

通过<servlet>标签声明一个Servlet对象,该标签包括两个子元素,<servlet-name>和<servlet-class>。

<servlet>
        <servlet-name>添加Servlet的名称</servlet-name>
        <servlet-class>添加Servlet的全类名</servlet-class>
</servlet>

 (2)映射Servlet

<servlet-mapping>
        <servlet-name>添加Servlet的名称</servlet-name>
        <url-pattern>映射具体访问URL</url-pattern>
</servlet-mapping>

 3、创建一个简单的Servlet web 项目

(1)打开eclipse创建Dynamic Web Project项目

File-New-Dynamic Web Project

填写项目名称

 点击Next-Next-勾选Generate web.xml...-点击Finish

可能出现以下问题:

 将本机的网络连接禁用,该工程此时即可创建完成,接着再启用网络连接。

参考链接:https://blog.csdn.net/sadu001/article/details/78851347?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

 (2)Java Resources src下添加java包

New-Package

填写包名

 (3)在新建的包下创建Java类

New-Class

在对话框中填写类名,并继承HttpServlet类

 最后点击Finish。

(4)编辑Java类

覆写service(注意使用"Alt+/")

 添加以下内容:

通过实行javax.servlet.http.HttpServlet抽象类来处理Http请求。

package com.herry.bean;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.getWriter().write("this is my servlet test(test)");
    	System.out.println("this is my servlet test");
	}
}

(5)在web.xml中创建serlvet链接器。

web.xml在WEB-INF目录下,双击打开web.xml,进入source模式。

 配置servlet如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
	<!-- 配置servlet -->
	<!-- 配置servlel类路径 -->
	<servlet>
		<servlet-name>myServlet</servlet-name> <!-- servlet名字自定义 -->
		<servlet-class>com.herry.bean.MyServlet</servlet-class> <!-- servlet类的路径-->
	</servlet>
	<!-- 配置servlel访问方式 -->
	<servlet-mapping>
		<servlet-name>myServlet</servlet-name>
		<url-pattern>/myServlet</url-pattern>
	</servlet-mapping>
</web-app>

 (6)保存(Ctrl+S)后,查看java文件是否编译成class文件

查看class文件位置WEB-INF文件下:

如果没有要对eclipse进行如下设置。

             1)查看eclipse 下Project-Bulid Automatically是否勾选,没有则勾选

              勾选之后,eclipse编辑下没保存一下自动编译

             2)如果还是没有class文件,进行路径设置

Project-Clean  清除已经编译的结果

 项目右键-Properties-Java Build Path-Source 
将Default output folder设置为MyServlet/WebContent/WEB-INF/classes,

 之后发现eclipse工作空间下有了class文件

 

 以上参考连接:https://blog.csdn.net/qq_34801169/article/details/80466092

(7)将创建好的web工程的WebContent复制到Tomcat的Webapps

1)进入MyServlet的工作路径

选择MyServlet-File-Properties

2)将MyServlet项目的WebContent的所有内容复制到Tomcat的下webapps

选择以下三个文件:

 在tomcat的安装路径下D:\apache-tomcat-9.0.31\webapps新建projecct文件夹,并将以上三个文件复制到该文件夹下

 (9)启动tomcat

点击startup.bat

 

(10)测试结果

浏览器输入http://localhost:8080/project/myServlet

参考:https://www.bilibili.com/video/BV1bb411b7Cq?p=6

发布了157 篇原创文章 · 获赞 217 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/kenjianqi1647/article/details/105461121