JavaWeb的Servlet、ServletContext

版权声明:转载请说明去处,文章仅供学习参考 https://blog.csdn.net/qq_38487155/article/details/81911306

一、Servlet是什么?他是一个处理网页请求或者提交数据的处理容器,每个Servlet是独特的,用来处理不同的网页请求方式,同

时Servlet容器内部又是单例多线程的,对多个网页的同一请求采取多线程方式快速处理,在使用时要注意线程安全问题。

二、自定义Servlet需要的步骤:

      1、自定义Servlet继承于HttpServlet,重写doGet()和doPost()

      2、在WebRoot的WEB-INF的web.xml下配置Servlet

      以下为配置格式:

<servlet>
    <servlet-name>别名(任取,但需与以下servlet-mapping的别名一致)</servlet-name>
    <servlet-class>com.firstServlet</servlet-class>    <!--(项目工程src下的类路径)-->
  </servlet>

  <servlet-mapping>
    <servlet-name>别名</servlet-name>
    <url-pattern>/firstServlet</url-pattern>	        <!--设置浏览器访问的路径-->
    <!--真正浏览器的访问路径还得在前面加上项目名即http:localhost:8080/项目名/此处路径-->
  </servlet-mapping>	

    1、 若想设置Servlet在服务器启动时就创建只需在<servlet>里添加:<load-on-startup>0</load-on-startup>即可,此处0为启动

           优先级,Servlet启动顺序按优先级从小到大依次启动(优先级必须为非负整数)。

    2、 配置Servlet初始化参数方法:

    <servlet>

    .......

     <init-param>

     <param-name>paramName</param-name>

     <param-value>paramValue</param-value>

     </init-param>

     </servlet>

三、Servlet生命周期

    init() :进行初始化工作

    service():提供服务响应请求,自动判断调用doGet或者doPost方法

    destory():Servlet被销毁的时候调用

    调用顺序:构造器->init()->service()->destory()

四、Servlet的常用方法:

    doGet(HttpServletRequest request, HttpServletResponse response):处理get请求,默认启动方

    doPost(HttpServletRequest request, HttpServletResponse response):处理post请求

    getServletConetext():获取ServletContext对象

五、ServletContext对象(上下文对象)

    服务器会为每个web项目创建一个ServletContext对象,该对象在服务器启动时创建,在服务器关闭时销毁。

    作用:进行Servlet之间的数据传递

    ServletContext对象拥有的方法:

                setAttribute(String name,Object Key):使用键值对方式存入数据对象

                getAttribute(String name):通过键名取出数据对象

                removeAttribute(String name):通过键名删除已存入的数据对象

                getAttributeNames():取出所有键名

                getInitParameter(String name):通过键名取出全局初始化参数值(ServletConfig里同样方法获得当前Servlet

                                                                     初始化参数)

         全局初始化参数配置:

    <web-app>
        <context-param>
            <param-name>cluster</param-name>
            <param-value>false</param-value>
        </context-param>
        .......
    </web-app>

               getRealPath(String path):通过文件名获取文件的绝对路径

               getResourceAsStream(String path):通过文件名获取文件的输入流对象(InputStream)

               getResource(String path):通过文件名获取文件的网址URL对象

               getResourcePaths(String path):通过文件名获取当前文件名目录下的所有资源的路径的Set集合

六、获取src路径(类路径WEB-INF\classes)下的资源:所有src下的文件都会在映射在WEB-INF\classes里

       第一种:getClass().getClassLoader().getResourceAsStream是从src路径(即classes路径)开始的,同时路径不用"/"开头

         第二种:getClass().getResourceAsStream是分俩种情况:
                                      "/"开头是从src路径(即classes路径)开始的,
                                       不用"/"开头是从当前包路径下开始的

          若想返回上级路径使用../

猜你喜欢

转载自blog.csdn.net/qq_38487155/article/details/81911306