JavaEE(02)servlet

90 阅读2分钟

Servlet的工作模式

  • 客户端发送请求至服务器
  • 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
  • 服务器将响应返回客户端

Servlet API 概览

Servlet API 包含以下4个Java包:

1.javax.servlet 其中包含定义servlet和servlet容器之间的类和接口。

2.javax.servlet.http 其中包含定义HTTP Servlet 和Servlet容器之间的关系。

3.javax.servlet.annotation 其中包含标注servlet,Filter,Listener的标注。它还为被标注元件定义元数据。

4.javax.servlet.descriptor,其中包含提供程序化登录Web应用程序的配置信息的类型。

配置servlet一共有两种方式,一种是使用web.xml文件配置,另外一种就是使用注解配置

  • 使用web.xml文件配置 ,servlet的配置内容要写在webapp内部
  • 注解配置 @WebServlet("/login")

Servlet的生命周期

一般来讲,servlet只会初始化一次,也就是整个过程中只存在一个servlet对象,即便是有多次访问,依然只有一个对象,这个对象是可以复用的.我想你一定会好奇这个servlet究竟是在什么时候创建的,所以就来讲一下servlet的生命周期,所谓的生命周期我们在java基础知识中一定也了解过,就是servlet类究竟在什么时候创建,调用了何种方法,最后在什么时候被销毁.我们之前学过的对象都是自己手动创建,最后由JVM来销毁的,而servlet的整个生命周期,都是由tomacat,也就是服务器控制的

servlet共有三个关键的方法,分别是init(),service(),destroy().

init方法只会调用一次,只是在创建servlet实例的时候才会创建

service方法,是进行数据处理的,只要接受了一次请求,就会被调用一次

destroy方法,销毁servlet对象的时候调用。停止服务器或者重新部署web应用时销毁servlet对象,同样也是调用一次

转发

@request.getRequestDispatcher("/brand.jsp").forward(request, response);

重定向

@response.sendRedirect("/brand.jsp");

转发和重定向的区别

虽然二者最终实现的功能是相同的.但是还是有很大不同的.不同之处如下

  • 地址栏变化 转发不会改变地址栏中的URL,而重定向则会改变
  • 跳转范围 转发只能访问到当前web应用中的内容,而重定向则可以访问到任意web应用中的内容
  • request对象作用范围 转发后,在转发后的页面中仍然可以使用原来的request对象,而重定向,原来的request对象则失去作用. 所以,如果想要在多个页面使用相同的request对象,那么只能使用转发,而不能使用重定向.