0

私は現在、小さなデータベースプロジェクトに取り組んで、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

では、何が問題になるのでしょうか。私は春が初めてなので、どんな提案でも私に何か新しいことを教えてくれます。

4

2 に答える 2

1

最初に行番号を確認する必要があります。無効なログインの場合、結果セットは空になります。そのため、最初に結果セットが空かどうかを確認してから、適切な例外をスローする必要があります。

于 2013-02-12T06:55:00.267 に答える