持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情
前言
Struts+Hibernate+Mysql的登录案例
本文是 Struts + Hibernate 的集成案例,其中使用 Struts 作为系统的整体基础架构,负责 MVC 的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持。
1、需求分析
1、在login页面输入账号密码,成功跳转成功页面,失败跳转失败页面
2、并且登录判断是从数据库查询数据比对
3、采用Dao接口开发
4、Struts负责控制业务
5、Hibernate负责对数据库操作
2、具体实现
1、目录结构
2、数据库的建库建表语句
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int NOT NULL,
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
3、实体层entity的编写,主要是实体的属性名数据库字段名一一对应,以及Get、Set方法的编写。
public class User {
private Integer id;
private String username;
private String password;
/**
* Get、Set方法
*/
}
4、hibernate的配置文件编写,主要是数据库链接的信息,端口号、数据库名字、账号、密码等。
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--使用 Hibernate 自带的连接池配置-->
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">xmpkj</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!--hibernate 方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<!--打印sql语句-->
<property name="hibernate.show_sql">true</property>
<!--格式化sql-->
<property name="hibernate.format_sql">true</property>
<!-- 加载映射文件 -->
<mapping resource="sqgxy/xmp/entity/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5、Dao接口以及实现类的编写,主要是sql查询账号密码的逻辑代码。
public interface UserDao {
public User validateUser(String username,String password);
}
public class UserDaoImp implements sqgxy.xmp.dao.UserDao {
@Override
public User validateUser(String username, String password) {
//查询 user 表中的记录
String hql="from User where username=?0 and password=?1";
Query query= (Query) HibernateSessionFactory.getSession().createQuery(hql);
query.setParameter(0, username);
query.setParameter(1, password);
List users=query.list();
Iterator it=users.iterator();
while(it.hasNext())
{
if(users.size()!=0){
User user=(User) it.next(); //创建持久化的 JavaBean 对象 user
return user;
}
}
HibernateSessionFactory.closeSession();
return null;
}
}
6、Struts.xml文件,必须放在src根目录下,负责控制业务,详细代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/default" extends="struts-default">
<action name="userDaoImp" class="sqgxy.xmp.action.LoginAction" method="execute">
<!--结果为字符串"success"时,跳转至登录成功页面-->
<result name="success">/success.jsp</result>
<!--结果为字符串"error"时,跳转至登录成功页面-->
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
7、Action的编写,主要编写了账号密码正确与否判断逻辑,其核心代码如下。
boolean validated=false;
ActionContext context=ActionContext.getContext();
Map session=context.getSession();
User user1=null;
user1=(User) session.get("user");
if(user1==null){
UserDao userDaoImp = new UserDaoImp();
user1= userDaoImp.validateUser(usr, pwd);
if(user1!=null){
session.put("user", user1);
validated=true;
}
}
8、试图JSP页面代码的编写,主要三个页面,登录页面,成功以及失败页面。
3、测试
1、数据库的账号密码
2、当账号或者密码不对时,跳转到失败页面。
3、当账号密码正确时,跳转到成功页面。
总结
以上就是今天的分享,主要分享了Struts+Hibernate的使用以及登录的案例,需要源码的私信,虽然很简单(手动狗头)。