一、简答题
1>简述servlet的生命周期
第一次访问某个servlet的时候,tomcat容器会创建servlet实例,紧接着会调用init方法进行初始化。然后执行service方法,在父类中的service方法中判断请求是get或post执行相应的doGet或doPost方法。后面再访问的时候,执行service方法,在父类中的service方法中判断请求是get或post执行相应的doGet或doPost方法。当停止服务或重新加载或将项目从tomcat中移除的时候,会执行destroy方法,释放资源,销毁servlet的实例
2>servlet中的两个init方法
带参的init方法是给tomcat调用的,最开始只有这一个方法,但是程序员有些时候也需要初始化一些信息,如果忘记super.init(config);此时tomcat就每办法初始化servlet,导致servlet无法正常访问。后面夹了一个无参的init方法,无参的给程序员用,带参的给tomcat用。就一句话,如果我们需要初始化的时候,重写无参的init方法。
3>servlet在什么时候创建,servlet是单例的吗
tomcat会在第一次访问的时候创建servlet的对象,然后调用init方法。请求过来后,执行service方法,再service方法中判断请求是get还是post调用相应的doGet或doPost方法。后面再访该servlet的时候,直接实现sevice方法。servlet是单例的。
二、编程题
model2开发模式 实现 数据展示与删除 页面使用 el+jstl实现
提交的代码 servlet代码以及 jsp代码 以及 运行结果图
EmpListServlet
package com.openlab.action;
import com.openlab.bean.Employees;
import com.openlab.dao.EmployeeDao;
import com.openlab.dao.impl.EmployeeDaoImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
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 {
}
}
EmpDelServlet
package com.openlab.action;
import com.openlab.dao.EmployeeDao;
import com.openlab.dao.impl.EmployeeDaoImpl;
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(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");
}
}
emplist.jsp
<%@ page import="java.util.List" %>
<%@ page import="com.openlab.bean.Employees" %><%--
Created by IntelliJ IDEA.
User: 11952
Date: 2022/7/27
Time: 0:54
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
<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>