文章目录
Servlet 调用流程
login.html -> /login -> web.xml -> LoginServlet -> 实例化 -> doGet doPost -> request response -> 返回 html
login.html
首先访问 http://127.0.0.1/xxx/login.html
,打开一个静态的 html 页面,在这个页面中可以通过 form
,以 post
的形式提交数据。
/login路径
在上一步的 login.html
中,用 form
,把账号和密码,提交到 /login
这个路径,并且附带 method="post"
。
找到对应的 Servlet
Tomcat 接受到一个新的请求:http://127.0.0.1/login
,其路径是 /login
,接着就到配置文件 web.xml 进行匹配,发现 /login
,对应的 Servlet 类是 LoginServlet
。接下来的工作,就会基于这个 LoginServlet
进行。
实例化 Servlet 对象
Tomcat 定位到了 LoginServlet
后,发现并没有 LoginServlet
的实例存在,于是就调用 LoginServlet
的无参构造方法 LoginServlet()
实例化一个 LoginServlet
对象以备后续使用。
调用 doGet 或者 doPost
Tomcat 从上一步拿到了 LoginServlet
的实例之后,根据页面 login.html
提交信息的时候带的 method="post"
,去调用对应的 doPost
方法。
request获取参数
接着流程进入了 doPost
方法中。在这个方法中,通过参数 request
,把页面上传递来的账号和密码信息取出来
response设置响应
根据账号和密码是否正确,创建不同的 html
字符串。然后通过 PrintWriter 对象把 html
字符串设置在 response
对象上。到这里,Servlet 的工作就做完了。
Tomcat 把 html 传递给浏览器
在 Servlet 完成工作之后,Tomcat 拿到被 Servlet 修改过的 response
,根据这个 response
生成 html
字符串,然后再通过 HTTP 协议,把这个 html
字符串,回发给浏览器。浏览器再根据 HTTP 协议获取这个 html
字符串,并渲染在界面上。这样在浏览器上就可以看到 Servlet 中生成的字符串。