验证没有会话工厂的登录屏幕

时间:2014-03-13 16:19:06

标签: java spring hibernate jsp maven

我正在使用Spring,Maven和Hibernate。 我有一个用户名和密码的登录页面。我正在尝试对客户端进行身份验证,以确保他/她使用数据库中的正确用户名和密码。当用户点击提交时,页面将呈现给localhost:8080 /登录/登录,并出现404错误。我希望能够在主页面上呈现结果。

我不确定这种表单行为是如何运作的。这是我的JSP看起来像

<form  action = "login" id="login" method="post">


    Username<input type="text" id="text" /> <br>
    Password<input type="text" id="text" /> <br>

    <input type="submit"  value="Submit" />

</form>

这是我的服务dao层: @服务 公共类LoginService {

private SessionFactory sessionFactory;

public SessionFactory getSessionFactory() {
    return sessionFactory;
}

public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}

@Transactional
public List<tbl_login> getUsers() {
    List<tbl_login> userList = new ArrayList<tbl_login>();
    try {

        userList = sessionFactory.getCurrentSession().createCriteria(tbl_login.class).list();

    } catch (Exception e){
        e.printStackTrace();
    }
    return userList;

最后,这是我的控制器: {

@Controller 公共类LoginController

LoginService loginService = (LoginService) ServiceLocator.getInstance()
        .findService("loginService");

@RequestMapping(value = "/", method = RequestMethod.POST)
public String login(@RequestParam(value = "username") String username,
        @RequestParam(value = "password") String password, Locale locale,
        Model model) {

    List<tbl_login> login = loginService.getUsers();
    for (tbl_login tbl_login : login) {
        if (tbl_login.getUsername().equalsIgnoreCase(username)) {
            if (tbl_login.getPassword().equals(password)) {
                model.addAttribute("username", username);
            }
        }
    }
    return "/";
}

1 个答案:

答案 0 :(得分:0)

您当前的代码存在一些问题:

  1. 没有绑定到此网址的方法:/login(您的表单操作就在那里) 您应该将控制器方法更改为@RequestMapping(value = "/login", method = RequestMethod.POST)

  2. 我建议在loginService之上使用@Autowired而不是"ServiceLocator.getInstance()...."

  3. 我不确定是否会注入sessionFactory(我没有看到任何anotation,但也许你没有发布)

  4. 我建议使用<form:form>代替<form>,以便将来您可以利用弹簧功能。

  5. Username<input type="text" id="text" />应更改为Username<input type="text" name="username" id="text" />(以及密码 - 以便控制器识别它们)

  6. 从这开始,然后从那里调试。

    祝你好运!

相关问题