使用谷歌浏览器进行登录测试时发现,即使输入正确的用户名和密码,依旧会提示 用户密码错误
# 具体遇到的问题
使用谷歌浏览器进行登录测试时发现,即使输入正确的用户名和密码,依旧会提示 用户密码错误,并跳回登陆页面! 而使用edge、火狐、ie登录测试时不报错。
在谷歌浏览器对问题排查时发现:
(1)UserServlet的login()函数已收到正确的用户名和密码)
(2)UserDaoimp 的login()函数 也已经收到由UserServlet的login()递交的正确用户名和密码,但PreparedStatement.executeQuery返回的resultret好像没有内容,进而导致登录页面无法登录
重要说明:上述的问题只在谷歌浏览器进行登录注册测试时才出现,过于玄学,没法解决
# 报错信息的截图
# 相关课程内容截图
所有的代码都是在指导老师的视频下跟着敲的,下图是我使用的所有的jar包

个人所配置的c3p0-config.xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///shop?serverTimezone=Asia/Shanghai</property>
<property name="user">root</property>
<property name="password">346970897</property>
</default-config>
</c3p0-config>
# 尝试过的解决思路和结果
我已经在edge、ie、火狐浏览器上多次检查,可以正常登录,但是谷歌浏览器一直报错
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>欢迎使用油画商城</title>
<meta name="keywords" content="HTML5 Bootstrap 3 Admin Template UI Theme" />
<meta name="description" content="AbsoluteAdmin - A Responsive HTML5 Admin UI Framework">
<meta name="author" content="AbsoluteAdmin">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/backpage/assets/skin/default_skin/css/theme.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/backpage/assets/admin-tools/admin-forms/css/admin-forms.css">
<link rel="shortcut icon" href="${pageContext.request.contextPath }/backpage/assets/img/favicon.ico">
</head>
<body class="external-page external-alt sb-l-c sb-r-c">
<div id="main" class="animated fadeIn">
<section id="content_wrapper">
<section id="content">
<div class="admin-form theme-info mw500" id="login">
<div class="content-header">
<h1>油画商城</h1>
<p class="lead">欢迎使用油画商城自动化管理系统</p>
<font color="red" >${msg}</font>
</div>
<div class="panel mt30 mb25">
<form method="post" action="${pageContext.request.contextPath }/UserServlet" id="contact">
<input type="hidden" value="login" name="method">
<div class="panel-body bg-light p25 pb15">
<div class="section">
<label for="sn" class="field-label text-muted fs18 mb10">名称</label>
<label for="sn" class="field prepend-icon">
<input type="text" name="usrname" id="username" class="gui-input" placeholder="请输入用户名...">
<label for="sn" class="field-icon">
<i class="fa fa-user"></i>
</label>
</label>
</div>
<div class="section">
<label for="password" class="field-label text-muted fs18 mb10">密码</label>
<label for="password" class="field prepend-icon">
<input type="password" name="password" id="password" class="gui-input" placeholder="请输入密码...">
<label for="password" class="field-icon">
<i class="fa fa-lock"></i>
</label>
</label>
</div>
</div>
<div class="panel-footer clearfix text-center">
<button type="submit" class="button btn-primary mr10"> 登陆 </button>
</div>
</form>
</div>
</div>
</section>
</section>
</div>
<script src="/shop/backpage/vendor/jquery/jquery-1.11.1.min.js"></script>
<script src="/shop/backpage/vendor/jquery/jquery_ui/jquery-ui.min.js"></script>
<script src="/shop/backpage/assets/js/utility/utility.js"></script>
<script src="/shop/backpage/assets/js/demo/demo.js"></script>
<script src="/shop/backpage/assets/js/main.js"></script>
</body>
</html>UserServlet.java
package web.action;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import domain.User;
import service.UserService;
import service.impl.UserServiceimpl;
/**
* Servlet implementation class UserServlet
*/
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
try {
String method = request.getParameter("method");
if ("login".equals(method))
login(request, response);
else if("logout".equals(method))
logout(request,response);
else
response.sendRedirect(request.getContextPath()+"/backpage/login.jsp");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void logout(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
request.getSession().invalidate();
response.sendRedirect(request.getContextPath()+"/backpage/login.jsp");
}
private void login(HttpServletRequest request, HttpServletResponse response) throws Exception, IOException {
// TODO Auto-generated method stub
String username = request.getParameter("usrname");
String password = request.getParameter("password");
User user = new User();
user.setUsername(username);
user.setPassword(password);
// System.out.println(user);
UserService userservice = new UserServiceimpl();
User exitusr = userservice.login(user);
if(exitusr==null) {
request.setAttribute("msg", "用户名或密码错误");
request.getRequestDispatcher("/backpage/login.jsp").forward(request, response);
}else
{
request.getSession().setAttribute("exitusr", exitusr);
response.sendRedirect(request.getContextPath()+"/CategoryServlet?method=FindAll");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
user的登录使用了老师在视屏的面向接口
具体在数据库的查询代码如下
UserDaoimpl.java
package dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import dao.UserDao;
import domain.User;
import utils.JDBCUtils;
public class UserDaoimpl implements UserDao {
@Override
public User login(User user) {
Connection conn = null;
PreparedStatement prestat = null;
ResultSet rs = null;
try {
System.out.println("user"+user);
conn = JDBCUtils.getConnection();
String sql = "select *from user where username=? and password=?";
prestat = conn.prepareStatement(sql);
prestat.setString(1, user.getUsername());
prestat.setString(2, user.getPassword());
rs = prestat.executeQuery();
if (rs.next()) {
User exituser = new User();
exituser.setUid(rs.getInt("uid"));
exituser.setUsername(rs.getString("username"));
exituser.setPassword(rs.getString("password"));
// System.out.println(exituser);
return exituser;
}
else
System.out.println("rs 不匹配");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
JDBCUtils.release(rs, prestat, conn);
}
return null;
}
}
正在回答
同学你好,老师这边测试没有问题。当输入正确的用户名和密码时,登陆成功,当输入错误的用户名和密码时,则登陆失败。
运行效果如下:

运行结果不同可能是缓存的原因,建议同学清理一下Tomcat缓存,如下:

再清理一下浏览器缓存。
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星