在后端进行POST请求后端接收前端数据时,关于PrintWriter:参考地址
注意传进来的对象为空说明未在数据库查到拥有该账号的用户,所以需要告诉前端“账号密码不正确”,如果不为空说明有该用户,所以可以登录。
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String account=req.getParameter("account"); String password=req.getParameter("password"); System.out.println(account); System.out.println(password); PrintWriter printWriter=resp.getWriter(); User user= null; try { user = dao.logindao(account,password); if(user==null) { printWriter.print("账号或密码不正确!"); } else { ObjectMapper objectMapper=new ObjectMapper(); String json=objectMapper.writeValueAsString(user); printWriter.print(json); } } catch (SQLException throwables) { throwables.printStackTrace(); printWriter.print("服务器忙...请稍后重试!"); } }
最开始置对象为空,如果没有查到该用户直接返回空。
import com.mysql.cj.jdbc.Driver;import java.sql.*;public class LoginDao { public User logindao(String account, String password) throws SQLException { String sql="select * from user where account=? and password=?"; Connection connection=DButils.getConnection(); PreparedStatement preparedStatement= connection.prepareStatement(sql); preparedStatement.setObject(1,account); preparedStatement.setObject(2,password); ResultSet resultSet=preparedStatement.executeQuery(); User user=null; if(resultSet.next()) { user=new User(); String psw=resultSet.getString("password"); user.setAccount(account); user.setPassword(psw); } DButils.close(resultSet,preparedStatement,connection); return user; }}
前端代码需要注意,我们使用的是原生的servlet,前端传给后端的数据是JSON形式,后端无法识别,需要进一步对该数据进行处理才可以传给后端。
来源地址:https://blog.csdn.net/m0_71385141/article/details/133796283