JavaWeb--快速入门Servlet(一)

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

一、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 对象

相关文章
|
4月前
|
缓存 Java 应用服务中间件
javaweb实训第三天上午——Servlet(1)
Servlet基础 课程介绍 Servlet基础; (掌握) 基本结构 生命周期 执行流程 接收参数 响应数据
54 0
|
2天前
|
存储 安全 JavaScript
JavaWeb之Servlet(下)
本文主要介绍了JavaWeb开发中关于请求、响应、会话和Servlet3.0注解的相关知识。首先讲解了请求(Request)的常用方法,以及处理请求乱码问题的几种方式。接着讨论了响应(Response)的方法,,以及设置全局初始化参数。然后介绍了会话(Session)的概念,包括其生命周期、如何设置和获取初始化参数,并对比了全局初始化参数和Servlet3.0的`@WebServlet`注解。文中给出了具体的代码示例和测试结果,帮助读者更好地理解和掌握这些概念。
|
2天前
|
Java 应用服务中间件 程序员
JavaWeb之Servlet(上)
本篇博文介绍了JavaWeb中Servlet的基本概念和应用。Servlet是用于交互式浏览和修改数据、生成动态Web内容的Java程序,通常运行在支持Java的应用服务器上。文章讲解了Servlet的工作模式,包括客户端请求、服务器调用Servlet以及响应返回客户端的过程。此外,还提到了Servlet API,特别是doGet和doPost方法用于处理请求和响应。作者通过创建第一个Servlet的步骤,展示了如何实现Servlet接口并配置web.xml文件。最后,文章简述了Servlet的工作原理和生命周期,强调了Servlet的单例特性以及初始化、服务和销毁的过程。
|
4月前
|
存储 前端开发 Java
JavaWeb:servlet+jsp+mybatis商品管理增删改查
商品管理通常包括增加(添加)、删除、修改和查询商品信息
60 1
JavaWeb:servlet+jsp+mybatis商品管理增删改查
|
4月前
|
Java
Servlet快速入门
Servlet快速入门
8 0
|
4月前
|
安全 Java
javaweb实训第四天下午——员工管理系统-JSP&Servlet&JDBC综合练习-CRUD
1.课程介绍 Servlet细节; (掌握) 员工信息相关的CRUD; (掌握) 部门信息相关的CRUD; (掌握) 2.Servlet细节 2.1.多种匹配方式
41 0
|
4月前
|
编解码 应用服务中间件 数据库
|
5月前
|
小程序 应用服务中间件 数据库连接
|
1天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
13 5
|
1天前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
9 1