问题非常低级。。但是就是这么低级的问题耗费了我整整一天的时间。
login.jsp中的<form>表格元素当时敲代码敲快了,收尾的</form>元素直接放在了第一段代码,后面的代码段都没有包裹在form元素中,导致返回值为null。
//loginServlet
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
public class loginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
String username= req.getParameter("username");
String password= req.getParameter("password");
System.out.println("name:"+username);
System.out.println("password:"+password);
}
}
//login.jsp
<% String path=request.getContextPath();%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form method="get" id="form" action="<%=path%>/loginServlet"></form>
<p>用户名</p><input type="text" id="username" name="username" placeholder="请输入用户名">
<p>密码</p><input type="text" id="password" name="password" placeholder="请输入密码">
<button type="button" name="loginbutton" onclick="loginVerify()" value="提交">登陆</button>
</body>
</html>
<script>
function loginVerify(){
var username =document.getElementById("username").value;
var password =document.getElementById("password").value;
if(username==''){
alert("用户名不能为空,请重新输入!");
return;
}
if(password==""){
alert("密码不能为空,请重新输入!");
return;
}
//调用后端servlet,并将数据进行传递
document.getElementById("form").submit();
}
</script>
//web.xml
<?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">
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>loginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
</web-app>
代码如上,试过了网上很多方法,但是依旧后台输出为null,有设置name