关于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的多线程并发问题
注意: servlet对象在tomcat服务器是单实例多线程的。因为servlet是多线程的,所以当多个servlet的线程同时访问了servlet的共享数据,如成员变量,可能会引发线程安全问题。解决办法: 1)把使用到共享数据的代码块进行同步(使用synchronized关键字进行同步) 2)建议在servlet类中尽量不要使用成员变量。如果确实要使用成员,必须同步。而且尽量缩小同步代码块的范围。(哪里使用到了成员变量,就同步哪里!!),以避免因为同步而导致并发效率降低。 Servlet学习: HttpServletRequest 请求对象:获取请求信息 HttpServletResponse 响应对象: 设置响应对象 ServletConfig对象 servlet配置对象 ServletContext对象 servlet的上下文对象
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自身的配置参数
- 关于Servlet编程
- servlet编程
- Servlet编程
- servlet编程
- Servlet编程
- Servlet编程
- Servlet编程
- Servlet编程
- Servlet编程
- 关于Servlet
- 关于servlet
- 关于Servlet
- 关于Servlet
- 关于Servlet
- 关于servlet
- 关于Servlet
- 关于servlet
- 关于Servlet
- 关系型数据库工作原理简述
- C++ list用法
- uvalive6886 快速傅里叶变换模板
- 【LibUIDK界面库系列文章】Edit控件在不同操作系统及编译环境下的区别
- 数据结构与算法·实验五
- 关于Servlet编程
- DB数据库的事务特征
- 2017 10 03 小结
- 一些小知识点
- B树与B+树
- JAVA-枚举
- 2017/9/30 在线赛(A~E)
- 关系型数据库的原理
- python高级编程(六)--元类、内建属性