关于Servlet编程

来源:互联网 发布:冒泡排序java从小到大 编辑:程序博客网 时间:2024/06/14 15:12

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自身的配置参数

原创粉丝点击