私は現在、小さなデータベースプロジェクトに取り組んで、Spring MVCで自己教育していますが、ログイン検証の最初のステップで立ち往生しています。
package Spittles.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import Spittles.services.LoginService;
import SpringForm1.model.Spittler;
public class SpittlerDao implements LoginService {
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
@Autowired
public void setDataSource(DataSource dataSource)
{
this.dataSource=dataSource;
this.jdbcTemplate=new JdbcTemplate(dataSource);
}
public Spittler checkSpittlerLogin(Spittler spittlerLogin)
{
String sql="SELECT * FROM spittler where spittler_email=? and spittler_password=?";
return jdbcTemplate.queryForObject(sql,new ParameterizedRowMapper<Spittler>(){
public Spittler mapRow(ResultSet rs,int rowNum) throws SQLException
{
Spittler spittler = new Spittler();
spittler.setSpittler_name(rs.getString("spittler_name"));
spittler.setSpittler_email(rs.getString("spittler_email"));
spittler.setSpittler_email(rs.getString("spittler_id"));
return spittler;
}
},spittlerLogin.getSpittler_email(),spittlerLogin.getSpittler_password() );
}
}
私のLoginControllerは次のとおりです。
package SpringForm1.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import Spittles.dao.SpittlerDao;
import Spittles.services.LoginService;
import SpringForm1.model.Spittler;
@Controller
public class LoginController {
@Autowired
private LoginService loginService;
@RequestMapping(value="/login.html",method=RequestMethod.GET)
public String loginPage(@ModelAttribute("loginData")Spittler spittler)
{
return "login";
}
@RequestMapping(value="/logindo.html",method=RequestMethod.POST)
public String logindo(@ModelAttribute("loginData")Spittler spittler)
{
Spittler spittlerData = loginService.checkSpittlerLogin(spittler);
if(spittlerData!=null)
{
return "home";
}
else
{
return "login";
}
}
}
今私が直面している問題は、使用時に正しい電子メールとパスワードを入力すると、希望どおりのホームページにリダイレクトされることですが、電子メールまたはパスワードのいずれかが間違っている場合は、ログインページにリダイレクトする必要がありますが、次の例外が発生します。
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
では、何が問題になるのでしょうか。私は春が初めてなので、どんな提案でも私に何か新しいことを教えてくれます。