JavaWeb--快速入门Servlet(Part1)

简介: JavaWeb--快速入门Servlet(Part1)

前言


路遥说,在一个平凡的世界里,人要承受一定的痛苦和不安。但只要相信个体奋斗的力量,坚定地与生存搏斗,就能过上想要的生活。

很喜欢《平凡的世界》的一句话,一直不断的鼓励我努力向前,也送个各位看到这个写的很烂的文章的人,共勉~


一、Servlet


运行在服务器端的小程序,他可以接受客户端发送来的请求,并响应数据给客户端

Servlet是JavaEE规范之一。规范自然就是接口

Servlet就是JavaWeb三大组件之一。三大组件分别是:Servlet、Filter、Listerner监听器


1.什么是JavaEE?


Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE)

是 Sun 公司为企业级应用推出的标准平台,用来开发B/S架构软件。Java EE 可以说是一个框架,也可以说是一种规范。


2.如何手动实现 Servlet程序


1、编写一个类去实现servlet接口

2、实现service方法,处理请求,并响应数据

3、到web.xml中去配置servlet程序的访问地址


实例


package com.caq.study;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class HelloServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init初始化方法");
//          1.可以去获取Servlet程序的别名servlet-name的值
        System.out.println("HelloServlet的别名是:"+servletConfig.getServletName());
//          2.获取初始化参数init-param
//          3.获取ServletContext对象
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    /**
     * service方法专门用来处理请求和响应的
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//        System.out.println("hello servlet!");
        //ServletRequest是HttpServletRequest的父接口,我们通过强转为一个子接口类型
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String method = httpServletRequest.getMethod();
        if("GET".equals(method)){
            doGet();
        }else if ("POST".equals(method)){
            doPost();
        }
    }
//    get请求的操作
    public void doGet(){
        System.out.println("get请求");
        System.out.println("get请求");
    }
//    post的请求
    public void  doPost(){
        System.out.println("post请求");
        System.out.println("post请求");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }
}

xml配置


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--    servlet标签给Tomcat配置Servlet程序-->
    <servlet>
        <!--        给servlet起一个别名,一般是类名-->
        <servlet-name>HelloServlet</servlet-name>
        <!--        servlet-class是Servlet类的全类名-->
        <servlet-class>com.caq.study.HelloServlet</servlet-class>
    </servlet>
    <!--    servlet-mapping标签给servlet配置访问地址-->
    <servlet-mapping>
        <!--        servlet标签作用是告诉服务器,当前配置的地址给那个servlet程序使用-->
        <servlet-name>HelloServlet</servlet-name>
        <!--        url-pattern标签配置访问地址-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>HelloServlet2</servlet-name>
        <servlet-class>com.caq.study.HelloServlet2</servlet-class>
    </servlet>
    <!--    <url-pattern标签配置访问地址
            /   斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径
            /hello  表示地址为:http://ip:port/工程路径/hello
    -->
    <servlet-mapping>
        <servlet-name>HelloServlet2</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>HelloServlet3</servlet-name>
        <servlet-class>com.caq.study.HelloServlet3</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet3</servlet-name>
        <url-pattern>/hello3</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>ContextServlet1</servlet-name>
        <servlet-class>com.caq.study.ContextServlet1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ContextServlet1</servlet-name>
        <url-pattern>/context1</url-pattern>
    </servlet-mapping>
</web-app>

image.png

image.png


3.url 地址到 Servlet机制


里面写的很详细了,不需要怎么补充了

image.png


4.Servlet 的生命周期


1、执行Servlet构造器方法

2、执行init初始化方法

第一、二步,是在第一次访问,的时候创建 Servlet 程序会调用。

3、执行 service 方法

第三步,每次访问都会调用。

4、执行 destroy 销毁方法

第四步,在 web工程停止的时候调用


5.GET 和 POST 请求的分发处理


实例和标题2代码一致,我都写在一块了

下面补充一点知识

Get请求和Post请求的区别?

GET请求一般用去请求获取数据

POST一般作为发送数据到后台时使用

GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的

POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制

GET请求比较常见的方式是通过url地址栏请求

POST最常见是通过form表单发送数据请求


6.通过继承 HttpServlet 实现 Servlet


一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。

1、编写一个类去继承 HttpServlet 类

2、根据业务需要重写 doGet 或 doPost 方法

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


package com.caq.study;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServlet2 extends HttpServlet {
    /**
     * doGet方法在get请求时调用
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HelloServlet2的doGet方法");
    }
    /**
     * 在post请求的时候调用
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HelloServlet2的doPost方法");
    }
}

xml文件在第一个实例中

image.png


7.如何使用idea创建Servlet程序


image.png


8.Servlet类的继承体系


image.png


二、ServletConfig类


ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。

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

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


ServletConfig 类的三大作用


1、可以获取 Servlet 程序的别名 servlet-name 的值

2、获取初始化参数 init-param

3、获取 ServletContext 对象



相关文章
|
3月前
|
Java 应用服务中间件 Maven
JavaWeb基础5——HTTP,Tomcat&Servlet
JavaWeb技术栈、HTTP、get和post区别、响应状态码、请求响应格数据式、IDEA使用Tomcat、报错解决、Servlet的体系结构、IDEA使用模板创建Servlet
JavaWeb基础5——HTTP,Tomcat&Servlet
|
6月前
|
Java 应用服务中间件
Servlet简介&快速入门
Servlet简介&快速入门
|
6月前
|
SQL druid Java
javaweb案例实训之基于jsp和servlet的用户管理开发[增删改查及登录注销]
javaweb案例实训之基于jsp和servlet的用户管理开发[增删改查及登录注销]
46 0
|
6月前
|
SQL 数据可视化 数据库
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
29 0
|
7月前
|
存储 安全 JavaScript
JavaWeb之Servlet(下)
本文主要介绍了JavaWeb开发中关于请求、响应、会话和Servlet3.0注解的相关知识。首先讲解了请求(Request)的常用方法,以及处理请求乱码问题的几种方式。接着讨论了响应(Response)的方法,,以及设置全局初始化参数。然后介绍了会话(Session)的概念,包括其生命周期、如何设置和获取初始化参数,并对比了全局初始化参数和Servlet3.0的`@WebServlet`注解。文中给出了具体的代码示例和测试结果,帮助读者更好地理解和掌握这些概念。
|
7月前
|
Java 应用服务中间件 程序员
JavaWeb之Servlet(上)
本篇博文介绍了JavaWeb中Servlet的基本概念和应用。Servlet是用于交互式浏览和修改数据、生成动态Web内容的Java程序,通常运行在支持Java的应用服务器上。文章讲解了Servlet的工作模式,包括客户端请求、服务器调用Servlet以及响应返回客户端的过程。此外,还提到了Servlet API,特别是doGet和doPost方法用于处理请求和响应。作者通过创建第一个Servlet的步骤,展示了如何实现Servlet接口并配置web.xml文件。最后,文章简述了Servlet的工作原理和生命周期,强调了Servlet的单例特性以及初始化、服务和销毁的过程。
|
7月前
|
存储 前端开发 Java
JavaWeb:servlet+jsp+mybatis商品管理增删改查
商品管理通常包括增加(添加)、删除、修改和查询商品信息
185 1
JavaWeb:servlet+jsp+mybatis商品管理增删改查
|
7月前
|
Java
Servlet快速入门
Servlet快速入门
34 0
|
4月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
42 3
|
4月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
43 1