使用谷歌浏览器进行登录测试时发现,即使输入正确的用户名和密码,依旧会提示 用户密码错误

使用谷歌浏览器进行登录测试时发现,即使输入正确的用户名和密码,依旧会提示 用户密码错误

# 具体遇到的问题
使用谷歌浏览器进行登录测试时发现,即使输入正确的用户名和密码,依旧会提示 用户密码错误,并跳回登陆页面!    而使用edge、火狐、ie登录测试时不报错。

在谷歌浏览器对问题排查时发现:

(1)UserServlet的login()函数已收到正确的用户名和密码)

(2)UserDaoimp 的login()函数 也已经收到由UserServlet的login()递交的正确用户名和密码,但PreparedStatement.executeQuery返回的resultret好像没有内容,进而导致登录页面无法登录

重要说明:上述的问题只在谷歌浏览器进行登录注册测试时才出现,过于玄学,没法解决

# 报错信息的截图
http://img1.sycdn.imooc.com//climg/5fabaafb09139d3c09730787.jpg

# 相关课程内容截图

所有的代码都是在指导老师的视频下跟着敲的,下图是我使用的所有的jar包

http://img1.sycdn.imooc.com//climg/5fabab670954e56103930275.jpg

个人所配置的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;
}

}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,老师这边测试没有问题。当输入正确的用户名和密码时,登陆成功,当输入错误的用户名和密码时,则登陆失败。

运行效果如下:

http://img1.sycdn.imooc.com//climg/5fabbeec09e2cd8b09240495.jpg

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

http://img1.sycdn.imooc.com//climg/5fabbe110908c0bc05190372.jpg

再清理一下浏览器缓存。

  • 我还差得多 提问者 #1
    我清理缓存后,使用谷歌浏览器依旧无法登录
    2020-11-11 20:30:50
  • 同学你好,可能是谷歌浏览器的原因,同学代码是没有问题的。建议同学使用火狐浏览器访问。 祝学习愉快~
    2020-11-12 09:39:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师