servlet

一、Servlet

1.servlet概述

    Servlet就是一个java程序,运行在服务器端.进行创建,运用和销毁

2.编写Servlet的步骤

a、建立一个web project
b、编写一个Servlet,需要实现javax.servlet.Servlet接口
c、映射Servlet
给Servlet程序一个可以访问的URL地址。通过修改web.xml来实现

d、部署应用到Tomcat服务器

3.执行过程

4.Servlet生命周期

  • 诞生:第一次被访问,由容器创建对象的实例;并接着调用ini(ServletConfig cfg)方法进行初始化
  • 活着:应用活着它就活着。Servlet的一个实例是单例的。
  • 死亡:应用被卸载时,由容器调用destroy()方法。

Servlet接口:与Servlet生命周期有关的方法

    void init(ServletConfig cfg):初始化
    void service(ServletRequest req,ServletResponse res);   
    void destroy()

改变Servlet的初始化时机:

默认:第一次访问。<load-on-startup>-1
改为:应用被服务器加载时就完成实例化和初始化.web.xml
`<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.itheima.servlet.HelloServlet</servlet-class>
    <load-on-startup>2</load-on-startup><!--1已经被使用了,需要使用2或者2以后的数字-->
</servlet>`    

5.Servlet的线程安全

  • 尽量不要使用实例变量。应该使用局部变量。
  • 如果必须用到实例变量,请做好同步处理。

6.默认Servlet(了解)

如果一个Servlet的映射地址是一个”/”,那么这个Servlet就是默认的Servlet。
默认的Servlet用于处理在web.xml找不到映射的所有请求。

不要自己映射默认的Servlet。在Tomcat\conf\web.xml有配置。

7、Servlet映射细节

  1. 一个Servlet的实例可以被映射到多个访问的地址上
  2. servlet的映射可以使用通配符:*

    • 方式一:以*开头,以某个扩展名结尾
    • 方式二:以/开头,以*结尾(优先级高)

二、Servlet规范的核心类图

三、ServletConfig

  • 作用:针对某个Servlet程序进行参数配置。每一个Servlet都有自己的ServletConfig实例。
  • 怎么得到:在初始化Servlet时,服务器会创建ServletConfig的实例,并传递给Servlet对象。

实例: 为某个Servlet配置参数:修改web.xml

//配置web.xml
<init-param>
    <description>配置初始化参数</description>
    <param-name>encoding</param-name>
    <param-value>utf-8</param-value>
</init-param>
//读取指定的参数
ServletConfig con = getServletConfig();
    String encoding = con.getInitParameter("encoding");
    if (encoding==null) {
        encoding="utf-8";
    }
    System.out.println("当前编码:"+encoding);
//读取所有参数
    Enumeration<String>  e = con.getInitParameterNames();
    while (e.hasMoreElements()) {
        String paraName = (String)e.nextElement();
        System.out.println("参数名:"+paraName+"  参数值:"+con.getInitParameter(paraName));
    }

四、ServletContext

1. 作用:代表一个javaweb应用

2. 生命周期
  • 诞生:应用一旦被加载,服务器就会创建ServletContext的实例。
  • 活着:应用不挂,它就存在。
  • 死亡:应用挂了,他就死亡了。
3.具体应用

a、 实现Servlet之间的数据共享

概念:域(范围)对象。向ServletContext中存放的属性,存活范围就是应用范围。ServletContext叫做应用范围的域对象。

方法:

        void setAttribute(String name,Object value):向域对象中存属性
        Object getAttribute(String name):从域对象中取属性
        void removeAttribute(String name):从域对象中删除属性

b、获取WEB应用的初始化参数

  • 配置全局参数:web.xml

      <context-param>
        <param-name>encoding</param-name>
        <param-value>gbk</param-value>
      </context-param>
    <context-param>
        <param-name>aaa</param-name>
        <param-value>bbb</param-value>
    </context-param>
    
  • 获取全局参数:用ServletContext

    //获取某个参数
    ServletContext context = getServletContext();
    String paraName = context.getInitParameter("aaa");
    System.out.println(paraName);
    //获取所有参数
    Enumeration<String> paraNames = context.getInitParameterNames();
    while (paraNames.hasMoreElements()) {
        String paraName1 = (String) paraNames.nextElement();
        System.out.println("参数名:"+paraName1+"参数值:"+context.getInitParameter(paraName1));
    }
    
  • 实现Servlet的转发。

    客户端————>Demo1————>Demo2
    我找你借钱,你没钱,你找他借钱给我

  • 读取各种配置文件的方式

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值