通过登录行为,演示servlet如何获取从浏览器提交的账号密码
步骤1:创建login.html
在web上右键->New->File
- 文件如下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="login" method="post">
账号:<input type="text" name="name"> <br>
密码:<input type="password" name="password"> <br>
<input type="submit" value="登录">
</form>
</body>
</html>
- action="login"标题会提交到login路径,login后续映射到LoginServlet
创建LoginServlet
- form的method是post,所以LoginServlet需要提供一个doPost方法
- 在doPost方法中,通过request.getParameter取出账号和密码
- 代码如下
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String password = req.getParameter("password");
System.out.println("name:" + name);
System.out.println("password:" + password);
}
}
映射LoginServlet到路径login
- 增加新的映射,复制之前的四行
- 代码如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<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>
在页面提交数据
- 重启tomcat
- 访问
127.0.0.1/login.html
-
成功显示
问题解决
- 第一次运行,输入账号密码后,显示404
- 逐一检查文件,发现并没有错误
- 重启tomcat,问题解决