J2EE之Servlet初见
来源:互联网 发布:win7怎么优化开机速度 编辑:程序博客网 时间:2024/06/05 18:15
Servlet是J2EE12种规范之一,它也是用java语言编写的程序,其本身也是一种JAVA类,在需要的时候被实例化,不需要的时候自动销毁,Servlet的运行是在Servlet容器内运行,容器负责调度Servlet,同时也控制着它的生命周期。Servlet主要目的是被用来处理来自客户端上所发出的请求,然后将处理的结果用HTML页面的形式返回,形成动态网页展示给客户端。
生命周期
加载与实例化:
由Servlet容器负责,当容器检测到需要Servlet来响应第一个请求时,创建Servlet实例,当servlet容器启动后,要必须知道这个Servlet类在哪里,Servlet可以在本地文件系统、远程文件系统或其他网络服务中。servlet一旦被成功加载,会调用默认的Servlet构造方法。
初始化:
Servlet实例被创建后,会调用Servletde init()方法来初始化这个对象,其目的在于让Servlet在处理由客户端发过来的请求之前完成一些初始化工作,比如说建立数据库的链接、获取配置信息等,这个方法只能被调用一次,也就是只会初始化一次。在这初始化期间,会从ServletConfig对象(web.xml中配置)中获取初始化信息,保存配置数据,方便以后使用。
请求处理:
init()方法成功执行后,会处理客户端的请求,在service方法中,通过ServletRequest对象得到客户端的相关信息和请求信息,对请求处理后,会调用ServletResponse对象的方法设置响应信息。请求到来时,service方法决定请求的类型get、post,并把这些请求发给对应的doget、dopost,为了响应特定类型的HTTP请求,我们就必须重载doget、dopost。
服务终止:
当容器检测到一个Servlet实例需要从服务中被移除时,容器就会调用destroy()方法,让该实例释放它所使用的资源,保存数据到持久存储。当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。释放实例,随后会被Java的垃圾收集器所回收。如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。
实例
html如下:
<html><head><title>登陆</title></head><body><form action=http://localhost:8080/test_servlet/LoginServlet">用户:<input type="text" name="username"><br>密码:<input type="password" name="password"><br><input type="submit" value="登陆"><br></form></body></html>
java类如下:
import javax.servlet.*;import java.io.*;import javax.servlet.http.*;public class LoginServlet extends HttpServlet{public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{String username=request.getParameter("username");String password=request.getParameter("password");System.out.println("username="+username);System.out.println("password="+password);response.setContentType("text/html;charset=GB18030");//response.getWriter().println("Login Success");response.getWriter().println("<html>");response.getWriter().println("<head>");response.getWriter().println("<title>登陆信息</title>");response.getWriter().println("</head>");response.getWriter().println("<body>");response.getWriter().println("欢迎【"+ username+"】用户登陆成功!");response.getWriter().println("</body>");response.getWriter().println("</html>");}}
web.xml如下:
<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping></web-app>
解析:
第一:Servlet的名字,包类
<servlet> <servlet-name>MyServlet(为servlet取的名字)</servlet-name> <servlet-class>LoginServlet(包名.类名)</servlet-class> </servlet>第二:映射、访问的地址(url)
<servlet-mapping> <servlet-name>MyServlet(与上面的servlet名字要完全一样)</servlet-name> <url-pattern><span style="font-family:Arial, Helvetica, sans-serif;">/LoginServlet</span>(Servlet访问路径)</url-pattern> </servlet-mapping>
效果如下:
优点
运行在Web服务器、Servlet容器中,可以扩展服务器的功能;
可以同其他资源交互,从而生成返回给客户端响应的内容,即动态网页;
使用JAVA编写,跨平台;
运用垃圾回收机制,避免内存回收问题。
总结
Servlet其实是运行在服务器端的小应用程序;
根据客户端请求的方式,要重写doGet和doPost方法;
要使容器正确识别Servlet,则必须填写配置web.xml;
Servlet生命周期声明包含三个方法:init()、service()、destroy();
Servlet的生命周期过程中,创建Servlet实例、调用实例的init()和destroy()方法都只进行一次,初始化完成后,Servlet容器会将该实例保存在内存中
0 0
- J2EE之Servlet初见
- J2EE之Servlet
- J2EE规范之Servlet
- J2EE之servlet.service
- J2EE之Servlet
- 简述j2ee之servlet
- J2EE开发之servlet
- J2EE之servlet
- j2ee那些事儿之servlet
- J2ee之jsp+Servlet配置
- 二、J2EE规范之 Servlet
- J2EE进阶之servlet 九
- J2EE基础之——servlet生命周期
- J2EE简介之Servlet的生命周期
- J2EE的13 规范之解读Servlet
- j2ee之servlet角色详细探讨!!!
- J2EE学习笔记(四)之Servlet原理
- J2EE --- Servlet
- threadid=1: thread exiting with uncaught exception (group=0x40e40438)
- 【转载】设计模式之美_只有链接
- 湘潭oj1203/邀请赛A题 数论+java大数
- 黑马程序员 关于枚举类型总结
- Linux date命令
- J2EE之Servlet初见
- 互联网大佬的枕边美女
- Qt学习(七) QMessageBox弹出的对话框关闭后,整个程序退出的解决方法
- 【转载】基于android的远程视频监控系统(已开放源码)_只有链接
- C#程序打包(包括数据库安装)
- JDK Class 版本识别表
- Linux free 详细说明
- 【转载】简单几步用手机打造视频监控
- Linux Top 命令解析 比较详细