hibernate+servlet如何登陆注册?hibernate+servlet登陆注册实现

Hibernate 是一种 Java 语言下的对象关系映射解决方案。 它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。那hibernate+servlet如何登陆注册?下面我们就给大家讲解一下hibernate+servlet登陆注册实现。

hibernate+servlet登陆注册.jpg

1.在MySQL里面新建一个数据库,里面新建一个表,加入相应的字段,新建一个Dynamic Web Project项目,整体的框架如图所示:

hibernate+servlet如何登陆注册?hibernate+servlet登陆注册实现.png

2.LoginRegisterInfo.java里面的代码:

package com.imooc.dao;
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.imooc.entity.User;
import com.imooc.util.HibernateSessionFactory;
public class LoginRegisterInfo
{
    private Session session;
    private Transaction transaction;
    private Query query;
    private HibernateSessionFactory getSession;
    public LoginRegisterInfo()
    {}
    public String saveInfo(User user)
    {
        String mess = "error";
        getSession = new HibernateSessionFactory();
        session = HibernateSessionFactory.getSession();
        try
        {
            transaction = session.beginTransaction();
            session.save(user);
            transaction.commit();
            mess = "success";
            return mess;
        }
        catch (Exception e)
        {
            message("RegisterInfo error:" + e);
            e.printStackTrace();
            return null;
        }
    }
    public List < User > queryInfo(String type, Object value)
    {
        getSession = new HibernateSessionFactory();
        session = HibernateSessionFactory.getSession();
        try
        {
            String hqlsql = "from com.imooc.entity.User as u where u.username=?";
            query = session.createQuery(hqlsql);
            query.setParameter(0, value);
            List < User > list = query.list();
            transaction = session.beginTransaction();
            transaction.commit();
            return list;
        }
        catch (Exception e)
        {
            message("LoginRegisterInfo error:" + e);
            e.printStackTrace();
            return null;
        }
    }
    private void message(String mess)
    {
        int type = JOptionPane.YES_NO_OPTION;
        String title = "提示信息";
        JOptionPane.showMessageDialog(null, mess, title, type);
    }
}

3.User.java里面的代码:

package com.imooc.entity;
import java.io.Serializable;
public class User implements Serializable
{
    private Integer uid;
    private String username;
    private String password;
    private String nickname;
    private String email;
    private Integer state;
    private String code;
    public User()
    {}
    public User(String username, String password, String nickname, String email, Integer state, String code)
    {
        this.username = username;
        this.password = password;
        this.nickname = nickname;
        this.email = email;
        this.state = state;
        this.code = code;
    }
    public Integer getUid()
    {
        return this.uid;
    }
    public void setUid(Integer uid)
    {
        this.uid = uid;
    }
    public String getUsername()
    {
        return this.username;
    }
    public void setUsername(String username)
    {
        this.username = username;
    }
    public String getPassword()
    {
        return this.password;
    }
    public void setPassword(String password)
    {
        this.password = password;
    }
    public String getNickname()
    {
        return this.nickname;
    }
    public void setNickname(String nickname)
    {
        this.nickname = nickname;
    }
    public String getEmail()
    {
        return this.email;
    }
    public void setEmail(String email)
    {
        this.email = email;
    }
    public Integer getState()
    {
        return this.state;
    }
    public void setState(Integer state)
    {
        this.state = state;
    }
    public String getCode()
    {
        return this.code;
    }
    public void setCode(String code)
    {
        this.code = code;
    }
}

4.User.hbm.xml里面的代码:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
<class name="com.imooc.entity.User" table="user" catalog="hibernate">
<id name="uid" type="java.lang.Integer">
<column name="uid" />
<generator class="increment" />
</id>
<property name="username" type="java.lang.String">
<column name="username" length="30" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="30" />
</property>
<property name="nickname" type="java.lang.String">
<column name="nickname" length="30" />
</property>
<property name="email" type="java.lang.String">
<column name="email" length="30" />
</property>
<property name="state" type="java.lang.Integer">
<column name="state" />
</property>
<property name="code" type="java.lang.String">
<column name="code" length="50" />
</property>
</class>
</hibernate-mapping>

5.LoginServlet.java代码:

package com.imooc.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.imooc.dao.LoginRegisterInfo;
import com.imooc.entity.User;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet
{
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        doPost(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        User user = new User();
        LoginRegisterInfo info = new LoginRegisterInfo();
        if (username == null || username.length() == 0)
        {
            out.print("<script language='javascript'>alert('用户名不能为空!');" +
                "window.location.href='JSP/login.jsp';</script>");
        }
        else
        {
            List < User > list = info.queryInfo("username", username);
            for (int i = 0; i < list.size(); i++)
            {
                user = list.get(i);
                if (user.getUsername()
                    .equals(username))
                {
                    if (user.getPassword()
                        .equals(password))
                    {
                        out.print("登录成功!");
                        return;
                    }
                    else
                    {
                        out.print("<script language='javascript'>alert('密码错误!');" +
                            "window.location.href='JSP/login.jsp';</script>");
                    }
                }
            }
            out.print("<script language='javascript'>alert('用户名错误!');" +
                "window.location.href='JSP/login.jsp';</script>");
        }
    }
}

6.RegitServlet.java里面的代码;

package com.imooc.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.imooc.dao.LoginRegisterInfo;
import com.imooc.entity.User;
@WebServlet("/RegistServlet")
public class RegistServlet extends HttpServlet
{
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        doPost(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String repassword = request.getParameter("repassword");
        User user = new User();
        LoginRegisterInfo info = new LoginRegisterInfo();
        if (username == null || username.length() == 0)
        {
            out.print("<script language='javascript'>alert('用户名不能为空!');" +
                "window.location.href='JSP/regist.jsp';</script>");
        }
        else
        {
            List < User > list = info.queryInfo("username", username);
            for (int i = 0; i < list.size(); i++)
            {
                user = list.get(i);
                if (user.getUsername()
                    .equals(username))
                {
                    out.print("<script language='javascript'>alert('用户名已存在!');" +
                        "window.location.href='JSP/regist.jsp';</script>");
                }
            }
        }
        if (password == null || password.length() == 0)
        {
            out.print("<script language='javascript'>alert('密码不能为空!');" +
                "window.location.href='JSP/regist.jsp';</script>");
        }
        else if (!password.equals(repassword))
        {
            out.print("<script language='javascript'>alert('两次输入的密码不一致!');" +
                "window.location.href='JSP/regist.jsp';</script>");
        }
        user.setUsername(username);
        user.setPassword(password);
        info.saveInfo(user);
        out.print("注册成功!");
    }
}

7.HibernateSessionFactory.java里面的代码:

package com.imooc.util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
public class HibernateSessionFactory
{
    private static final ThreadLocal < Session > threadLocal = new ThreadLocal < Session > ();
    private static org.hibernate.SessionFactory sessionFactory;
    private static Configuration configuration = new Configuration();
    private static ServiceRegistry serviceRegistry;
    static
    {
        try
        {
            configuration.configure();
            serviceRegistry = new StandardServiceRegistryBuilder()
                .configure()
                .build();
            try
            {
                sessionFactory = new MetadataSources(serviceRegistry)
                    .buildMetadata()
                    .buildSessionFactory();
            }
            catch (Exception e)
            {
                StandardServiceRegistryBuilder.destroy(serviceRegistry);
                e.printStackTrace();
            }
        }
        catch (Exception e)
        {
            System.err.println("%%%% Error Creating SessionFactory %%%%");
            e.printStackTrace();
        }
    }
    public HibernateSessionFactory()
    {}
    public static Session getSession() throws HibernateException
    {
        Session session = (Session) threadLocal.get();
        if (session == null || !session.isOpen())
        {
            if (sessionFactory == null)
            {
                rebuildSessionFactory();
            }
            session = (sessionFactory != null) ? sessionFactory.openSession() : null;
            threadLocal.set(session);
        }
        return session;
    }
    public static void rebuildSessionFactory()
    {
        try
        {
            configuration.configure();
            serviceRegistry = new StandardServiceRegistryBuilder()
                .configure()
                .build();
            try
            {
                sessionFactory = new MetadataSources(serviceRegistry)
                    .buildMetadata()
                    .buildSessionFactory();
            }
            catch (Exception e)
            {
                StandardServiceRegistryBuilder.destroy(serviceRegistry);
                e.printStackTrace();
            }
        }
        catch (Exception e)
        {
            System.err.println("%%%% Error Creating SessionFactory %%%%");
            e.printStackTrace();
        }
    }
    public static void closeSession() throws HibernateException
    {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);
        if (session != null)
        {
            session.close();
        }
    }
    public static org.hibernate.SessionFactory getSessionFactory()
    {
        return sessionFactory;
    }
    public static Configuration getConfiguration()
    {
        return configuration;
    }
}

8.hibernate.cfg.xml里面的代码:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
 
<session-factory>
<property name="hbm2ddl.auto">update</property>
<property name="myeclipse.connection.profile">MySQL</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.password">root</property>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/hibernate
</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping resource="com/imooc/entity/User.hbm.xml" />
 
</session-factory>
 
</hibernate-configuration>

9.login.jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
 
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
 
<body>
<h1>登            录</h1>
<hr>
<form action="LoginServlet" method="post">
<table class="centertable">
<tr>
<td class="td1">用 户 名:</td>
<td class="td2"><input class="text1" type="text"
name="username"/></td>
</tr>
<tr>
<td class="td1">密    码:</td>
<td class="td2"><input class="text1" type="password"
name="password" /></td>
</tr>
<tr>
<td colspan="2">
<input class="button" type="submit" value="登录"  οnchange="checkpwd()"/>
<input class="button" type="button" οnclick="javascript:history.back(-1);" value="返回"/>
</td>
</tr>
</table>
</form>
</body>
</html>

10.regist.java代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
 
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
 
<body>
<h1>注            册</h1>
<hr>
<form action="RegistServlet" method="post">
<table class="centertable">
<tr>
<td class="td1">用 户 名:</td>
<td class="td2"><input class="text1" type="text"
name="username" /></td>
</tr>
<tr>
<td class="td1">密    码:</td>
<td class="td2"><input class="text1" type="password"
name="password" /></td>
</tr>
<tr>
<td class="td1">确认密码:</td>
<td class="td2"><input class="text1" type="password"
name="repassword" /></td>
</tr>
<tr>
<td colspan="2"><input class="button" type="submit" value="注册"
οnchange="checkpwd()" /> <input class="button" type="button"
οnclick="javascript:history.back(-1);" value="返回" /></td>
</tr>
</table>
</form>
</body>
</html>

在浏览器里面输入http://localhost:8080/Demo/JSP/regist.jsp运行,可以实现hibernate+servlet登录和注册功能。

好了,hibernate+servlet登录和注册功能按照以上的流程就可以实现了,Hibernate 是目前 Java 开发中最为流行的数据库持久层框架,使用它极大地缩短的手动处理 SQL 和 JDBC 上的开发时间哦!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

qt安装组件选哪几个?qt安装流程是什么?

springcloud怎么限流面试题?springcloud实现限流实操

idea怎么加图片?IDEA如何配置颜色与字体?