1.Servlet定义
Java Servlet或简称Servlet是在某些Web或应用程序服务器上运行的程序。
它们充当来自Web浏览器或HTTP客户端的入站请求
与HTTP服务器上存在的应用程序或数据库之间的中间层。
2.为什么使用Servlet
场景1-冗余的JSP:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
$Title$
<%request.setAttribute("name","zhangsanfeng");%>
<%=request.getAttribute("name")%>
结果 : 123
场景2-Servlet改造JSP:
创建Servlet
(1)servlet(包名)/HelloWorldServlet(servlet名)
src下创建个servlet(包名)文件夹,然后右击Create New Servlet,
创建一个Servlet = = >HelloWorldServlet
然后在web.xml 里web-app加
(2)web.xml
HelloWorldServlet servlet.HelloWorldServlet HelloWorldServlet /HelloWorldServlet
如果有第二个servlet需要在中间创建这两个。
然后在HelloWorldServlet里面写:
没有配tomcat需要导包tomcat 的 jsp-api.jar 和 servlet-api.jar
service等价于doPost和doGet
(3)HelloWorldServlet.java
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;
public class HelloWorld2Servlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//request绑定数据
request.setAttribute("name","asdfg");
//转发
request.getRequestDispatcher("index.jsp").forward(request,response);
}
}
(4)index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
${name}
通过后台(Servlet)调用jsp
http://localhost:8080/HelloWorldServlet
结果 :asdfg
相对于之前的代码,省略了html和java混合使用。
3.Servlet的优势
专人专职:JSP负责显示,Servlet负责控制
4.创建Servlet的两种方式:
第一种方式 implements Servlet
(不用这种,用第二种,第一种了解就行)
核心要点:
Servlet生命周期:
(1)加载和实例化
(2)初始化:init() 【执行一次】
(3)服务:service() 【反复执行】
(4)销毁:destory() 【执行一次】
快捷键:alt + 回车 接口实现方法
步骤1:WorldServlet
如果没效果,把下面换成英文
public class WorldServlet implements Servlet {
//自定义
public WorldServlet(){
System.out.println("实例化。。。");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("初始化...");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("处理请求和生成响应...");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("销毁...");
}
}
步骤2:web.xml
WorldServlet servlet.WorldServlet WorldServlet /WorldServlet
结果:
1实例化。。。
2初始化…
3(服务)处理请求和生成响应…
(每刷新一次页面就会出现一次)
3(服务)处理请求和生成响应…
3(服务)处理请求和生成响应…
点击stop
4销毁…
第二种方式 extends HttpServlet(企业专用)
最上面的案例
5.总结
JSP本质上是一个Servlet,JSP适合表示层开发,Servlet适合封装控制逻辑
----2021.10.16



