一、簡介
package org.md5.entity;
/**
* Users entity. @author MyEclipse Persistence Tools
*/
public class Users implements java.io.Serializable {
// Fields
private Integer id;
private String name;
private String password;
// Constructors
/** default constructor */
public Users() {
}
/** full constructor */
public Users(String name, String password) {
this.name = name;
this.password = password;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
package org.md5.manage;
// 在Java中使用MessageDigest實現MD5,SHA-1等加密
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/*
* TestEncrypt.java Description: A test progrm to encrypt a string using MD5 or SHA-1,etc.
*/
public class MessageEncrypt {
/**
* @param strSrc 要加密的字符串
* @param encName 加密算法
* @return
*/
public static String encrypt(String strSrc, String encName) {
// parameter strSrc is a string will be encrypted,
// parameter encName is the algorithm name will be used.
// encName dafault to "MD5"
// 得到MessageDigest對象
MessageDigest md = null;
MessageEncrypt mept = new MessageEncrypt();
// 加密後的字符串
String strDes = null;
// 要加密的字符串字節型數組
byte[] bt = strSrc.getBytes();
try {
if (encName == null || encName.equals("")) {
encName = "MD5";
}
md = MessageDigest.getInstance(encName);
md.update(bt);
// 通過執行諸如填充之類的最終操作完成哈希計算
strDes = mept.bytes2Hex(md.digest()); // to HexString
} catch (NoSuchAlgorithmException e) {
System.out.println("Invalid algorithm.\n" + e.getMessage());
return null;
}
return strDes;
}
// 將字節數組轉換成16進制的字符串
private String bytes2Hex(byte[] bts) {
String des = "";
String tmp = null;
for (int i = 0; i < bts.length; i++) {
tmp = (Integer.toHexString(bts[i] & 0xFF));
if (tmp.length() == 1) {
des += "0";
}
des += tmp;
}
return des;
}
}
package org.md5.dao;
public interface UserDao {
void login(String name, String password);
void registerUser(String name, String pass);
}
package org.md5.dao.impl;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.md5.dao.UserDao;
import org.md5.entity.Users;
import org.md5.manage.MessageEncrypt;
import org.md5.util.HibernateSessionFactory;
public class UserDaoImpl implements UserDao {
/**
* 登錄
*/
public void login(String name, String password) {
Session session = HibernateSessionFactory.getSession();
session.createQuery("from Users u where u.name=? and u.password=?")
.setParameter(0, MessageEncrypt.encrypt(name, null))
.setParameter(1, MessageEncrypt.encrypt(password, null));
HibernateSessionFactory.closeSession();
}
/**
* 註冊
*/
public void registerUser(String name, String pass) {
Transaction tx = null;
Session session = HibernateSessionFactory.getSession();
Users u = new Users();
u.setName(MessageEncrypt.encrypt(name, null));
u.setPassword(MessageEncrypt.encrypt(pass, null));
try {
tx = session.beginTransaction();
session.save(u);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
tx.rollback();
} finally {
HibernateSessionFactory.closeSession();
}
}
}
package org.md5.action;
import org.md5.dao.UserDao;
import org.md5.dao.impl.UserDaoImpl;
import org.md5.entity.Users;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private UserDao userDao = new UserDaoImpl();
private Users user;
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
/**
* 登錄
*/
public String login() {
userDao.login(name, password);
return SUCCESS;
}
/**
* 註冊
*/
public String register() {
userDao.registerUser(user.getName(), user.getPassword());
return SUCCESS;
}
}
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="md5" extends="struts-default" namespace="/"> <!-- 登錄 --> <action name="login" class="org.md5.action.UserAction" method="login"> <result>/login_success.jsp</result> </action> <!-- 註冊 --> <action name="register" class="org.md5.action.UserAction" method="register"> <result>/success.jsp</result> <result name="input">/register.jsp</result> </action> </package> </struts>