servlet学习小结

来源:互联网 发布:梦想小镇绿钞淘宝 编辑:程序博客网 时间:2024/05/20 06:24

Servlet是一个单实例,多线程的Java类
cass FirstServlet extends HttpServlet{
}
Servlet的配置
<servlet>
 <!-- servlet在访问时使用的名称 -->
 <servlet-name>FirstServlet</servlet-name>
 <servlet-class>servlet类的全路径</servlet-class>
</servlet>
<servlet-mapping>
 <!-- servlet在访问时使用的名称 -->
 <servlet-name>FirstServlet</servlet-name>
 <!-- Servlet映射的访问地址 -->
 <url-pattern>/first</url-pattern>
</servlet-mapping>
servlet在被访问时,先通过<url-pattern>映射找到对应的Servlet名称,再在Servlet中
找到与该Servlet名称完全相同的类,通过Servlet名称,获取到Servlet类 的全路径,由服务器创建
该Servlet的对象,完成请求服务。(1.在<Servlet-mapping>的url-mapping中找到到与请求匹配的
<servlet-name>,然后在<servlet>中找到对应的<servlet-name>,然后获取<servlet-class>
获取到类以后,交由服务器通过反射机制获取到该类的对象,完成服务)
Servlet的执行流程图



1.Servlet的映射规则
a).写一个确定的URL地址   /first;
b).在前面可以使用*通配符。  *.do;
c).在后面使用通配符  /* 或者是/first/*
注意;
一个sevlet的映射,要么以/开头,要么以*开头,*不能出现在中间
优先级问题:
a).长得越像的URL优先级最高,确定的URL地址优先级高于带通配符的URL地址
b).以后后缀名结尾的带*通配符的URL优先级最低
   Servlet的声明周期
   1.调用constructor
   2.调用带参数的init方法  然后调用无参数的init 方法
   以上两个方法只会被调用一次
   3.调用service方法 
     doGet()
     doPost()
     ……
     destroy:销毁servlet,在服务器关闭之前或者是应用重新加载(服务器重新启动)之前调用
     用来回收资源。
     
 ServletConfig 与ServletContext
  ServletConfig:代表一个Servlet对象的信息  通过this.getServletConfig();获取该
     对象    通常通过该对象获取Servlet的初始化参数
    
     <servlet>
      <servlet-name>ServletConfigDemo</servlet-name>
       <servlet-class>cn.test.initdemo.ServletConfigDemo</servlet-class>
      <init-param>
         <param-name>aaa</param-name>
         <param-value>value</param-value>
      </init-param>
  </servlet>
     getInitParameter("参数名");
     getInitParameterNames();
    
   ServletContext:代表整个web应用
    封装在ServletConfig对象中,随着init(ServletConfig config)方法传入Servlet
    this.getServletConfig().getServletContext();
    通常通过该对象在Servlet之间进行通信和获取web应用的初始化参数
    <web-app>
      <context-param>
        <param-name>cxt_bbb</param-name>
        <param-value>cxt_bbb_value</param-value>
     </context-param>
   </web-app>
    
     getInitParameter("参数名");
      getInitParameterNames();
      加载配置文件:
      InputStream is = context.getResourceAsStream("资源路径");
    
 在Servlet中尽量避免使用成员变量,如果要使用成员变量,需要加上同步代码块,并且尽量缩小同步的范围。
0 0
原创粉丝点击