带你吃透Servlet核心编程上篇(完整图文教程)(中)

简介: 文章目录1 走进Servlet1.1 Servlet简介1.2 第一个Servlet程序1.3 Servlet程序如何定位到url地址1.4 Servlet的生命周期方法1.5 Servlet请求的分发处理1.6 通过继承HttpServlet类实现Servlet程序2 Servlet体系2.1 Servlet继承体系2.2 ServletConfig类的使用

1.5 Servlet请求的分发处理

表单的提交方式分为POST和GET两种请求方式,但是service方法只有一个,如何实现分发处理呢?

首先在webapp文件夹下创建一个页面,以get方式提交表单给资源文件hello:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://localhost:8080/Servlet_Test/hello" method="get">
    <input type="submit"/>
</form>
</body>
</html>

HelloServlet中的service方法修改如下:

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        //向下转型
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String method = httpServletRequest.getMethod();
        //请求分发处理
        String post = "POST";
        String get = "GET";
        if(post.equals(method)){
            System.out.println("POST方式");
        }else if (get.equals(method)){
            System.out.println("GET方式");
        }
    }

getMethod方法可以返回一个String值,用于判断是POST请求还是GET请求,运行结果如下:


该例子中,简单介绍了如何判断请求方式,并打印。实际中,如果分发处理的代码都写在service方法中,会显得过于臃肿。

因此,在实际开发中,分发处理的具体操作会单独写成方法,供service调用。例如:doGet()、doPost()方法。


1.6 通过继承HttpServlet类实现Servlet程序

在实际开发中,我们很少通过实现Servlet方法的方式去实现Servlet程序,更多的是采用继承子类的方式来实现。大致步骤如下:


编写一个类去继承 HttpServlet 类;

根据业务需要重写 doGet 和 doPost 方法(分发处理的具体方法);

到web.xml中配置Servlet程序的访问地址。

需要注意的是,在HttpServlet类中,已经帮我们分发处理完毕了


案例代码如下:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * 通过继承的方式实现Servlet
 */
public class HelloServlet2 extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("do Get具体操作");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("do Post具体操作");
    }
}

除了自己重写以外,在实际开发中有一种更加便捷的方式:

使用IDEA菜单生成Servlet程序


创建的时候可以选择取消注解,会自动配置xml文件,只需要手动添加mapping即可:


2 Servlet体系

2.1 Servlet继承体系



Servlet接口: 负责定义Servlet程序的访问规范;

GenericServlet类: 实现了Servlet接口,做了很多空实现。持有一个ServletConfig类的空引用,并对ServletConfig的使用做了些方法;

HttpService抽象类: 实现了service方法,并实现了请求的分发处理。GET和POST请求的方式分别对应doGet与doPost方法。

自定Servlet程序: 根据自己的需要去重写doGet与doPost方法即可。

2.2 ServletConfig类的使用

ServletConfig类是Servlet程序的信息类。

Servlet程序和ServletConfig对象都是由Tomcat负责创建,我们只负责使用。

Servlet程序默认第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象。


ServletConfig的作用简介:

相关文章
|
1月前
|
存储 Java 应用服务中间件
第 2 章 Servlet 编程
第 2 章 Servlet 编程
49 0
|
6月前
|
SQL 前端开发 Java
JSP网上订餐管理系统myeclipse开发sql数据库BS模式java编程servlet技术mvc框架
JSP 网上订餐管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servlet技术mvc框架,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
39 0
|
10月前
|
存储 Java
【Java Web编程 十一】深入理解Servlet监听器
【Java Web编程 十一】深入理解Servlet监听器
63 0
【Java Web编程 十一】深入理解Servlet监听器
|
10月前
|
Java 数据安全/隐私保护
【Java Web编程 十】深入理解Servlet过滤器
【Java Web编程 十】深入理解Servlet过滤器
90 0
|
10月前
|
安全 Java 编译器
【Java Web编程 八】深入理解Servlet常用对象
【Java Web编程 八】深入理解Servlet常用对象
96 1
|
10月前
|
前端开发 Java 应用服务中间件
【Java Web编程 七】Servlet基本概念和生命周期
【Java Web编程 七】Servlet基本概念和生命周期
121 0
带你吃透Servlet核心编程下篇(完整图文教程)(下)
文章目录 1 Http协议 1.1 什么是 HTTP 协议 1.2 GET请求与POST请求 1.3 响应的HTTP协议格式 1.4 MIME数据类型 2 HttpServletRequest类 2.1 HttpServletRequest说明及常用方法 2.2 HttpServletRequest类演示 2.3 获取请求表单中的参数值(POST请求) 2.4 解决post请求中的中文乱码问题 3 请求转发 4 HttpServletResponse类 4.1 两个输出流 4.2 如何回传客户端数据 5 请求重定向 5.1 什么是请求重定向 5.2 请求重定向演示
带你吃透Servlet核心编程下篇(完整图文教程)(下)
|
XML 应用服务中间件 数据格式
带你吃透Servlet核心编程下篇(完整图文教程)(中)
文章目录 1 Http协议 1.1 什么是 HTTP 协议 1.2 GET请求与POST请求 1.3 响应的HTTP协议格式 1.4 MIME数据类型 2 HttpServletRequest类 2.1 HttpServletRequest说明及常用方法 2.2 HttpServletRequest类演示 2.3 获取请求表单中的参数值(POST请求) 2.4 解决post请求中的中文乱码问题 3 请求转发 4 HttpServletResponse类 4.1 两个输出流 4.2 如何回传客户端数据 5 请求重定向 5.1 什么是请求重定向 5.2 请求重定向演示
带你吃透Servlet核心编程下篇(完整图文教程)(中)
|
XML 前端开发 JavaScript
带你吃透Servlet核心编程下篇(完整图文教程)(上)
文章目录 1 Http协议 1.1 什么是 HTTP 协议 1.2 GET请求与POST请求 1.3 响应的HTTP协议格式 1.4 MIME数据类型 2 HttpServletRequest类 2.1 HttpServletRequest说明及常用方法 2.2 HttpServletRequest类演示 2.3 获取请求表单中的参数值(POST请求) 2.4 解决post请求中的中文乱码问题 3 请求转发 4 HttpServletResponse类 4.1 两个输出流 4.2 如何回传客户端数据 5 请求重定向 5.1 什么是请求重定向 5.2 请求重定向演示
带你吃透Servlet核心编程下篇(完整图文教程)(上)
带你吃透Servlet核心编程上篇(完整图文教程)(下)
文章目录 1 走进Servlet 1.1 Servlet简介 1.2 第一个Servlet程序 1.3 Servlet程序如何定位到url地址 1.4 Servlet的生命周期方法 1.5 Servlet请求的分发处理 1.6 通过继承HttpServlet类实现Servlet程序 2 Servlet体系 2.1 Servlet继承体系 2.2 ServletConfig类的使用
带你吃透Servlet核心编程上篇(完整图文教程)(下)