servlet
1.servlet 是什么?
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
2.servlet 生命周期
servlet的生命周期可别定义为从创建到毁灭的整个过程
(1)servlet 通过调用init()方法 进行初始化
init()只能被调用一次 他只在用户创建servlet时被调用 在后续每次用户请求时不再被调用
当用户第一次调用与servlet相对应的url时 系统会创建一个servlet实例 每一个用户请求都会产生一个新的线程 适当的时候会交给 doGet() doPost() 。 init()会创建加载一些简单的数据 这些数据会存活与整个servlet周期
(2)servlet 通过调用service()来处理客户端的请求
service()是执行实际任务的主要方法 servlet容器调用service() 方法来处理来自客户端的的请求 并把格式化的响应写回客户端
每次服务器收到一个servlet请求时 服务器会产生一个新的线程并调用服务 service()会检查HTTP的请求类型 根据类型的不同调用不同的方法
(3)servlet 通过调用destory()方法终止
destory()方法只会被调用一次 在servlet生命周期结束时被调用 destory()方法可以让servlet关闭数据库连接 停止后台进程并执行类似的清理活动
(4)servlet 是由jvm的垃圾回收器进行垃圾回收的
3.servlet 重定向和请求转发
概念:请求转发只是把请求转发给服务器的另一个组件中(servlet 或则是 jsp 网页)(个人理解:一个界面跳到另一个界面)
重定向 只是告诉客户 游览器 去访问另一个网页(url)这个url可能是在同一个站点内 也可能是在其他的站点
请求转发发生在服务器端 由服务器控制 重定向由客户端游览器控制
请求转发 在一个请求和一个响应中完成 重定向 在两个响应两个请求中完成
敲黑板 !!!!!划重点 !!!! 灵魂画师上线了
简单实现
业务逻辑描述 用户从login.jsp界面 输入用户名 和 密码 如果密码是123 用户名是abc 则
跳转到sucess.jsp界面 表示登陆成功 否则就跳转到error界面表示登陆失败
servlet代码
package Severlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class LoginSer extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String username = request.getParameter("username");//获取前端的用户名 String password = request.getParameter("pwd");//获取 前端的密码 if(password.equals("123")&&username.equals("abc")){ request.getRequestDispatcher("sucess.jsp"); } else { response.sendRedirect("error.jsp");//重新定向 }}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); //调用doget}}
login.jsp
web.xml
<?xml version="1.0" encoding="UTF-8"?> LoginSer Severlet.LoginSer LoginSer /LoginSer
结果展示