Servlet是J2EE12种规范之中的一个。它也是用java语言编写的程序,其本身也是一种JAVA类,在须要的时候被实例化,不须要的时候自己主动销毁,Servlet的执行是在Servlet容器内执行,容器负责调度Servlet,同一时候也控制着它的生命周期。Servlet主要目的是被用来处理来自client上所发出的请求。然后将处理的结果用HTML页面的形式返回,形成动态网页展示给client。
生命周期
载入与实例化:
初始化:
请求处理:
服务终止:
释放实例,随后会被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-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>
效果例如以下:
长处
总结
Servlet的生命周期过程中,创建Servlet实例、调用实例的init()和destroy()方法都仅仅进行一次,初始化完毕后。Servlet容器会将该实例保存在内存中