Servlet容器对路径的处理
- 重定向: 重定向不是直接调用目标,而是告诉浏览器要访问哪个目标,然后由浏览器自己去访问它,是web中一种特殊的跳转
- res.senREdirect(“重定向地址”);
- 解决多个网站之间跳转以及同一个项目下多个功能跳转的问题
- 网络上访问的都是服务器上部署后的代码
*静态资源(HTML/CSS/JS/IMG) 直接访问 /项目名/文件名
*动态资源(Servlet) 通过气网名访问 /项目名/网名
*路径:就是资源的名字(网名),并不是指资源存储在硬盘的位置 - 获取路径
*req.getContextPath(); 项目名
*req.getServletPath(); Servlet网名
*req.getRequestURI(); URI:Servlet绝对路径
*req.getRequestURL(); URL:Servlet完整路径 - URI和URL的区别
*狭义(Java):URI 绝对路径 URL 完整路径
*广义(Java/php/.net):URI 资源的名字 URL 资源的真名 URI包含了URL - Servlet访问路径有三种配置方案,不同的方案下Servlet对请求的处理能力不同
*精确匹配 只有这个路径可访问Servlet,该Servlet只能处理这一个请求
*通配符匹配 所有的路径都可以访问该Servlet,该Servlet可以处理所有请求
*后缀匹配 所有以指定后缀为后缀的请求都可访问Servlet,该Servlet可以处理所有以指定后缀为后缀的请求 - 用一个Servlet处理多个请求
*必须先定义好规范
*根据规范来判断路径 再调用各自的方法
Servlet特性
- Servlet生命周期
*默认的首次访问Servlet时会创建并初始化它,可改为在Tomcat启动时创建并初始化它,load-on-startuo标签可以设置服务器启动时加载此Servlet的顺序
*在关闭Tomcat时销毁Servlet
*Servlet可以创建,初始化,销毁一次,但可以调用多次
*结论:某一个类型的Servlet在Tomcat下只有一个实例,称之为单例 - ServletContext,ServletConfig
1)两者区别
*context:上下文/环境,可以给处于环境内的对象提供数据
*Servletconfig:给某一个Servlet预置数据
*ServletContext:给所有Servlet预置数据
2)获得方法
*ServletConfig: getServletConfig()
在配置文件中预置数据用init-param标签,config.getInitParameter(“name”) 获取配置文件中的数据
*ServletContext:getServletContext()
在配置文件中预置数据用context-param标签,context.getInitParameter(“name”) 获取配置文件中的数据
*ServletContext特殊的应用场景:可在程序运行阶段,动态存取数据
存:context.setAttribute(“名字”,”值”); 取:context.getAttribute(“名字”);