- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到一个错误
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
at org.springframework.dao.support.DataAccessUtils.nullableSingleResult(DataAccessUtils.java:97)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:236)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:244)
at com.regularbbs.bbs.dao.UserDao.findUserByIdAndPw(UserDao.java:38)
at com.regularbbs.bbs.service.impl.UserServiceImpl.login(UserServiceImpl.java:20)
我认为它没有将我的参数传递给 MySQL 数据库。当我测试时,我发现我的参数被传递到DAO文件中。但它正好陷入困境。当我在DAO文件中的findUserByIdAndPw方法中打印 map 时,它很好地打印了 map 中的参数。
我认为 jdbc.queryForObject(GET_USER, map, rowMapper);
是错误的,但我不知道,请帮助我。
package com.regularbbs.bbs.dao;
public class UserSqls {
public static final String GET_USER = "SELECT * from user WHERE userId=':userId' AND password=':password'";
}
'''
Jsp 文件:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="<c:url value='/css/main.css' />" >
<script
src="https://code.jquery.com/jquery-3.4.1.js"
integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
crossorigin="anonymous"></script>
</head>
<body>
<jsp:include page="header.jsp" flush="false"></jsp:include>
<c:if test="${sessionScope.login ==null }">
<form name="login">
<section id="loginSection">
아이디 : <input type="text" id="userId" placeholder="아이디">
패스워드 : <input type="password" id="userPwd" placeholder="패스워드">
<button type="button" id="btnLogin">로그인</button>
<button type="button" onclick="getSignUpPage()">회원가입</button>
</section>
</form>
</c:if>
</body>
<script type="text/javascript">
function getSignUpPage() {
location.href="signUp";
}
$(document).ready(function() {
$("#btnLogin").click(function() {
var userId = $("#userId").val();
var userPwd = $("#userPwd").val();
var allData = JSON.stringify({"userId": userId, "password": userPwd});
if(userId == "") {
$("#userId").focus();
return;
}
if(userPwd == "") {
$("#userPwd").focus();
return;
}
$.ajax({
type: "POST",
url: "member/login",
data: allData,
processData: false,
contentType: "application/json;charset=UTF-8",
error: function (e) {
console.log("error : ", e);
}
})
})
});
</script>
</html>
UserDao 类:
package com.regularbbs.bbs.dao;
import static com.regularbbs.bbs.dao.UserSqls.GET_USER;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;
import com.regularbbs.bbs.dto.User;
@Repository
public class UserDao {
private NamedParameterJdbcTemplate jdbc;
private RowMapper<User> rowMapper = BeanPropertyRowMapper.newInstance(User.class);
@Autowired
public void setDataSource(DataSource dataSource) {
jdbc = new NamedParameterJdbcTemplate(dataSource);
}
public User findUserByIdAndPw(String id, String pw) {
try {
System.out.println(id +":"+ pw);
Map<String, String> map = new HashMap<>();
map.put("userId", id);
map.put("password", pw);
System.out.println(map);
return jdbc.queryForObject(GET_USER, map, rowMapper);
}catch(Exception e) {
e.printStackTrace();
return null;
}
}
}
服务:
package com.regularbbs.bbs.service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.regularbbs.bbs.dto.User;
public interface UserService {
public User login(String userId, String password) throws Exception;
}
package com.regularbbs.bbs.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.regularbbs.bbs.dao.UserDao;
import com.regularbbs.bbs.dto.User;
import com.regularbbs.bbs.service.UserService;
@Service
public class UserServiceImpl implements UserService{
@Autowired
UserDao userDao;
@Override
@Transactional
public User login(String userId, String password) throws Exception{
return userDao.findUserByIdAndPw(userId, password);
}
}
Controller :
package com.regularbbs.bbs.controller;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.regularbbs.bbs.dto.User;
import com.regularbbs.bbs.service.UserService;
@Controller
public class LoginController {
@Autowired
UserService userService;
@RequestMapping(value="/member/login", method=RequestMethod.POST)
public String loginPost(@RequestBody Map<String, String> data
, Model model, HttpSession session) throws Exception {
System.out.println(data.get("userId") + ": " + data.get("password"));
User loginUser = userService.login(data.get("userId"), data.get("password"));
if(loginUser!=null) {
session.setAttribute("login", loginUser);
return "redirect:/";
}else {
return "redirect:/";
}
}
}
最佳答案
JDBCTemplate
的 queryForObject
应该返回单个唯一记录。否则,它将抛出:
In CorrectResultSizeDataAccessException
如果 SQL 返回大于 1记录EmptyResultDataAccessException
如果 SQL 返回无记录通常您可以捕获此异常并将其转换为对您的应用程序有意义的异常消息。将异常重新抛出回 Controller ,以便 Spring MVC 可以处理此异常。例如:
public User findUserByIdAndPw(String id, String pw) {
try {
System.out.println(id +":"+ pw);
Map<String, String> map = new HashMap<>();
map.put("userId", id);
map.put("password", pw);
System.out.println(map);
return jdbc.queryForObject(GET_USER, map, rowMapper);
}catch(EmptyResultDataAccessException e) {
throw new RuntimeException("User ID does not exist");
}catch(IncorrectResultSizeDataAccessException e) {
throw new RuntimeException("More than one users with the same Id .......");
}
}
关于java - 如何修复 'org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57541459/
刚开始处理Maven和Spring。当我尝试创建DAO和ResultSet然后运行应用程序时,抛出errors: Error:(4, 31) java: package org.springframe
问题: Error:(15, 10) java: cannot find symbol symbol: class SpringRunner Error:(16, 2) java: cannot
我正在尝试构建这个 RESTful 服务示例:https://spring.io/guides/gs/rest-service/GreetingController.java 的导入没有错误: pac
如果我尝试向构造函数注入(inject) Facebook 参数,我将尝试使用 facebook api 使用 spring + thymeleaf + hibernate 创建 Facebook 应
如何解决Spring中Bean的自动连接歧义?我们有一个 Dessert 接口(interface),并且有实现该接口(interface)(Dessert)的三种不同的甜点(Bean)。 今天的甜点
请问为什么我的 pom.xml 文件中会出现此错误 Missing artifact org.springframework:spring-context:jar:${org.springframew
让 gradle 构建正常工作( from a previous question related to this one ),安迪·威尔金森(Andy Wilkinson)为我回答,没有问题。正在为
我正在 tomcat 7 中开发网站(spring 3.1.1),但出现错误 ERROR: org.springframework.web.context.ContextLoader - Contex
我在将航类信息保存到 mysql 数据库时遇到错误。请帮助我下面是我的代码: 我已经尝试了所有方法,添加模式和这么多 它不会从字符串转换为日期 控制台日志 2020-05-12 13:19:21.04
我使用intellij创建了一个小型java应用程序,后来我使用“添加框架支持”选项将该项目更新为Maven项目。当我厌倦了在项目上添加 spring jar 文件时,出现以下错误:“没有为 org.
我尝试使用 org.springframework.data.mongodb.core.MongoOperations 从 mongo 集合中查询记录。我在 CompanyTemplRepoImpl
我尝试将 Spring4 与 Hibernate5 一起使用,但出现此错误: org.springframework.orm.jpa.EntityManagerHolder cannot be cas
我是这个论坛的新手。我正在尝试使用 spring 3.2.6 和 tomcat 7.0 制作一个应用程序。我已将所有必需的 jar 添加到 WEB-INF/lib 文件夹中。 DispatcherSe
我在 maven 架构中使用 Spring 框架 4.0.1.RELEASE、OAuth Security 2.0.7.RELEASE,当我编译代码时,出现以下错误。 SEVERE: Exceptio
我正在使用以下指令开发 CRUD Web 应用程序: https://www.javaguides.net/2019/02/spring-boot-2-angular-7-crud-example-t
这个问题已经有答案了: what is the difference in org.springframework.web.servlet.ModelAndView vs org.springfram
我正在尝试将 hibernate 与 spring boot 一起使用。但我收到此错误:org.springframework.orm.jpa.EntityManagerHolder 无法转换为 or
我尝试创建简单的用户登录和注册页面。但我无法使用服务方法创建用户。我有创建新用户的服务。 @Service public class LocalUserDetailsService implement
我用 STS、Roo 和 GWT 创建了一个新项目,并尝试包含 Spring Security。 从那时起,我收到以下错误。有没有人知道出了什么问题?! org.springframework.bea
这些是我正在使用的版本和依赖项 我怀疑版本需要更改但更改为什么,我不确定 springCore : '5.3.3', springjdbc
我是一名优秀的程序员,十分优秀!