以下只列举出主要的类文件以及struts2重要的知识类或配置,感兴趣的朋友可以留言,本人讲项目源码发过去
package www.csdn.action;
import java.util.List;
importwww.csdn.domain.Admin;
importwww.csdn.service.AdminService;
importwww.csdn.service.AdminServiceImpl;
import com.opensymphony.xwork2.ActionSupport;
public class AdminAction extendsActionSupport{
/**
*
*/
privatestatic final long serialVersionUID = -8739112121666773546L;
privateString adminName;
privateString adminPassword;
privateAdmin entity;
privateList<Admin> list;
privateint id;
privateAdminService service = new AdminServiceImpl();
publicAdmin getEntity() {
returnentity;
}
publicList<Admin> getList() {
returnlist;
}
publicvoid setId(int id) {
this.id= id;
}
publicvoid setAdminName(String adminName) {
this.adminName= adminName;
}
publicString getAdminName() {
returnadminName;
}
publicvoid setAdminPassword(String adminPassword) {
this.adminPassword= adminPassword;
}
//登录方法
publicString login(){
entity= service.login(adminName, adminPassword);
if(entity!= null){
returnSUCCESS;
}else{
returnLOGIN;
}
}
//查找所有方法
publicString list(){
list= service.getAllObjects(Admin.class);
if(list!= null){
returnSUCCESS;
}else{
returnERROR;
}
}
//删除方法
publicString delete(){
entity= service.getObjectById(Admin.class, id);
service.deleteObject(entity);
returnSUCCESS;
}
//按id查询方法
publicString find(){
entity= service.getObjectById(Admin.class, id);
returnSUCCESS;
}
//增加方法
publicString save(){
entity= new Admin(adminName, adminPassword);
service.saveObject(entity);
returnSUCCESS;
}
//更新方法
publicString update(){
entity= service.getObjectById(Admin.class, id);
entity.setAdminPassword(adminPassword);
service.updateObject(entity);
returnSUCCESS;
}
}
package www.csdn.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import www.csdn.domain.Admin;
import www.csdn.utils.BaseHibernateDao;
import www.csdn.utils.HibernateSessionFactory;
/***
*dao实现层,这里将事务的操作跟关闭session的操作放到了dao层,实际开发中的规范是应该放在事务层,
* 因为事务处理属于事务
*/
public class AdminDaoImpl extendsBaseHibernateDao implements AdminDao {
@Override
publicvoid deleteObject(Admin entity) {
Transactiontx = null;
try{
Sessionsession = getSession();
tx= session.beginTransaction();
session.delete(entity);
tx.commit();
}catch (Exception e) {
tx.rollback();
thrownew RuntimeException("删除所有错误"+e);
}finally {
HibernateSessionFactory.closeSession();
}
}
@Override
publicvoid deleteObjectById(Integer id) {
Transactiontx = null;
try{
Sessionsession = getSession();
tx= session.beginTransaction();
session.delete(id);
tx.commit();
}catch (Exception e) {
tx.rollback();
thrownew RuntimeException("根据id错误"+e);
}finally {
HibernateSessionFactory.closeSession();
}
}
@SuppressWarnings("unchecked")
@Override
publicList<Admin> getAllObjects(Class<Admin> entityClass) {
try{
returngetSession().createQuery("from Admin").list();
}catch (Exception e) {
thrownew RuntimeException("查找错误"+e);
}finally {
HibernateSessionFactory.closeSession();
}
}
/**
*
* 改方法作废,因为与getObjectById用的是同一个session,
* 实际应用中都是先查出某一个实体,然后使用getObject()方法删除
*/
@Override
publicAdmin getObjectById(Class<Admin> className, Integer id) {
try{
return(Admin) getSession().get(className, id);
}catch (Exception e) {
thrownew RuntimeException("根据id查找错误"+e);
}finally {
HibernateSessionFactory.closeSession();
}
}
@SuppressWarnings("unchecked")
@Override
publicList<Admin> getObjects(Class<Admin> clazz, int from, int size) {
try{
returngetSession().createQuery("fromAdmin").setFirstResult((from-1)*size).setMaxResults(size).list();
}catch (Exception e) {
thrownew RuntimeException("分页查询错误"+e);
}finally {
HibernateSessionFactory.closeSession();
}
}
@Override
publicvoid saveObject(Admin entity) {
Transactiontx = null;
try{
Sessionsession = getSession();
tx= session.beginTransaction();
session.save(entity);
tx.commit();
}catch (Exception e) {
tx.rollback();
thrownew RuntimeException("保存错误"+e);
}finally {
HibernateSessionFactory.closeSession();
}
}
@Override
publicvoid updateObject(Admin entity) {
Transactiontx = null;
try{
Sessionsession = getSession();
tx = session.beginTransaction();
session.update(entity);
tx.commit();
}catch (Exception e) {
tx.rollback();
thrownew RuntimeException("更新错误"+e);
}finally {
HibernateSessionFactory.closeSession();
}
}
@Override
publicAdmin login(String adminName, String adminPassword) {
try{
//这里可以用getString也可以用getParameter()方法
return(Admin) getSession().createQuery("from Admin a where a.adminName = :nameand a.adminPassword = :pass ").setString("name",adminName).setString("pass",adminPassword).uniqueResult();
}catch (Exception e) {
thrownew RuntimeException("登录错误"+e);
}finally {
HibernateSessionFactory.closeSession();
}
}
}
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//ApacheSoftware Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="test" namespace="/csdn"extends="struts-default">
<!-- 登录action-->
<action name="adminLogin"class="www.csdn.action.AdminAction"
method="login">
<!-- 这里redirectACtion相当于转发,其使用$字符带值赋给的变量需要在action类中有set和get方法 -->
<result name="success"type="redirectAction">
csdn/adminList.action?adminName=${entity.adminName}</result>
<result name="login">/index.jsp</result>
</action>
<!-- 查询所有action-->
<action name="adminList"class="www.csdn.action.AdminAction"
method="list">
<result name="success">/list.jsp</result>
</action>
<!-- 删除action-->
<action name="adminDelete"class="www.csdn.action.AdminAction"
method="delete">
<result name="success"type="redirectAction">csdn/adminList.action?adminName=${
entity.adminName }</result>
</action>
<!-- 按id查询action-->
<action name="adminFind"class="www.csdn.action.AdminAction"
method="find">
<result name="success">/find.jsp</result>
</action>
<!-- 添加action-->
<action name="adminSave"class="www.csdn.action.AdminAction"
method="save">
<result name="success"type="redirectAction">csdn/adminList.action?adminName=${
entity.adminName }</result>
</action>
<!-- 更新action-->
<action name="adminUpdate"class="www.csdn.action.AdminAction"
method="update">
<result name="success"type="redirectAction">csdn/adminList.action?adminName=${
entity.adminName }</result>
</action>
</package>
</struts>
package www.csdn.service;
import java.util.List;
importwww.csdn.dao.AdminDao;
importwww.csdn.dao.AdminDaoImpl;
importwww.csdn.domain.Admin;
public class AdminServiceImpl implementsAdminService {
AdminDaoadminDao = new AdminDaoImpl();
@Override
publicAdmin login(String adminName, String adminPassword) {
returnadminDao.login(adminName,adminPassword);
}
@Override
publicvoid deleteObject(Admin entity) {
adminDao.deleteObject(entity);
}
@Override
publicvoid deleteObjectById(Integer id) {
adminDao.deleteObjectById(id);
}
@Override
publicList<Admin> getAllObjects(Class<Admin> entityClass) {
returnadminDao.getAllObjects(entityClass);
}
@Override
publicAdmin getObjectById(Class<Admin> className, Integer id) {
returnadminDao.getObjectById(className, id);
}
@Override
publicList<Admin> getObjects(Class<Admin> clazz, int from, int size) {
returnadminDao.getObjects(clazz, from, size);
}
@Override
publicvoid saveObject(Admin entity) {
adminDao.saveObject(entity);
}
@Override
publicvoid updateObject(Admin entity) {
adminDao.updateObject(entity);
}
}
struts2.X心得4--struts2与hibernate连接数据库案例分析
最新推荐文章于 2020-04-26 10:16:37 发布