重定向
什么时候重定向
以员工管理信息为例:
添加员工,访问SaveServlet,添加成功后,通知浏览器显示添加后的数据库中的所有数据,指定浏览器访问FindAllServlet
Servlet映射路径
精确匹配
<url-pattern>/save.do</url-pattern>
http://ip:port/appName/save.do
通配符匹配
<url-pattern>/*</url-pattern>
http://ip:port/appName/任意路径
后缀匹配
<url-pattern>*.do</url-pattern>
http://ip:port/appName/以.do结尾的任何路径
优先级:精确匹配 > 通配符匹配 > 后缀匹配
一个Servlet处理多个请求
方案一:
使用精确匹配,多个请求向Servlet中传递参数
弊端:需要传递一个没有业务意义的参数
方案二
使用后缀匹配
获取请求资源路径,并解析
String uri = request.getRequestURI();
uri.substring();
Servlet的生命周期
阶段一:实例化
容器调用Servlet的构造器,创建一个Servlet对象
实例化Servlet的时机
情景一 : 开始容器中没有Servlet对象,只有第一次收到请求后才创建Servlet对象
情景二 : 容器启动之后,立即创建Servlet的对象
Servlet作为整个应用的(核心)前端控制器
<!-- 默认级别 0、1、2 -->
<load-on-startup>2</load-on-startup>
阶段二:初始化
容器在创建Servlet之后,会立即调用init()方法。
init()方法只会执行一次。
自动创建一个ServletConfigure对象,用于封装Servlet的参数
阶段三:就绪
调用Service()方法,实现功能。每请求一次调用一次。
阶段四:销毁
容器根据自身的算法删除Servlet对象,删除前会自动调用destory()方法。
destory()方法只会被执行一次。
浏览器servlet.do —> 访问servlet
容器创建哪些对象?
Request、Response、XXXSevlet、ServletConfig
Servlet核心类
GenericServlet
HttpServlet
UserServlet extends HttpServlet
UserServlet implements Servlet
Servlet上下文
作用:
1.绑定数据,获取绑定数据
context.setAttribute()
context.getAttribute()
2.获取服务器相关数据
context.getRealPath(“file”);
获取Servlet上下文
- GenericServlet对象中的getServletContext()
- ServletConfig对象中的getServletContext()
Servlet上下文的作用
- setAttribute() 设置绑定数据
- removeAttribute() 移除绑定数据
- getAttribute() 获取绑定数据
Servlet上下文中绑定的数据可以被整个容器上的所有组件共享,并且一直可以被访问。