Servlet配置和三种实现方式

老版的JavaWeb项目中,配置servlet需要在web.xml中定义

    <servlet>
        <servlet-name>demo1</servlet-name>
        <servlet-class>ServletDemo</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>/demo</url-pattern>
    </servlet-mapping>

浏览器访问的是demo得到名为demo1的servlet,再通过名为demo1的servlet访问的是ServletDemo这个类

在最新的几个版本Java中,实现JavaWeb项目只需要添加注释,访问的时候直接访问域名后加 /demo1 就能访问到该sevlet。

//@WebServlet({"/demo1","/dd1","ddd1"})
//@WebServlet("/user/*")
//@WebServlet("*.do")
@WebServlet("/demo1")

 

例子:

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo1")
public class ServletDemo1 implements javax.servlet.Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("this is servlet");
    }

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

    @Override
    public void destroy() {

    }
}

可以看到ServletDemo1接口Servlet 重写的几个方法中-也就是servlet的生命周期

init:初始方法,在servlet初次创建时被调用

service:每次访问时被调用

destory:关闭时被调用(关闭之前)

还有第二种方式实现

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo2")
public class ServletDemo2 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("demo2...");
    }
}

GenericServlet 将servlet接口中的方法默认空实现,只是将service()方法作为抽象,将来定义servlet类可继承GenericServlet,实现service()即可

第三种 继承 HttpServlet

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doget");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("dopost");
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/demo3" method="get">
        <input name="usernmae">
        <input type="submit" value="提交">
    </form>
</body>
</html>

复写doGet和doPost即可 ,简化操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值