登陆注册是判断用户名密码不为空的做法

在做用户注册登陆板块时,发现即使在注册表单中不填写信息,也会在数据库创建一条用户名密码都为空的数据,然后就可以实现空用户名密码登陆。这显然是不对的。

于是想到在表单提交后判断用户名密码是否至少存在一个为空的情况,若有一个为空,则请求转发到注册页面,重新输入用户名密码注册。登录时也是要先判断用户名密码是

否有为空的情况存在,只有当用户名密码都不为空时才到数据库去验证。

判断用户名密码是否为空:

String username=request.getParameter("username");
String password=request.getParameter("password");

这里得到的usernamepassword都是字符串,即使他们为空数据,也是""空字符串,并不为空,所以判断时要这样:

if(username==""||password==""){
request.setAttribute("error", "用户名或密码不能为空");
request.getRequestDispatcher("/view/login.jsp").forward(request,response);
}else{

……

}


  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一份完整的代码,可以实现你的需求: ```java import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 获取用户的注册信息 String username = request.getParameter("username"); String password = request.getParameter("password"); String email = request.getParameter("email"); try { // 建立与数据库的连接 Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password"); // 将用户信息插入到数据库中 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users(username, password, email) VALUES (?, ?, ?)"); pstmt.setString(1, username); pstmt.setString(2, password); pstmt.setString(3, email); pstmt.executeUpdate(); // 关闭连接 pstmt.close(); conn.close(); out.println("注册成功"); } catch (Exception e) { out.println("注册失败:" + e.getMessage()); } } } public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 获取用户的登录信息 String username = request.getParameter("username"); String password = request.getParameter("password"); try { // 建立与数据库的连接 Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password"); // 在数据库中查找用户 PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE username = ?"); pstmt.setString(1, username); ResultSet rs = pstmt.executeQuery(); // 如果用户名不存在,返回“用户名不存在”的提示信息 if (!rs.next()) { out.println("用户名不存在"); } else { // 如果密码不正确,返回“密码不正确”的提示信息 if (!rs.getString("password").equals(password)) { out.println("密码不正确"); } else { // 登录成功 out.println("登录成功"); } } // 关闭连接 rs.close(); pstmt.close(); conn.close(); } catch (Exception e) { out.println("登录失败:" + e.getMessage()); } } } ``` 这份代码包含了两个Servlet程序,一个是注册的Servlet,一个是登录的Servlet。在注册的Servlet中,我们建立了与数据库的连接,并且将用户信息插入到数据库中。在登录的Servlet中,我们也建立了与数据库的连接,并且在数据库中查找用户,判断用户名密码是否正确,然后分别返回不同的提示信息。 注意,这份代码中的数据库连接信息是写死在代码中的,这并不是一个好的做法。在实际开发中,我们应该将数据库连接信息写在一个配置文件中,然后在代码中读取这个配置文件,以便于在不同的环境中进行部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值