一、简答题
1>简述servlet的生命周期
1.加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet。
2.创建:通过调用Servlet的构造函数来创建一个Servlet实例。
3.初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已经被创建,但在向客户端提供服务之前调用。
4.处理客户请求:Servlet创建后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请求。接着调用Servlet的。
Service()方法来响应客户端请求(Service方法是根据请求的method属性来调用doGet()和doPost())。
5.卸载:容器在卸载Servlet之前需要调用destroy()方法,让Servlet释放其占用的资源
2>servlet中的两个init方法
一个是带参数的,一个是不带参数的,这两个方法都在genericservlet中定义,且带参数init会调用无参数的init方法,因此,,如果在servelt中覆盖了无参数的init方法,那么初始化的时候,带参数的init方法会调用无参数的init完成初始化的一些配置;反之如果覆盖了代餐的init,那么就不会走调用午餐init的流程,此时无参数的init方法不会被执行;
3>servlet在什么时候创建,servlet是单例的吗
1.第一次被调用(第一次处理请求)
2.Servlet本身只是一个Java,并不是单例结构,所以Servlet是不是单例最终取决于运行它的Web容器。注解加载时默认是单例的。如果一个Servlet没有被部署在分布式的环境中,一般web.xml中声明的一个Servlet只对应一个实例。如果在web.xml中声明了几次,即使同一个Servlet,如果声明多次,也会生成多个实例。
二、编程题 model2开发模式 实现 数据展示与删除 页面使用 el+jstl实现 提交的代码 servlet代码以及 jsp代码 以及 运行结果图
package JDBC.action;
import JDBC.bean.Emp;
import JDBC.dao.EmpDao;
import JDBC.dao.impl.EmpDaoImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet(urlPatterns = "/emp.do")
public class EmpServlet extends HttpServlet {
private EmpDao empDao = new EmpDaoImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<Emp> list = empDao.findAll();
req.setAttribute("list",list);
req.getRequestDispatcher("emp.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
package JDBC.action;
import JDBC.bean.Emp;
import JDBC.dao.EmpDao;
import JDBC.dao.impl.EmpDaoImpl;
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;
import java.util.List;
@WebServlet(urlPatterns = "/del.do")
public class DelServlet extends HttpServlet {
private EmpDao empDao = new EmpDaoImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getParameter("id");
empDao.delete(Integer.parseInt(id));
resp.sendRedirect("emp.do");
}
}
<c:forEach items="${list}" var="e">
<tr>
<td>${e.empid}</td>
<td>${e.empname}</td>
<td>${e.empsex}</td>
<td>${e.empaddr}</td>
<td>${e.empbirth}</td>
<td>${e.empphone}</td>
<td>${e.deptid}</td>
<td>${e.sal}</td>
<td>${e.comm}</td>
<td>
<a href="del.do?id=${e.empid}" >删除</a>
</td>
</tr>
</c:forEach>