1.简介
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
作用:Web 浏览器的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
简单说就是接受客户端传递的输入然后进行处理(链接数据库等)然后在将相应的结果(html等)在返回给客户端显示相当于MWC中的Ccontroller层。
Servlet程序的基本运行过程时序图:下面通过一个登陆实例来简单说明下。
2.登录实例
编写步骤:
1.建立LoginSerlvet并继承HttpServlet
2.覆盖doGet或doPost方法,编译
3.在web.xml配置文件中进行配置
4.写html登录页面并放入Tomcat中webapps中对应web项目中
5.启动《Tomcat服务器》,输入网址:http://127.0.0.1:8080/text_servlet/login.html运行程序
《apache-tomcat-5.5.26》中有对应的程序,配置好Tomcat相应的环境变量就可以运行。
LoginServlet.java
<span style="font-family:SimSun;font-size:14px;"> import javax.servlet.http.*; import javax.servlet.*; public class LoginServlet extends HttpServlet{ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.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"); response.getWriter().println("login Success!"); } }</span>
web.xml
<span style="font-family:SimSun;font-size:14px;"> <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>MyServlet</servlet-name> <!--servlet内部名称--> <servlet-class>LoginServlet</servlet-class> <!--自己编写的servlet类名称,如果有包必须写完成--> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <!--servlet内部名称--> <url-pattern>/loginServlet</url-pattern> <!--供客户端访问的名称必须以/开头--> </servlet-mapping> </web-app> </span>
login.html
<span style="font-family:SimSun;font-size:14px;"> <html> <head> <title>登录</title> </head> <body> <form action="loginServlet"> 用户:<input type="text" name="username"><br> 密码:<input type="text" name="password"><br> <input type="submit" value="登录"> </form> </body> </html></span>
运行结果图:
时序图:
对第7步:service的说明:在第6步中在对LoginService实例化后会调用调用父类HttpServlet中service方法来确定客户端进行的是dopost提交还是doget提交,然后在转到子类对应的方法。如果子类中没有对应的提交方法,会调用HttpServlet中的父类的方法。
HttpServletRequest: 包装客户端提交过来的所有数据。1.客户端的IP地址 2 .客户端的表单数据 3.Cookies信息
HttpServletResponse:包装了向客户端写出的数据。 1.将数据库信息输出 2.向客户端输出图片html等
3.servlet生命周期
生命全过程:
1.加载Servlet并实例化 new
2.初始化 init
3.处理请求 service doGet doPost
4.退出服务 destroy()
TestLifeCycleServlet实例:
import java.io.*; import javax.servlet.http.*; import javax.servlet.*; public class TestLifeCycleServlet extends HttpServlet{ //1.构造函数 public TestLifeCycleServlet(){ System.out.println("-------------TestLifeCycleServlet()----------------"); } //2.init方法 public void init(){ System.out.println("-------------init()----------------"); } //3.doGet方法 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException{ System.out.println("-------------doGet()----------------"); } //4.销毁时调用的方法 public void destroy(){ } }
输入:http://127.0.0.1:8080/text_servlet/TestLifeCycleServlet。
记得将生成的.class文件放在Tomcat相应的目录和配置对应的web.xml文件。
运行结果为:
特点:单实例多线程
TestLifeCycleServlet会在第一次使用的时候new,而且在new完该Servlet后,会调用init方法,new和init方法只一次,以后不再实例化,所以Servlet是单实例多线程的,Servlet不是线程安全的,所以一般不定义成员变量。