流程图大致如下:
首先在web目录下新建一个login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Servlet-login</title>
</head>
<style>
.login{
width: 100%;
text-align: center;
}
</style>
<body>
<div class="login">
<form action="login" method="post">
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submit" value="login">
</form>
</div>
</body>
</html>
这个时候访问http://localhost:8080/javaweb/login.html
为啥还有个javaweb呢,这个是可以自定义的,上篇文章已经讲过,在下图可以配置
在login.html中,用form,把账号和密码,提交到/login这个路径,并且附带method="post"
tomcat接受到一个新的请求:http://localhost:8080/javaweb/login
新建LoginServlet
在src下新建一个LoginServlet
找到对应的Servlet
这个路径是/login,接着就到配置文件web.xml进行匹配,发现/login,对应的Servlet类是 LoginServlet。接下来的工作,就会基于这个LoginServlet进行。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
有两点要注意:
1、servlet-name必须一致,叫什么无所谓
2、servlet-class必须和你的LoginServlet类名一致
实例化Servlet对象
Tomcat 定位到了LoginServlet后,发现并没有LoginServlet的实例存在,于是就调用LoginServlet的public无参的构造方法LoginServlet()实例化一个LoginServlet对象以备后续使用
调用doGet或者doPost
LoginServlet的代码如下
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 LoginServlet extends HttpServlet {
protected void doPost(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);
String html = null;
if ("admin".equals(username) && "123".equals(password))
html = "<div style='color:green'>success</div>";
else
html = "<div style='color:red'>fail</div>";
PrintWriter pw = response.getWriter();
pw.println(html);
}
}
Tomcat从上一步拿到了LoginServlet的实例之后,根据页面login.html提交信息的时候带的method="post",去调用对应的doPost方法。
在这个方法中,通过参数request,把页面上传递来的账号和密码信息取出来
response设置响应
接着,根据账号和密码是否正确(判断是否是admin和123), 创建不同的html字符串。
然后把html字符串通过如下方式,设置在了response对象上。