关于Servlet编程

1.如何开发一个Servlet
1.1步骤:
1)编写Java类,继承HttpServlet类
2)重新doGet和doPost方法
3)Servlet程序交给tomcat服务器运行
<1>Servlet程序的class码拷贝到WEB-INF/classes目录
<2>在web.xml文件中进行配置

<!-- 配置servlet -->
    <servlet>
        <!-- servlet的内部名称,自定义,尽量有意义 -->
        <servlet-name>LoginServlet</servlet-name>
        <!-- servlet的类全名:包名+简单类名 -->
        <servlet-class>cn.et.servlet.lesson01.LoginServlet</servlet-class>
    </servlet>

    <!-- servlet的映射配置 -->
        <!-- servlet的内部名称,一定要和上面的内部名称保持一致 -->
        <servlet-name>LoginServlet</servlet-name>
        <!-- servlet的映射路径(访问servlet的名称) -->
        <url-pattern>/sl</url-pattern>
    </servlet-mapping>

注意:
访问时的URL:http://localhost:8080/sl/index.html
启动Tomcat服务器时,首先加载webapps中的每个web应用的web.xml配置文件
http:// 是http协议
localhost 是本地的hosts文件中查找是否存在该域名对应的IP地址(127.0.0.1)
8080 找到Tomcat服务器
/sl 资源名称:
1)在web.xml中查找是否有匹配的url-pattern的内容 (/sl)
2)找到后,用当前servlet-name的名称到web.xml文件中查询是否相同名
的servlet配置
3)如果有,则取出对应servlet配置中的servlet-class内容:cn.et.servlet.lesson01.LoginServlet
通过反射:
a)构造LoginServlet的对象
b)调用LoginServlet里的方法

2.Servlet生命周期
2.1 Servlet 的生命周期:servlet类对象什么时候创建,什么时候调用什么方法,什么时候销毁
2.2 Servlet程序的生命周期由Tomcat服务器控制

3.Servlet重要的四个生命周期
3.1 Tomcat容器自动实例化servlet实例:
永远只有一个实例,单实例,第一次访问实例化配置了>=0的任何值,表示启动时实例化,否则第一次访问时实例化
3.2 Tomcat自动调用init()方法进行简单初始化,先构造方法后调init()
3.3 service方法(请求入口方式是service方法,根据请求的类型决定调用doGet和doPost,访问一次调用一次)
3.4 destroy方法(当容器被关闭或项目被重新加载时,自动销毁servlet)
servlet生命周期图

  1. Servlet的多线程并发问题
    注意: servlet对象在tomcat服务器是单实例多线程的。

    因为servlet是多线程的,所以当多个servlet的线程同时访问了servlet的共享数据,如成员变量,可能会引发线程安全问题。
    
    解决办法:
            1)把使用到共享数据的代码块进行同步(使用synchronized关键字进行同步)
            2)建议在servlet类中尽量不要使用成员变量。如果确实要使用成员,必须同步。而且尽量缩小同步代码块的范围。(哪里使用到了成员变量,就同步哪里!!),以避免因为同步而导致并发效率降低。
    
        Servlet学习:
             HttpServletRequest  请求对象:获取请求信息
             HttpServletResponse 响应对象: 设置响应对象
             ServletConfig对象    servlet配置对象
             ServletContext对象  servlet的上下文对象
    
  2. ServletConfig对象
    5.1 作用
    ServletConfig对象: 主要是用于加载servlet的初始化参数。在一个web应用可以存在多个ServletConfig对象(一个Servlet对应一个ServletConfig对象)
    5.2 对象创建和得到
    创建时机: 在创建完servlet对象之后,在调用init方法之前创建。
    得到对象: 直接从有参数的init方法中得到!!!

        5.3 servlet的初始化参数配置
    
 <servlet>
    <servlet-name>ConfigDemo</servlet-name>
    <servlet-class>gz.itcast.f_config.ConfigDemo</servlet-class>
    <!-- 初始参数: 这些参数会在加载web应用的时候,封装到ServletConfig对象中 -->
    <init-param>
        <param-name>path</param-name>
        <param-value>e:/b.txt</param-value>
    </init-param>
  </servlet>

6.ServletContext对象(全局对象,每个项目都有自己的ServletContext对象)
功能:
1)Servlet 之间共享数据,(同一项目中).ServletContext对象能够访问初始化参数
2)获取web.xml中配置的参数:getInitParameter(“driverClass”),.ServletContext对象能够访问存储在ServletContext中的对象

<context-param>
    <param-name>dirverClass</param-name>
    <param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
  3)读取web资源:getResourceAsStream("/my.txt"),.ServletContext对象能够访问web项目中的资源文件      
  4)ServletContext对象能够访问日志

7.ServletConfig(局部):
功能:
1)用来配置初始化参数
2)使用config对象获取servlet自身的配置参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值