struts2+Hibernate实现用户登陆功能

实现的功能,在登陆页面输入Username和PassWord后,将username和password通过Hibernate匹对数据库是否含有一样的username和password,若有则登陆进去,若没有则返回到登陆页面

显示层

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
    <form action="userlogin">
          用户名:<input type="text" name="username"><br/>
          密码:<input type="password" name="password"><br/>
        <input type="submit" value="submit">
        <input type="reset" value="reset">
    </form>
</body>
</html>

model层

User

package com.zs.model;

public class User {
    private String username;
    private String password;
    private Short sex;
    private String email;
    private String address;
    private String grade;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Short getSex() {
        return sex;
    }

    public void setSex(Short sex) {
        this.sex = sex;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }
}

User.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2014-12-14 14:51:48 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.zs.model.User" table="USER">
        <id name="username" type="java.lang.String">
            <column name="USERNAME" />
            <generator class="assigned" />
        </id>
        <property name="password" type="java.lang.String">
            <column name="PASSWORD" />
        </property>
        <property name="sex" type="java.lang.Short">
            <column name="SEX" />
        </property>
        <property name="email" type="java.lang.String">
            <column name="EMAIL" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" />
        </property>
        <property name="grade" type="java.lang.String">
            <column name="GRADE" />
        </property>
    </class>
</hibernate-mapping>

Hibernate:

配置hibernate.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
         <!--连接数据库的配置-->
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql:///hibernate</property>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <property name="show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--数据库映射Java用户-->
        <mapping resource="com/zs/model/User.hbm.xml" />
    </session-factory>
</hibernate-configuration>

Struts:

<?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" extends="struts-default">
        <!--登陆主页面时候的Action-->
        <action name="index">
            <result>/index.jsp</result>
        </action>
        <!--在index.jsp提交submit后若登陆成功则转到adminlogin,否则转到index-->
        <action name="userlogin" class="com.zs.web.admin.AdminLoginAction">
            <result name="success">/admin/adminlogin.jsp</result>
            <result name="input">/index.jsp</result>
        </action>
    </package>

</struts>

Action:

package com.zs.web.admin;

import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;
import com.zs.dao.UserDao;
import com.zs.dao.impl.UserDaoImpl;
import com.zs.model.User;

public class AdminLoginAction extends ActionSupport implements SessionAware {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    UserDao dao = new UserDaoImpl();
    private String username;
    private String password;
    private Map<String,Object> session;

    public String execute(){
            User user = dao.isValidAdmin(username, password);//将username和password传递到dao层交个hibernate判断
            if(user!=null){
                session.put("user", user);//若登陆成功则将该user记录在session中
                return SUCCESS;
            }else{
                addActionError("你没有管理权限");
                return INPUT;
            }
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Map getSession() {
        return session;
    }

    public void setSession(Map session) {
        this.session = session;
    }

}

判断用户和密码是否存在于数据库中

package com.zs.dao.impl;

import java.util.List;

import com.zs.dao.BaseDaoImpl;
import com.zs.dao.UserDao;
import com.zs.model.User;

public class UserDaoImpl extends BaseDaoImpl implements UserDao {

    @Override
    public void saveUser(User user) {
        // TODO Auto-generated method stub

    }

    @Override
    public List<User> getAll(Class clazz) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public User isValidUser(String username, String password) {
        // TODO Auto-generated method stub
        return null;
    }

    //判断数据库中时候含有该用户
    @Override
    public User isValidAdmin(String username, String password) {
        User user = null;
        //调用hibernate
        List<User> list =super.search("FROM User WHERE grade=‘admin‘ AND username =‘"+username+"‘ AND password = ‘"+password+"‘");
        if(list!=null && list.size()>0){//若找到的list不为空那么则说明数据库中包含这个人
            user = list.get(0);
        }
        return user;
    }

}

Hibernate初始化借口并且从数据库中取数据

package com.zs.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class BaseDaoImpl implements IBaseDao {

    private  SessionFactory sessionFactory;
    private  Session session;
    private  Transaction transaction;

    //初始session接口
    public void init(){
        Configuration configuration = new Configuration().configure();
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
                                  .buildServiceRegistry();
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);

        session = sessionFactory.openSession();
        transaction = session.beginTransaction();
    }
    @Override
    public Session getSession() {
        init();
        return session;
    }

    @Override
    public void closeSession() {
        session.close();

    }

    @Override
    public List search(String hql) {
        //调用session接口
        Session session = null;
        session = getSession();
        List alist = null;
        alist = session.createQuery(hql).list();//从数据库中查询
        session.close();
        return alist;
    }

}

可以先建好一个名为User的数据库,设置一个用户,然后便可以测试了

完整代码可以在我github下载:https://github.com/calmound/web/tree/master/%E7%AE%A1%E7%90%86%E5%85%AC%E5%91%8A%E7%B3%BB%E7%BB%9F/GuanLiXiTong(%E7%AE%A1%E7%90%86%E5%91%98%E7%99%BB%E9%99%86)

时间: 2024-12-29 11:38:04

struts2+Hibernate实现用户登陆功能的相关文章

Struts2环境配置和登陆功能的实现

最近在学习SSH框架,通过用struts实现一个简单的登陆功能,来学习struts相关知识,着重了解了struts的配置. 1.在Eclipse下创建StrutsDemo项目,并将struts2所必须的jar包导入lib目录下. 主要有如下7个jar包:commons-fileupload.commons-io.freemarker.javassiat.ognl.struts2-core.xwork. 2.在src目录下建立一个struts.xml文件用于配置struts. struts.xml

使用C#语言控制数据库,完成用户登陆功能

1. 数据库的创建 首先需要选择一个数据库管理工具,这里我们使用Navicat Premium作为我们的数据库管理工具,这款软件是需要下载安装的,安装完成之后需要记住你的账号和密码.我们使用mysql数据库作为我们使用的数据库,这也是需要我们下载安装的.当我们需要的软件都下载及安装完成之后我们就可以开始创建我们的数据库了. 第一步:创建一个连接,在Navicat右上角有一个连接选项,点击我们创建一个mysql数据库,然后会弹出这样一个窗口 自定义一个连接名,然后填写上主机的IP地址(如果用本机测

用java实现一个简单的单用户登陆功能的思路

引用 所谓"单用户单账户登录"是指:在同一系统中,一个用户名不能在两个地方同时登录. 我们参照 QQ 实现效果:当某账号在 A 处登录后,在未退出的情况下,如果再到 B 处登录,那么,系统会挤下 A 处登录的账号. 要实现这样一个功能,如果我们项目使用了springmvc我们可以使用拦截器来替代过滤器,否则我们使用过滤器也可以实现,我们需要一个这样的东西来进行拦截用户的请求.我们的user表里也需要添加一个token字段,用于存放当前登录者的一个唯一标识. 大致的思路是这样的: 用户A

使用jsp+javabean完成用户登陆功能

User.java package com.po; public class User implements java.io.Serializable { private String username; private String password; public User() { } public String getUsername() { return username; } public void setUsername(String username) { this.usernam

jsp应用-实现用户登陆功能

项目结构 1.login.jsp 这个没什么好说的,把表单提交到校验页面进行校验 2.首先获取request域中user,password,然后进行校验,校验成功把信息存入session域,然后转发到right.jsp页面 放入session域是为了防止不登录进去 3.在right,jsp获取用户名输出 4.需记住request------getParameter("") session--getAttribute("") 5.登陆页面至此结束 原文地址:https

Session小案例------完成用户登陆

Session小案例------完成用户登陆 在项目开发中,用户登陆功能再寻常不过啦,当用户完成用户名和密码校验后,进入主界面,需要在主界面中显示用户的信息,此时用session来记住用户是最为合适不过了. 功能实现如下: 1,完成用户登陆功能 2,在主界面记住用户 3,完成用户注销功能 用户类: package cn.itcast.login; public class User{ private String username; private String password; public

017医疗项目-模块一:用户登录功能的实现

用户在登录页面上填好姓名和密码还有验证码实现登录. 实现的效果如下: 输入信息后成功. 具体做法代码如下: 我们还是从Dao层开始: 这里用到的Dao层的代码无非就是查名字,查密码什么的.之前就有的,这里的不用了. Service:这一层很重要: 先讲一下这一层要做的东西: 我们要做用户的登录验证. 1.根据传进来的id,去数据库查有没有这个用户,没有直接抛异常,有的话就继续下一步. 2.根据查到的用户sysuser.去查他的存在数据库里面的密码和我们在页面上的密码是不是一致的,一致的就继续,不

Android——用户登陆及用户名和密码的保存

Android——用户登陆及用户名和密码的保存 在之前的学习过程中已经将Android学习完了,但是在后面将近一年的时间里都没有进行过Android开发,所以对Android的所有的知识点又有点忘记了,因此才会继续的学习Android,做出这个学习笔记.另外:由于在暑假的时候要开发Android项目,所以对于这些Android知识点也都要熟练的掌握. 目录 一.Android下的Junit测试 二.登陆记录密码界面设计 三.采用rom保存用户数据 一.Android下的Junit测试 在实际开发

JavaWeb_(Spring框架)用户登陆Spring整合到Servlet中

一.使用servlet技术开发用户登陆功能 在MySQL中准备一个user表,表中增加一条假数据 使用Servlet实现用户登陆的功能 用户登陆的<from>表单 <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post"> <div class="input-group input-gr