Servlet、ServletConfig和ServletContext

来源:互联网 发布:周泓旭 知乎 编辑:程序博客网 时间:2024/05/22 15:33

一.Servlet访问路径

<servlet>    <servlet-name>MyServlet</servlet-name>    <servlet-class>com.xxx.MyServlet</servlet-class></servlet><servlet>    <servlet-name>invoker</servlet-name>    <servlet-class>com.xxx.InvokerServlet</servlet-class>    <load-on-startup>1</load-on-startup>随服务器启动而加载,其中数值指定启动顺序</servlet><servlet-mapping>    <servlet-name>MyServlet</servlet-name>    <url-pattern>/MyServlet</url-pattern>浏览器的访问路径,可以有多个<servlet-mapping></servlet-mapping>  <url-pattern>/</url-pattern>是默认servlet,其它访问路径无servlet处理,都由它来处理!在tomcat/conf/web.xml配置了DefaultServlet,对静态资源访问以及错误页面输出,都由DefaultServlet处理!在WEB-INF/web.xml写默认servlet会覆盖tomcat的DefaultServlet,导致静态资源无法访问!          

二.ServletConfig

配置serlet类的参数(其他servlet类不能访问)在web.xml配置参数    <servlet>        <servlet-name>MyServlet</servlet-name>        <servlet-class>com.xx.MyServlet</servlet-class>        <init-param>            <param-name>data1</param-name>            <param-value>value1</param-value>        </init-param>    </servlet>在MyServlet.java获取参数    getServletConfig().getInitParameter();    getServletConfig().getInitParameterNames();    

三.ServletContext

1.作用

一个ServletContext对应于整个web应用,作为域对象在整个web应用范围内共享数据作用域:整个web应用生存期:当web应用加载到web容器时创建ServletContext,当web应用被移出web容器时销毁ServletContext

2.Attribute

在不同servlet间传递键值对数据getServletContext().setAttribute(name, object);getServletContext().getAttribute(name);getServletContext().removeAttribute(name);

3.配置整个web应用的参数

在web.xml配置参数    <context-param>        <param-name>user</param-name>        <param-value>password</param-value>    </context-param>在MyServlet.java获取参数    getServletContext().getInitParameter("user");    getServletContext().getInitParameterNames();

4.servlet转发

this.getServletContext().getRequestDispatcher("/OtherServlet").forward(request, response);servlet转发: 一次Http请求,一次Http响应Http重定向: 302+Location, 两次Http请求, 两次Http响应

5.文件路径

相对路径是相对java虚拟机启动目录,绝对路径固定不灵活在servlet下getServletContext().getRealPath("")当前运行网站的资源路径。getServletContext().getResourceAsStream("")当前运行网站的资源流。在非servlet下用类加载器getClassLoader.getResource("../xx").getPath()默认从class包根目录开始,..表示class包的根目录的上一级文件getClass().getResource("xx").getPath()默认从class类所在的目录开始

GitHub博客:http://lioil.win/2017/01/19/Servlet.html
Coding博客:http://c.lioil.win/2017/01/19/Servlet.html

0 0
原创粉丝点击