上面两篇博客已经详细的介绍了在IntelliJ IDEA 搭建SSM框架的整个过程,下面我们就要在搭建好的环境里实现我们想要的功能了。本文完成用户的登录功能,主要包括:用户注册,登录,编辑,退出,注销。
第一步:设计user表,并用mybatis-geneator生成user表对应的数据文件
首先,我们在test数据库里加一张user表,代码如下
usetest;CREATE TABLE `user` (
`id`int(10) unsigned NOT NULLAUTO_INCREMENT,
`name`varchar(40) NOT NULL,
`password`varchar(255) NOT NULL,
`age`int(4) NOT NULL,
`description`varchar(255) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;select * from user;
然后,用mybatis-geneator生成user表对应的数据文件。打开generator.properties文件,table=message改为table=user,点击IntelliJ IDEA右侧边栏的Maven Projects,双击 mybatis-generator:generate,运行成功以后会多user表的相关数据文件,如下图:
注意:如果需要一次生成所有表的数据文件,先把dao,entity,sqlmap里面的文件都清空,然后打开generatorConfig.xml,把table标签替换为下面的代码即可
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"/>
现在,user数据表已经绑定成功。下面按照上一篇中测试message的方法,用junit测试工具,测一下数据能不能正常写入数据库。第二步:新建文件
在controller文件夹下添加userController.java和homeController.java文件
userController.java:跟用户有关的路由都会写在这个文件里homeController.java:写登录成功以后的路由
在service文件夹下,添加UserService.java文件和impl文件夹,在impl文件夹下,添加UserServiceImpl.java
UserService.java:存放业务层接口
UserServiceImpl.java:实现业务层接口
在js文件夹下添加jQuery文件引用,我这里加的是jquery-3.3.1.js
在views文件夹下添加:login.jsp,home.jsp,detail.jsp,register.jsp
login.jsp:登录页面
home.jsp:登录以后的页面
detail.jsp:编辑用户信息页面
register.jsp:用户注册页面
第三步:首页
欢迎来到首页,请先登录
登录
注册
View Code
第四步:注册功能
1,写注册页面,在register.jsp中添加代码如下:
Title用户注册
用户名:密码:年龄:描述:
if(${status}== 0){
alert("注册成功")
location.href="/";
}
View Code
2,dao中实现数据库操作
dao文件夹中的UserMapper已经有insert接口,sqlmap中的UserMapper.xml中已经实现insert,所以只需在
dao文件夹中的UserMapper中添加selectUserByName接口,在sqlmap中的UserMapper.xml中添加selectUserByName实现。代码如下:
List selectUserByName(User record);
select *
from user
where name = #{name,jdbcType=VARCHAR}
3,service层实现业务逻辑
在UserService.java中写注册接口insert,和根据用户名查找用户接口selectUserByName,代码如下:
packagecn.only.service;importcn.only.entity.User;importjava.util.List;public interfaceUserService {intinsert(User record);
ListselectUserByName(User record);
}
View Code
4,在UserServiceImpl.java中实现以上接口,代码如下:
packagecn.only.service.impl;importcn.only.dao.UserMapper;importcn.only.entity.User;importcn.only.service.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjava.util.List;
@Servicepublic class UserServiceImpl implementsUserService{
@AutowiredprivateUserMapper mapper;public int insert(User record){returnmapper.insert(record);}public List selectUserByName(User record){returnmapper.selectUserByName(record);}
}
View Code
5,在userController.java中写路由,代码如下:
packagecn.only.controller;importcn.only.entity.User;importcn.only.service.UserService;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.ModelAttribute;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.ResponseBody;importjavax.annotation.Resource;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSession;importjava.util.List;
@Controller
@RequestMapping("/user")public classuserController {
@ResourceprivateUserService userService;
@RequestMapping(value="/register")publicString register(HttpServletRequest request, Model model){return "register";
}
@RequestMapping(value="/register",method=RequestMethod.POST)publicString addUser(@ModelAttribute User user, Model model){
List list=userService.selectUserByName(user);if(list.size()==0){if(userService.insert(user)==1){
model.addAttribute("status",0);
}else{
model.addAttribute("status",1);
}
}else{
model.addAttribute("status",2);
}return "register";
}
}
View Code
第五步:登录功能
1,写登录页面,在login.jsp文件,代码如下:
登录登录
用户名:密码:
注册
if(${status}== 0){
alert("登录成功");
location.href="/home";
}else{
alert("登录失败,用户名或密码错误");
}