servlet是什么?
servlet 是服务器端小程序,本身不能独立运行,需要在web引用中运行。由客户端,请求,服务器调用和执行的。
根据我个人的理解也就是服务器,客户端,浏览器之间的中间层。也可以叫做缓冲层。
servlet功能(有什么用)
servlet的主要功能在于交互式的浏览和修改数据。生成动态web内容主要分为以下几个步骤:1.客户端发送请求到服务器
2.tomcat服务器将请求发送至servlet。3.servlet生成响应在将其传给服务器。响应内容动态生成,通常取决于客户端的请求
4.服务器将响应返回给客户端。
Servlet的生命周期
一.调用无参构造器创建Servlet对象,
二.使用父类HttpServlet的init方法初始化,
三.在接收来自页面的请求后,服务器调用service方法。
四.通过service方法在底层判断是调用doget还是dopost方法(常用的是这两种,总共还有7种出来了请求的方法)
五.调用destory方法,销毁servlet对象。
六.GC垃圾回收。
下图为其运行情况:servlet对象的创建和init初始化方法的调用都只会执行一次,重复请求只会执行三四步。
下图为servlet的生命周简洁图:
下面是一个通过servlet实现登陆功能的servlet执行流程
前提:部署项目,再启动Tomcat服务器
步骤 1 : 访问login.html页面
步骤 2 : 点击提交按钮,用form,把账号和密码,提交到/login这个路径,并且附带method="post"
步骤 3 : Tomcat服务器找到对应的Servlet (在web.xml文件中或者注解配置) 找不到 404 找到了就执行步骤4
步骤 4 : 是否为第1次请求,如果是第1次请求 实例化Servlet对象 Tomcat 定位到了LoginServlet后,发现并没有LoginServlet的实例存在, 于是就调用LoginServlet的public无参的构造方法LoginServlet() 实例化一个LoginServlet对象以备后续使用 不是第1次请求,则执行步骤5
步骤 5 : 先调用serivce方法,根据请求方式的不同选择调用doGet或者doPost Tomcat从上一步拿到了LoginServlet的实例之后, 根据页面login.html提交信息的时候带的method="post",去调用对应的doPost方法。
步骤 6 : request获取参数 //解决中文乱码问题 request.setCharacterEncoding("utf-8"); String 值1 = request.getParameter("name属性的值"); String 值2 = request.getParameter("name属性的值");
步骤 7 : response设置响应 PrintWriter pw = response.getWriter(); pw.println("传递给客户端的内容"); pw.flush(); pw.close();
步骤 8 : tomcat把html传递给浏览器 在Servlet完成工作之后,tomcat拿到被Servlet修改过的response, 根据这个response生成html 字符串,然后再通过HTTP协议, 这个html字符串,回发给浏览器,浏览器再根据HTTP协议获取这个html字符串, 并渲染在界面上。