• 【JavaWeb】练习三


    一、简答题
    1>简述servlet的生命周期

    第一次访问某个servlet的时候,tomcat容器会创建servlet实例,紧接着会调用init方法进行初始化。然后执行service方法,在父类中的service方法中判断请求是get或post执行相应的doGet或doPost方法。后面再访问的时候,执行service方法,在父类中的service方法中判断请求是get或post执行相应的doGet或doPost方法。当停止服务或重新加载或将项目从tomcat中移除的时候,会执行destroy方法,释放资源,销毁servlet的实例。

    2>servlet中的两个init方法

    1. 如果我们直接通过实现Servlet接口来编写一个Servlet类,就需要实现 Servlet接口中定义的5中方法,为了简化Servlet的编写,在javax.servlet包中,给我们提供了一个抽象的类 GenericServlet,它提供了除service()方法外的其他4种方法的简单实现。GenericServlet类定义了一个通用的、不依赖于具体协议的Servlet,它实现了Servlet接口和ServletConfig接口。
    2. 如果我们要编写一个通用的Servlet,只需要从GenericServlet类继承,并实现其中的抽象方法service()。
    • GenericServlet类中,提供了两种重载的init()方法:
      ·public void init(ServletConfig config)throws ServletException
      ·public void init()throws ServletException
    • 第一种init()方法是Servlet接口中init()方法的实现。这种方法中,首先将ServletConfig对象保存在一个transient实例变量中,然后调用第二种不带参数的init()方法。
      通常我们在编写集成自GenericServlet的Servlet类时,只需重写第一种不带参数的init()方法就可以了。如果覆盖了第一种init()方法,那么应该在子类的该方法中,包含一句super.init(config)代码调用。

    3>servlet再什么时候创建,servlet是单例的吗

    tomcat会在第一次访问的时候创建servlet的对象,然后调用init方法。请求过来后,执行service方法,再service方法中判断请求是get还是post调用相应的doGet或doPost方法。后面再访该servlet的时候,直接实现sevice方法。servlet是单例的。

    二、编程题
    model2开发模式 实现 数据展示与删除 页面使用 el+jstl实现
    提交的代码 servlet代码以及 jsp代码 以及 运行结果图

    public class EmpListServlet extends HttpServlet {
        private EmployeeDao employeeDao = new EmployeeDaoImpl();
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            List<Employees> list = employeeDao.findAll();
            req.setAttribute("list",list);
            req.getRequestDispatcher("emplist.jsp").forward(req,resp);
            
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    @WebServlet(urlPatterns = "/empdel.do")
    public class EmpDelServlet extends HttpServlet {
        EmployeeDao employeeDao = new EmployeeDaoImpl();
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String id = req.getParameter("id");
            int rows = employeeDao.del(Integer.parseInt(id));
            resp.sendRedirect("emplist.do");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    <html>
    <head>
        <title>Titletitle>
        <link href="bootstrap/static/bootstrap-3.3.7-dist/css/bootstrap.css" rel="stylesheet">
        <script type="text/javascript" src="js/jquery-1.12.4.js">script>
        <script type="text/javascript" src="bootstrap/static/bootstrap-3.3.7-dist/js/bootstrap.js">script>
    head>
    <body>
    
        <div style="width: 780px;margin: 0px auto">
            <table class="table table-hover">
                <tr>
                    <td>工号td>
                    <td>姓名td>
                    <td>性别td>
                    <td>住址td>
                    <td>电话td>
                    <td>工资td>
                    <td>操作td>
                tr>
                <c:forEach items="${list}" var="emp">
                    <tr>
                        <td>${emp.id}td>
                        <td>${emp.name}td>
                        <td>${emp.sex}td>
                        <td>${emp.address}td>
                        <td>${emp.phone}td>
                        <td>${emp.salary}td>
                        <td>
                            <a href="empdel.do?id=${emp.id}" class="btn btn-danger">删除a>
                        td>
                    tr>
                c:forEach>
            table>
        div>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    效果展示:

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    【2023双非保研】信管跨保计算机大类的记录(东南、川大、重大、东北、西电、南理工、杭高院、河海、东华、天大等)
    如何在小红书上推广护肤品?如何有效吸引用户
    客户端和服务器之间的时间同步
    springboot+企业财务发票管理系统 毕业设计-附源码231105
    docker容器无法访问解决方法
    C语言入门实战(13):十进制数转二进制
    centos7.9安装MySQL-学习
    springboot接收不到vue发送axios请求中的数据
    Oracel中视图相关概念和操作(一)
    PG数据库内核源码分析——执行计划EXPLAIN
  • 原文地址:https://blog.csdn.net/Alex_Madison/article/details/126023956