加入收藏 | 设为首页 | 会员中心 | 我要投稿 南平站长网 (https://www.0599zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

【JavaWeb】Servlet的应用全面讲解(一)

发布时间:2022-10-30 15:30:26 所属栏目:应用 来源:转载
导读: /**
* 实现servlet
* 1. 创建普通Java类
* 2. 实现Servlet的规范,继承HTTPServlet类
* 3. 重写service方法,用来处理请求
* 4. 设置注解@WebServlet(),指定访问的路径
*/

2. 代码

/**
 * 实现servlet
 * 1. 创建普通Java类
 * 2. 实现Servlet的规范,继承HTTPServlet类
 * 3. 重写service方法,用来处理请求
 * 4. 设置注解@WebServlet(),指定访问的路径
 */

2. 代码演示

//@WebServlet的用法
//@WebServlet(name = "Servlet01",value = "/ser01")
//@WebServlet(name = "Servlet01",value = {"/ser01","/ser02"})
//@WebServlet(name = "Servlet01",urlPattens = "/ser01")
//@WebServlet(name = "Servlet01",urlPattens = {"/ser01","/ser02"})
@WebServlet("/ser01") // 路径中的‘/’ 不要忘记
public class Servlet01 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 打印内容在控制台
        System.out.println("Hello Servlet!");
        //通过流输出数据到浏览器
        resp.getWriter().write("Hello Servlet?");
    }
}

(二)继承GenericServlet类的应用 1. 代码演示

@WebServlet("/ser02")
public class Servlet02 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("继承GenericServlet类...");
    }
}

(三)实现Servlet接口的应用 1. 代码演示

@WebServlet("/ser03")
public class Servlet03 implements 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("实现Servlet接口...");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }
}

二、Servlet的方法

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。本质上Service()方法才是servlet中真正用于处理请求的方法。

每次服务器接收到一个 Servlet 请求时初步应用,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

(1)service()

	//若Servlet存在service方法,则优先调用service方法处理get/post请求
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service...");
    }

(2)doGet()

	//处理Get方法的请求
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Get请求...");
    }

(3)doPost()

	//处理Post方法的请求
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Post请求...");
        //可以调用Get请求
        doGet(req,resp);
    }

(4)Servlet的生命周期

/**
 * 演示Servlet生命周期
 */
@WebServlet("/ser05")
public class Servlet05 extends HttpServlet {
    /**
     * 就绪/服务方法(处理请求数据)
     * 系统方法,服务器自动调用
     * 当有请求到达Servlet时,就会调用该方法
     * 方法可以被多次调用
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Servlet被调用了...");
    }
    /**
     * 销毁方法
     * 系统方法,服务器自动调用
     * 当服务器关闭或应用停止时,调用该方法
     * 方法只会执行一次
     */
    @Override
    public void destroy() {
        System.out.println("Servlet被销毁了...");
    }
    /**
     * 初始化方法
     * 系统方法,服务器自动调用
     * 当请求到达Servlet容器时,Servlet容器会判断该Servlet对象是否存在,如果不存在,则创建实例并初始化
     * 方法指挥执行一次
     * @throws ServletException
     */
    @Override
    public void init() throws ServletException {
        System.out.println("Servlet被创建了...");
    }
}

(编辑:南平站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!