javaweb中的Servlet技术讲解

129 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Servlet技术

一.Servlet技术

Servlet是javaEE接口之一、Servlet是运行在服务器上的一个java小程序,servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求,它可以接受客户端发送过来的请求,并响应数据给客户端。 1.Servlet是javaweb的三大组件之一、三大组件有Servlet程序、Filter过滤器、Listener监听器

二.实现Servlet程序

  1. 编写一个类去实现Servlet接口
  2. 实现service方法,处理请求,并响应数据
  3. 到web.xml里面配置Servlet程序的访问地址 其中service最为重要
public class servlet1 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    /*
     * service方法是专门用来处理请求和响应的
     * */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service被访问了");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }

web.xml配置为的是在Tomcat服务器进行访问到Servlet程序

    <!--servlet标签给Tomcate配置servlet程序-->
<servlet>
    <!--servlet-name标签Servlet程序起一个别名(使用类名比较好)-->
    <servlet-name>servlet1</servlet-name>
    <!--servlet-class是servlet程序起的全类名-->
    <servlet-class>com.content.Dome.servlet1</servlet-class>
</servlet>
    <!--servlet-mapping标签给servlet程序配置访问地址-->
    <servlet-mapping>
        <!--servlet-name标签的作用是告诉服务器、我当前配置的地址给那个Servlet程序使用-->
        <servlet-name>servlet1</servlet-name>
        <!--url-pattern标签配置访问地址
        / 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程名
        /servlet 表示http://ip:port/工程名/servlet
        -->
        <url-pattern>/servlet</url-pattern>
    </servlet-mapping>

:Servlet是如何通过Tomcat进行访问的呢!

客户端(游览器)服务器 硬件 电脑 IP地址
http://localhost:8080/servlet1/servlet
localhost是服务器ip通过IP地址定位服务器
:8080是服务器端口号端口号定位Tomcat
/servlet1 是工程路径通过工程路径确定访问那个工程
/servlet 资源路径资源路径执行Java中servlet的service的代码段

三.Servlet声明周期

  1. 执行servlet构造器 --->项目执行会被创建
  2. 执行init初始化方法 --->执行时就进行初始化
  3. 执行service方法 --->项目存在时会一直执行service方法
  4. 执行destroy销毁方法 -->游览器停止时执行销毁方法
public class ServletTest implements Servlet {
    public ServletTest() {
        System.out.println(" 1 构造器方法");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2 初始化方法 init");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3 服务方法 service");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("4  销毁方法 destroy");
    }
}

图片.png

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

1.在实现Serlvet类中的service方法获取表单的请求方式

 public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
        //获取GET和POST方法,需要先进性类型转换(因为里面有getMethod方法)
        HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest;
        //获取请求方式
        String method = httpServletRequest.getMethod();
        System.out.println("method");
    }

2.大多数的开发为继承HttpServlet去获取Get和Post方法

public class ServletTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("这是Get方法");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("这是POST方法");
    }

一般开发中为继承HttpServlet方法

图片.png