首先要搭建好springMVC框架 ,连接好数据库。
目录层级如下:
DAO :数据层 BIZ:业务层 Controller:控制层
个人习惯按照DAO-->BIZ-->Controller的顺序编写。
首先新建一个接口(interface)AdminDao ,代码如下:
package com.howin.dao;
public interface AdminDao {
//管理员登陆
public boolean login(String username,String password);
}
编写AdminDao的实现类,AdminDaoImpl,代码如下:
package com.howin.daoImpl;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.howin.dao.AdminDao;
import com.howin.pojo.Admin;
@Repository("adminDao")//(仓库)让spring扫描添加进bean
public class AdminDaoImpl extends HibernateDaoSupport implements AdminDao {
@Resource
private SessionFactory sessionFactory;
@Autowired
public void setMySessionFactory(SessionFactory sessionFactory){
super.setSessionFactory(sessionFactory);
}
@SuppressWarnings("unchecked")
@Override
@Transactional
//管理员登陆
public boolean login(String username, String password) {
List<Admin> usersList = sessionFactory.getCurrentSession().createQuery("from Admin a where a.username=:i and a.password=:p")
.setParameter("i", username).setParameter("p", password).list();
if(usersList.size()==1){
return true;
}else{
return false;
}
}
}
(pojo是实体类,hibernate同样也是面向对象的,它并不直接操作数据库,from Admin ...这里的Admin是类名,并不是表名!!!需要用hibernate逆向工程生成pojo类)
创建接口AdminBiz,代码如下:
package com.howin.biz;
public interface AdminBiz {
//管理员登陆
public boolean login(String username,String password);
}
创建AdminBiz的实现类:AdminBizImpl,代码如下:
package com.howin.bizImpl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.howin.biz.AdminBiz;
import com.howin.dao.AdminDao;
import com.howin.pojo.Admin;
@Service("adminBiz")
public class AdminBizImpl implements AdminBiz {
@Resource(name="adminDao")
AdminDao adminDao;
public void setAdminDao(AdminDao adminDao) {
this.adminDao = adminDao;
}
//管理员登陆
@Override
public boolean login(String username, String password) {
// TODO Auto-generated method stub
boolean login = adminDao.login(username, password);
if(login){
return true;
}else{
return false;
}
}
}
最后是控制层,创建AdminController ,代码如下:
package com.howin.controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.howin.biz.AdminBiz;
@Controller("adminContr")
@RequestMapping("/admin")
public class AdminController {
@Resource
AdminBiz adminBiz;
@RequestMapping("/login")
public String login(String username , String password){
System.out.println(username);
if(adminBiz.login(username, password)){
return "/success";//返回success.jsp
}else{
return "/error";//返回error.jsp
}
}
}
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>管理员登陆</title>
</head>
<body>
<form action="admin/login" method="post">
用户名:<input type="text" name="username"><br/>
<br/>
密 码: <input type="password" name="password"><br/>
<input type="submit" value="提交">
<input type="reset" value=" 重 置 ">
</form>
</body>
</html>
创建success.jsp,代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>提示页面</title>
</head>
<body>
登陆成功!
</body>
</html>
------------------------------------------------------------------------------------------------------------------------------------------------------------------
运行项目,打开浏览器输入地址:http://localhost:8080/Car/userLogin.jsp
输入用户名和密码点击登陆。
登陆成功,控制台打印hibernate语句:
Hibernate:
/*
from
Admin a
where
a.username=:i
and a.password=:p */ select
admin0_.ID as ID1_0_,
admin0_.USERNAME as USERNAME2_0_,
admin0_.PASSWORD as PASSWORD3_0_
from
OAUSER.ADMIN admin0_
where
admin0_.USERNAME=?
and admin0_.PASSWORD=?
9527
Hibernate:
/*
from
Admin a
where
a.username=:i
and a.password=:p */ select
admin0_.ID as ID1_0_,
admin0_.USERNAME as USERNAME2_0_,
admin0_.PASSWORD as PASSWORD3_0_
from
OAUSER.ADMIN admin0_
where
admin0_.USERNAME=?
and admin0_.PASSWORD=?
test
Hibernate:
/*
from
Admin a
where
a.username=:i
and a.password=:p */ select
admin0_.ID as ID1_0_,
admin0_.USERNAME as USERNAME2_0_,
admin0_.PASSWORD as PASSWORD3_0_
from
OAUSER.ADMIN admin0_
where
admin0_.USERNAME=?
and admin0_.PASSWORD=?