Servlet 接触很多,用的也很多,但其中的原理却不是很清楚,补补
来源:互联网 发布:量子力学 投影算符矩阵 编辑:程序博客网 时间:2024/04/30 18:13
什么是Servlet技术
Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于JAVA编程语言的WEB服务器端编程技术。一个Servlet程序就是一个实现了特殊JAVA接口的类,它由支持Servlet(具有Servlet引擎)的WEB服务器调用和启动运行。一个Servlet程序负责处理它所对应的一个或一组URL访问地址的请求,并接受客户端发出的访问请求信息和产生响应信息
Servlet,可以实现动态的页面,可以针对不同的请求作出不同的响应,可以实现页面的流转,Servlet可以充当MVC模式中的Control模块,它可以控制信息的流向。
2. Servlet作用:
获取客户端通过HTML的FORM表单传递的数据和URL后面的参数信息
创建对客户端的响应消息内容
访问服务器端的文件系统
连接数据库并开发基于数据库的应用
3. Servlet基础知识
一个Servlet就是实现类javax.servlet.Servlet接口的JAVA类,它当中定义了Servlet的生命周期,定义了Servlet引擎与Servlet程序之间通信的协议约定。javax.servlet.GenericServlet实现了Servlet接口,实现了Servlet接口的基本特征和功能,能够接受客户端发出的请求和产生响应信息。而javax.servlet.http.HttpServlet又继承了javax.servlet.GenericServlet类,所以我们编写的Servlet继承HttpServlet即可。
想要实现与客户端的交流,必须具备从客户端获取信息和把信息响应到客户端的能力,所以Servlet提供了二个关键的对象来封装这些信息。用于封装HTTP请求信息的HttpServletRequest对象,用于封装HTTP响应信息的HttpServletResponse对象。在Servlet引擎调用Servlet的Service方法时传递进来这二个参数,通过这二个对象我们就能实现与客户端的通信
4. Servlet生命周期
因为Servlet是由容器进行管理的,而每一个对象都有它的生命周期,只不过Servlet在这一点上体现的更加明显,它的生命周期是由容器控制的。Servlet的生命周期是指Servlet实例在创建之后到响应客户请求直至销毁的全过程
a.实例化Servlet对象:Servlet容器通过反射创建Servlet类的实例对象,只有当首次访问时才会创建Servlet对象,以后都会使用这个对象,这样会节省大量的内存,同时也带来的线程的安全问题
b.初始化:Servlet容器调用init()方法,通常会申请资源,通过ServletConfig接口传递信息给Servlet。在整个生命周期内只会被调用一次
c.服务: Servlet容器调用Service()方法,对客户端的请求作出响应,该方法会被调用多次。如果我们重写了Service()方法容器就会调用该方法,不会调用doGet()或者doPost()方法,如果没有重写,容器就会判断是get请求还是post请求,然后再调用相应的方法, 这些方法是运行的在多线程状态下的。
d.销毁: Servlet容器调用destory()方法,释放Servlet实例,回收所占用的资源。
5. Servlet的调用过程
a) 解析web.xml文件中配置的Servlet的名称
b) 装载类(WEB-INF/classes|WEB-INF/lib/*.jar),设计到了JAVA类装载器的问题
c) 实例化Servlet对象:Servlet ser=(Servlet)(Class.forName("servlet的类名")).newInstance();
d) 调用Servlet的service()方法: ser.service(request,response);
- Servlet 接触很多,用的也很多,但其中的原理却不是很清楚,补补
- 万能适配器,其实不是万能的,但用着会方便很多。
- 有时候,自己的梦想很多,却力不从心
- 无奈很多,前进却是必须的
- hdu 4006 The kth great number 很复杂的线段树,至少对于我来说,但也学会了很多!!!!!!!!!!
- 为什么有的人轻而易举就可以得到很多,但有的人却怎么努力也得不到?
- 但有很多的HTML5朋友
- “虽然过了很多天但也要记录一下”的“头回儿找工作”--IOS岗
- 我得到了很多,同样我也失去了很多很多,这个世界就是这样的吗?
- 【转载】也有很多的例子飞鸽传书
- python语言的数据类型也很多
- 好好看看hibernate的配置文件 很多东西并不清楚
- 建立自己的交叉编译环境(米搞定,但解决了其中出现的很多问题)
- 自己用C语言写的个模拟银行柜台机的程序!!其中也有很多吧足之处!!
- 感兴趣的很多,擅长的却没一个
- 感兴趣的很多,擅长的却没一个
- 为什么我们想法很多,付诸行动的却很少?
- 可是他却从没有想过,很多的时候
- 字符串反转-编辑距离-约瑟夫环的实现
- DFS的非递归写法
- Delphi制作数据感知控件之浮想联翩
- ASP.NET页面状态管理——ViewState的使用
- MBA VS PMP
- Servlet 接触很多,用的也很多,但其中的原理却不是很清楚,补补
- C语言中volatile关键字
- jsvm9_19中BufferParameters参数解释
- winpcap编程环境搭建:VC6.0 and VS2008
- 格式化代码快捷键
- 代码静态分析工具PC-LINT安装配置
- [外站评论RIM在中国的发展]RIM在华与中国移动合作是否会正式推出廉价版BIS服务?
- C#将对象转换为xml或json格式
- 编程修养