Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无会话工厂的身份验证登录屏幕_Java_Spring_Hibernate_Jsp_Maven - Fatal编程技术网

Java 无会话工厂的身份验证登录屏幕

Java 无会话工厂的身份验证登录屏幕,java,spring,hibernate,jsp,maven,Java,Spring,Hibernate,Jsp,Maven,我正在使用Spring、Maven和Hibernate。 我有这个带有用户名和密码的登录页面。我正在尝试验证客户端,以确保他/她使用的是来自数据库的正确用户名和密码。当用户点击submit时,页面将呈现到localhost:8080/Login/Login,并出现404错误。我希望能够在主页上呈现结果 我不确定这种形式的行动是如何运作的。下面是我的JSP的外观 <form action = "login" id="login" method="post"> Userna

我正在使用Spring、Maven和Hibernate。 我有这个带有用户名和密码的登录页面。我正在尝试验证客户端,以确保他/她使用的是来自数据库的正确用户名和密码。当用户点击submit时,页面将呈现到localhost:8080/Login/Login,并出现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层: @服务 公共类登录服务{

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;
私有SessionFactory SessionFactory;
public SessionFactory getSessionFactory(){
返回工厂;
}
public void setSessionFactory(SessionFactory SessionFactory){
this.sessionFactory=sessionFactory;
}
@交易的
公共列表getUsers(){
List userList=new ArrayList();
试一试{
userList=sessionFactory.getCurrentSession().createCriteria(tbl_login.class).list();
}捕获(例外e){
e、 printStackTrace();
}
返回用户列表;
最后,这是我的控制器: {

@控制器 公共类登录控制器

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 "/";
}
LoginService LoginService=(LoginService)ServiceLocator.getInstance()
.findService(“登录服务”);
@RequestMapping(value=“/”,method=RequestMethod.POST)
公共字符串登录(@RequestParam(value=“username”)字符串用户名,
@RequestParam(value=“password”)字符串密码,区域设置,
(模型){
List login=loginService.getUsers();
用于(tbl_登录tbl_登录:登录){
if(tbl_login.getUsername().equalsIgnoreCase(用户名)){
if(tbl_login.getPassword().equals(password)){
model.addAttribute(“用户名”,用户名);
}
}
}
返回“/”;
}

您当前的代码有一些问题:

  • 没有绑定到此URL的方法:
    /login
    (您的表单操作将转到此处) 您应该将控制器方法更改为
    @RequestMapping(value=“/login”,method=RequestMethod.POST)

  • 我建议在
    loginService
    上使用@Autowired,而不是
    “ServiceLocator.getInstance()…”

  • 我不确定sessionFactory是否会被注射(我没有看到任何涂鸦,但可能你没有发布)

  • 我建议使用
    而不是
    ,以便将来您能够利用spring的功能

  • 用户名
    应更改为
    用户名
    (还有密码-以便控制器识别它们)

  • 从这里开始,然后调试


    祝你好运!

    是的,我也是这么做的。再次感谢:DGlad的帮助!如果你觉得答案有用,请记住接受它。