小程序 Servlet

Servlet 是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应”模型来访问这个驻留在服务器内存里的Servlet程序。

Tomcat 容器层次

request.getContextPath()获取上下文对象

编写Servlet

  1. 继承HttpServlet
  2. 重写doGet()或者doPost()方法
  3. 在web.xml中注册Servlet 或者 注解

Servlet(Interface):三个方法init(),service(),destroy()

GenericServlet(Abstract Class):与协议无关的Servlet

HttpServlet(Abstract Class):实现了Http协议的Servlet

自定义Servlet:一般重写(覆盖)doGet与doPost方法

【实例】

index.jsp


    Get方式请求Servlet
    

HelloServlet

//使用注解则不需要配置xml
@WebServlet(name = "HelloServlet",urlPatterns = "/servlet/HelloServlet")
public class HelloServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("处理Get()请求...");
        PrintWriter out=response.getWriter();
        out.println("hello");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("处理Post()请求...");
        PrintWriter out=response.getWriter();
        out.println("hello");
    }
}

web.xml(使用注解则不需要此部分)


    HelloServlet
    servlet.HelloServlet


    HelloServlet
    /servlet/HelloServlet

生命周期

servlet生命周期阶段包括初始化、加载、实例化、服务和销毁。

  1. 初始化阶段,调用init()方法
  2. 响应客户端请求阶段,调用service()方法。由service()方法根据提交方式选择执行doGet()或者doPost()方法
  3. 终止阶段,调用destroy()方法
Servlet 生命周期

在下列时刻Servlet容器装在Servlet:

  1. Servlet容器启动时自动装在某些Servlet,实现它需要在web.xml中之间添加一下代码:,数字越小表示优先级别越高。
  2. Servlet容器启动后,客户首次向Servlet发送请求
  3. Servlet类文件被更新后,重新装载Servlet
  4. Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。

servlet 与 jsp九大内置对象

jsp对象 servlet获得
out resp.getWriter()
request service方法中的req参数
response service方法中的resp参数
session req.getSession()
application getServletContext()
exception Throwable
page this
pageContext pageContext
Config getServletConfig

Servlet的路径跳转

JSP跳转到Servlet(JSP内)

1.相对路径

href="servlet/TestServlet"

如果写成href="/servlet/TestServlet"会报错,因为第一个/表示的是服务器根目录

2.绝对路径

通过内置成员变量path实现,如href="<%=path%>/servlet/TestServlet"

path得到的是项目根目录,如http://localhost:8080/ServletDemo

Servlet跳转JSP(Servlet内)

1.请求重定向

response.sendRedirect(request.getContextPath()+"/xxx.jsp")

request.getContextPath()获得项目根目录,或者通过../xxx.jsp取得上层路径得到
2.服务器内部转发:

request.getRequestDispatcher("../xxx.jsp").forward(req,resp);
request.getRequestDispatcher("/test.jsp").forward(request, response); //斜线表示项目的根目录

小结:Servlet都可以通过../xxx.jsp获取路径

web.xml的路径(web.xml内)

web.xml的必须以/开头,/ 表示项目的根目录

Model2

Model2

你可能感兴趣的:(小程序 Servlet)