我们配置好SSM框架后,实现登录与注册功能
我们要在src/main/java下创建controller,entity,service,service,dao,util包,在src/main/resources下创建mapper文件夹。
entity层就是实体类,对应数据库的表。controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法。ServiceImpl层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接。至于Mapper是mybtis框架的映射用到,mapper映射文件在dao层用。
再分别在包下创建所需要的文件,创建后目录结构如图:
其中MD5是用来给信息加密,JsonResult用来反映进程成功和失败。
UserController.java
@Controller
@RequestMapping("/user")
public class UserController {
private static Logger logger=LogManager.getLogger(UserController.class);
@Autowired
UserService userService;
@RequestMapping("/login")
@ResponseBody
public Object login(User user) {
logger.info("登录");
try {
user.setPassword(MD5.md5(user.getPassword(),"helloworld"));
}catch(Exception e) {
e.printStackTrace();
}
User userResult=userService.login(user);
JsonResult jsonResult;
if(userResult!=null) {
jsonResult = new JsonResult(JsonResult.STATE_SUCCESS,"",userResult);
}else {
jsonResult = new JsonResult(JsonResult.STATE_ERROR,"用户名密码错误",null);
}
return jsonResult;
}
@RequestMapping("/register")
@ResponseBody
public Object register(User user) {
user.setId(UUID.randomUUID().toString());
try {
String md5password=MD5.md5(user.getPassword(), "helloworld");
user.setPassword(md5password);
}catch(Exception e){
e.printStackTrace();
}
JsonResult jsonResult=null;
User userResult=userService.getUserByUserName(user);
if(userResult==null) {
int result=userService.addUser(user);
if(result==1) {
//添加成功
jsonResult = new JsonResult(JsonResult.STATE_SUCCESS,"注册成功",null);
}else {
//添加失败
jsonResult = new JsonResult(JsonResult.STATE_ERROR,"注册失败",null);
}
}else {
jsonResult = new JsonResult(JsonResult.STATE_ERROR,"用户名重复",null);
}
return jsonResult;
}
}
UserService.java
public interface UserService {
//用户登录
public User login(User user);
//用户注册
public User getUserByUserName(User user);
//添加用户
public int addUser(User user);
}
UserImpl.java
@Service
public class UserImpl implements UserService{
@Autowired
UserDao userDao;
public User login(User user) {
List<User> list=userDao.login(user);
if(list==null||list.isEmpty()) {
System.out.println("用户名,密码不匹配");
return null;
}else {
System.out.println(list.get(0));
return list.get(0);
}
}
public User getUserByUserName(User user) {
List<User> list=userDao.getUserByUserName(user);
if(list==null || list.isEmpty()) {
return null;
}
return list.get(0);
}
@Override
public int addUser(User user) {
return userDao.addUser(user);
}
}
UserDao.java
public interface UserDao {
public List<User> login(User user);
public List<User> getUserByUserName(User user);
public int addUser(User user);
}
User.java
public class User implements Serializable{
private static final long serialVersionUID = -444375920495358296L;
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
private String username;
private String password;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", age=" + age + "]";
}
}
JsonResult.java
public class JsonResult implements Serializable {
private static final long serialVersionUID = -598253683001447009L;
public static String STATE_SUCCESS="1";
public static String STATE_ERROR="-1";
private String state;
private String message;
private Object data;
public JsonResult(String state,String message,Object data) {
this.data=data;
this.message=message;
this.state=state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
MD5.java
public class MD5 {
public static String md5(String text,String key) throws Exception{
String md5str=DigestUtils.md5Hex(text+key);
System.out.println("MD5加密的字符串为"+md5str);
return md5str;
}
}
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.wzc.dao.UserDao">
<select id="login" parameterType="com.wzc.entity.User" resultType="com.wzc.entity.User">
select * from note_t_users where username=#{username} and password=#{password}
</select>
<select id="getUserByUserName" parameterType="com.wzc.entity.User" resultType="com.wzc.entity.User">
select * from note_t_users where username=#{username}
</select>
<insert id="addUser" parameterType="com.wzc.entity.User">
insert into note_t_users (id,username,password,name,age) values(#{id},#{username},#{password},#{name},#{age})
</insert>
</mapper>
我们在js文件实现前台与后台数据的交换和结果显示
login.js
$(function(){
$('#submit').click(function () {
if($('#username').val()==' '){
alert("请输入用户名");
}else if($('#ps').val()==''){
alert("请输入密码");
}
var sendData={"username":$('#username').val(),"password":$('#ps').val()};
$.ajax({
type:"post",
url:"user/login.do",
data:sendData,
datatype:'json',
success:function(msg){
if(msg.state==1){
console.log(msg.data.name);
alert("欢迎"+msg.data.name);
}
else{
alert(msg.message);
}
},
error:function(msg){
alert('通信失败');
}
});
})
})
register.js
$(function(){
$('#submit').click(function () {
if($('#username').val()==''){
alert("请输入用户名");
$('#username').focus();
return ;
}else if($('#ps').val()==''){
alert("请输入密码");
$('#ps').focus();
return;
}else if($('#pss').val()==''){
alert("请输入确认密码");
$('#pss').focus();
return;
}else if($('#name').val()==''){
alert("请输入名称");
$('#name').focus();
return;
}else if($('#age').val()==''){
alert("请输入密码");
$('#age').focus();
return;
}
if($('#ps').val()!=$('#pss').val()){
alert('输入密码和确认密码不一致');
return ;
}
var reg=/^(?:[1-9][0-9]?|1[01][0-9]|120)$/;
if(reg.test($('#age').val())){
}else{
alert("输入年龄范围(1-120)");
return;
}
var sendData={"username":$('#username').val(),"password":$('#ps').val(),"passwords":$('#pss').val(),"name":$('#name').val(),"age":$('#age').val()};
$.ajax({
type:"post",
url:"user/register.do",
data:sendData,
datatype:'json',
success:function(msg){
if(msg.state==1){
alert(msg.message);
}
else{
alert(msg.message);
}
},
error:function(msg){
alert('通信失败');
}
});
})
})
测试
成功添加到数据库且id与密码为加密状态
登录成功