获取浏览器提交的参数
通过一个登录功能,学习 Servlet 如何获取从浏览器提交的账号密码。
创建 login.html
在 web 上右键 -> New -> File
,创建一个 login.html
文件,然后添加一个 form
表单元素。
action="login"
标题会提交到login
路径,login
路径会映射到LoginServlet
method="post"
,post 方式提交的密码信息不会在浏览器地址栏显示
账号和密码使用 input
元素.在 Servlet 端为了区分账号和密码,要给这两个 input
元素的 name
属性分别叫做 username
和 password
。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>登录页面</title>
</head>
<body>
<form action="login" method="post">
账号: <input type="text" name="username" /> <br />
密码: <input type="password" name="password" /> <br />
<input type="submit" value="登录" />
</form>
</body>
</html>
创建 LoginServlet
同 HelloServlet
操作一样创建一个 LoginServlet
。
浏览器中的 form
的 method
是 post
,LoginServlet
需要提供一个 doPost
方法。
在 doPost
方法中,通过 request.getParameter
根据 name
取出对应的账号和密码。然后用 System.out.println()
打印在控制台,这里并没有在网页上输出。
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 {
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);
}
}
映射 LoginServlet 到路径 “/login”
在 web.xml 中新增映射。
<?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,然后访问页面 http://127.0.0.1/xxx/login.html
。输入账号密码,点击提交,然后在 Tomcat 的控制台窗口,就可以看到提交的账号和密码。
如果要在浏览器上要看到 Tomcat 的反馈数据,需要通过响应来实现。