Java 无会话工厂的身份验证登录屏幕
我正在使用Spring、Maven和Hibernate。 我有这个带有用户名和密码的登录页面。我正在尝试验证客户端,以确保他/她使用的是来自数据库的正确用户名和密码。当用户点击submit时,页面将呈现到localhost:8080/Login/Login,并出现404错误。我希望能够在主页上呈现结果 我不确定这种形式的行动是如何运作的。下面是我的JSP的外观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
<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(“用户名”,用户名);
}
}
}
返回“/”;
}
您当前的代码有一些问题:
/login
(您的表单操作将转到此处)
您应该将控制器方法更改为@RequestMapping(value=“/login”,method=RequestMethod.POST)
loginService
上使用@Autowired,而不是“ServiceLocator.getInstance()…”
而不是
,以便将来您能够利用spring的功能用户名
应更改为用户名
(还有密码-以便控制器识别它们)祝你好运!是的,我也是这么做的。再次感谢:DGlad的帮助!如果你觉得答案有用,请记住接受它。