JAVAMD5类MySQL数据库_JAVA中使用MD5加密工具类实现对数据的加密处理

1.MD5工具类

packagecom.ssm.util;importjava.security.MessageDigest;public classMD5Util {//将字节数组转成十六进制字符串

private static String byteArrayToHexString(byteb[]) {

StringBuffer resultSb= newStringBuffer();for (int i = 0; i < b.length; i++)

resultSb.append(byteToHexString(b[i]));returnresultSb.toString();

}//对单个字节转换成整数进行取商取余数计算

private static String byteToHexString(byteb) {int n =b;if (n < 0)

n+= 256;int d1 = n / 16;int d2 = n % 16;//根据下标d1,d2去数组hexDigits的数据

return hexDigits[d1] +hexDigits[d2];

}public staticString MD5Encode(String origin, String charsetname) {

String resultString= null;try{

resultString= newString(origin);//获得MD5摘要算法的 MessageDigest 对象

MessageDigest md = MessageDigest.getInstance("MD5");if (charsetname == null || "".equals(charsetname))//将加密之后的字节数据转换成16进制的字符串

resultString =byteArrayToHexString(md.digest(resultString

.getBytes()));elseresultString=byteArrayToHexString(md.digest(resultString

.getBytes(charsetname)));

}catch(Exception exception) {

}returnresultString;

}private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5","6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};

}

2.在登录注册中使用MD5加密算法

demo目录结构

40f55e0bb5e6a8f1ddcebfc808e64f2b.png

数据库用户表

CREATE TABLE `user` (

`id`int(20) NOT NULL AUTO_INCREMENT COMMENT '编号',

`userName`varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT '用户名',

`password`varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT '密码',PRIMARY KEY(`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

pojo对象User.java

packagecom.ssm.pojo;public classUser {privateInteger id;privateString userName;privateString password;publicInteger getId() {returnid;

}public voidsetId(Integer id) {this.id =id;

}publicString getUserName() {returnuserName;

}public voidsetUserName(String userName) {this.userName =userName;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}

}

2.1DAO层

DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,

DAO层的设计首先是设计DAO的接口,

然后在Spring的配置文件中定义此接口的实现类,

然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,

DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。

UserDaO.java

packagecom.ssm.dao;importcom.ssm.pojo.User;public interfaceUserDao {//用户注册

public intregister(User user) ;//登陆

publicUser login(User user);

}

UserMapper.xml

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from

user where userName=#{userName} and password=#{password} limit 1

insert into user(userName,password)

values(#{userName},#{password})

2.2业务层:Service层

Service层:Service层主要负责业务模块的逻辑应用设计。

首先设计接口,再设计其实现的类

接着再在Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。

Service层的业务实现,具体要调用到已定义的DAO层的接口,

封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。

UserService.java

packagecom.ssm.service.impl;importcom.ssm.pojo.User;public interfaceUserService {publicUser login(User user);public intregister(User user);

}

UserServiceImpl.java

packagecom.ssm.service.impl;importjavax.annotation.Resource;importorg.springframework.stereotype.Service;importcom.ssm.dao.UserDao;importcom.ssm.pojo.User;

@Service("userService")public class UserServiceImpl implementsUserService {

@ResourceprivateUserDao userDao;publicUser login(User user) {//TODO Auto-generated method stub

returnuserDao.login(user);

}public intregister(User user) {//TODO Auto-generated method stub

returnuserDao.register(user);

}

}

2.3控制层:Controller层

Controller层:Controller层负责具体的业务模块流程的控制,

在此层里面要调用Service层的接口来控制业务流程,

控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。

RegisterController.java

packagecom.ssm.controller;importjavax.annotation.Resource;importjavax.servlet.http.HttpServletRequest;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importcom.ssm.pojo.User;importcom.ssm.service.impl.UserService;importcom.ssm.util.MD5Util;

@Controller

@RequestMapping("user")public classRegisterController {

@ResourceprivateUserService userService;

@RequestMapping("/register")publicString register(User user, HttpServletRequest request){

String username=request.getParameter("userName");

String password=request.getParameter("password");

String Md5password=MD5Util.MD5Encode(password, "UTF-8");

System.err.println(Md5password);

user.setPassword(Md5password);

user.setUserName(username);int result=userService.register(user);if (result > 0) {return "index";

}else{return"register";

}

}

}

LoginController.java

packagecom.ssm.controller;importjavax.annotation.Resource;importjavax.servlet.http.HttpServletRequest;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importcom.ssm.pojo.User;importcom.ssm.service.impl.UserService;importcom.ssm.util.MD5Util;

@Controller

@RequestMapping("user")public classLoginController {

@ResourceprivateUserService userService;

@RequestMapping("/login")publicString login(User user,HttpServletRequest request){

String userName=request.getParameter("userName");

String password=request.getParameter("password");//将登陆 提交的密码进行MD5加密然后到数据库加密密码进行对比验证

String Md5password=MD5Util.MD5Encode(password, "UTF-8");

user.setUserName(userName);

user.setPassword(Md5password);

User result=userService.login(user);if(result==null){

request.setAttribute("errorMsg", "请认真核对账号、密码!");return "login";

}else{return "success";

}

}

}

2.4view层(视图层)

View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示.

login.jsp

用户名:

密  码:

注册

register.jsp

注册

用户名:

密  码:

DAO层,Service层这两个层次都可以单独开发,互相的耦合度很低,完全可以独立进行,这样的一种模式在开发大项目的过程中尤其有优势Controller,View层因为耦合度比较高,因而要结合在一起开发,但是也可以看作一个整体独立于前两个层进行开发。这样,在层与层之前我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。Service逻辑层设计Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。

3.MD5工具类

MD5Util.java

packagecom.ssm.util;importjava.security.MessageDigest;public classMD5Util {//将字节数组转成十六进制字符串

private static String byteArrayToHexString(byteb[]) {

StringBuffer resultSb= newStringBuffer();for (int i = 0; i < b.length; i++)

resultSb.append(byteToHexString(b[i]));returnresultSb.toString();

}//对单个字节转换成整数进行取商取余数计算

private static String byteToHexString(byteb) {int n =b;if (n < 0)

n+= 256;int d1 = n / 16;int d2 = n % 16;//根据下标d1,d2去数组hexDigits的数据

return hexDigits[d1] +hexDigits[d2];

}public staticString MD5Encode(String origin, String charsetname) {

String resultString= null;try{

resultString= newString(origin);//获得MD5摘要算法的 MessageDigest 对象

MessageDigest md = MessageDigest.getInstance("MD5");if (charsetname == null || "".equals(charsetname))//将加密之后的字节数据转换成16进制的字符串

resultString =byteArrayToHexString(md.digest(resultString

.getBytes()));elseresultString=byteArrayToHexString(md.digest(resultString

.getBytes(charsetname)));

}catch(Exception exception) {

}returnresultString;

}private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5","6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};

}

4.ssm框架的配置文件

①数据库配置文件

jdbc.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/ssmtest?useUnicode=true&characterEncoding=UTF-8username=root

password=123456

#定义初始连接数

initialSize=0

#定义最大连接数

maxActive=20

#定义最大空闲

maxIdle=20

#定义最小空闲

minIdle=1

#定义最长等待时间maxWait=60000

②log4j配置文件

log4j.properties

#定义LOG输出级别

log4j.rootLogger=INFO,Console,File#定义日志输出目的地为控制台

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.Target=System.out#可以灵活地指定日志输出格式,下面一行是指定具体的格式

log4j.appender.Console.layout = org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n#文件大小到达指定尺寸的时候产生一个新的文件

log4j.appender.File = org.apache.log4j.RollingFileAppender#指定输出目录

log4j.appender.File.File = logs/springmvcMybist/ssm.log#定义文件最大大小

log4j.appender.File.MaxFileSize =10MB#输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志

log4j.appender.File.Threshold =ALL

log4j.appender.File.layout = org.apache.log4j.PatternLayout

log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

③spring-mybatis配置文件

spring-mybatis.xml

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

④spring-mvc配置文件

spring-mvc.xml

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

text/html;charset=UTF-8

⑤配置web.xml文件

Archetype Created Web Application

contextConfigLocation

classpath:spring-mybatis.xml

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

true

encoding

UTF-8

encodingFilter

/*

org.springframework.web.context.ContextLoaderListener

org.springframework.web.util.IntrospectorCleanupListener

SpringMVC

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:spring-mvc.xml

1

true

SpringMVC

/

/index.html

/index.jsp

4.maven工程的pom.xml配置

4.0.0

com.ssmdemo01

mavenproject

war

0.0.1-SNAPSHOT

mavenproject Maven Webapp

http://maven.apache.org

4.0.2.RELEASE

3.2.6

1.7.7

1.2.17

junit

junit

3.8.1

test

javax

javaee-api

7.0

junit

junit

4.11

test

org.springframework

spring-core

${spring.version}

org.springframework

spring-web

${spring.version}

org.springframework

spring-oxm

${spring.version}

org.springframework

spring-tx

${spring.version}

org.springframework

spring-jdbc

${spring.version}

org.springframework

spring-webmvc

${spring.version}

org.springframework

spring-aop

${spring.version}

org.springframework

spring-context-support

${spring.version}

org.springframework

spring-test

${spring.version}

org.mybatis

mybatis

${mybatis.version}

org.mybatis

mybatis-spring

1.2.2

javax

javaee-api

7.0

mysql

mysql-connector-java

5.1.30

commons-dbcp

commons-dbcp

1.2.2

jstl

jstl

1.2

log4j

log4j

${log4j.version}

com.alibaba

fastjson

1.1.41

org.slf4j

slf4j-api

${slf4j.version}

org.slf4j

slf4j-log4j12

${slf4j.version}

org.codehaus.jackson

jackson-mapper-asl

1.9.13

commons-fileupload

commons-fileupload

1.3.1

commons-io

commons-io

2.4

commons-codec

commons-codec

1.9

mavenproject

5.运行项目

076f26f99913db12d33cff9588c32164.png

9eefca580347f0043dfcc94d7c7a7191.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值