1、springboot项目搭建
File new project选择spring initializr,如下图
点击下一步,
输入name,group,aftifact等选项,别的默认即可,
点击下一步
选择相应的web、jpa、等需要的东西。点击下一步,
构建完成。会自动生成一些文件和文件夹。在java和resource两个文件夹下分别创建相应的文件夹,如图所示
Model实体
Dao操作数据库
Service调用dao层并可以被controller调用
Controller调用service层 并可指定模板 传递数据
Pom.xml基于maven为基础
如:
spring-boot-starter 核心 POM,包含自动配置支持、日志库和对 YAML 配置文件的支持。
spring-boot-starter-aop 包含 spring-aop 和 AspectJ 来支持面向切面编程(AOP)。
spring-boot-starter-web 支持 Web 应用开发,包含 Tomcat 和 spring-mvc。
等
application.properties数据库信息等
2、创建数据库
创建user表
编写实体类。
3、编码
(1)注册
首先注册,需要检测用户名密码是否为空,用户名是否已经被占用,需要给密码加密
前台form表单提交过来,后台去判断,如下
用户名不能为空
if(user.getName().length() == 0) {
attributes.addFlashAttribute("message","用户名不能为空");//传递给前台
return "redirect:regist";
}
查询用户名是否存在
User user1 = userService.getUserByName(user.getName());
Service
public User getUserByName(String name){
User user= userDao.findByName(name);
return user;
}
Dao
//通过名字进行查找
User findByName(String name);
如果不存在则加入到数据库,进行注册。
user.setPassword(MD5Util.encode(user.getPassword()));//给密码md5加密,引入了MD5Util
类,加密方式为密码+特定字符串,然后md5加密
userService.save(user);//保存到数据库
由此注册完成。
(2)登录
前台传过来用户名和密码,后来来处理数据
// 用户登陆
@RequestMapping("/login")
public String getUser(User userObj,@RequestParam String name,
@RequestParam String password,
HttpSession session,
RedirectAttributes attributes) {
if(name.length() == 0) {
attributes.addFlashAttribute("message","用户名不能为空");
return "redirect:";
}
password = MD5Util.encode(password);
User user = userService.getUser(name,password);
if (user != null) {
user.setPassword(null);
session.setAttribute("user", user);
return "index";
}else{
attributes.addFlashAttribute("message","用户名或密码错误");
return "redirect:";
}
}
先判断用户名是否为空,然后给密码加密,加密后去根据用户名和加密后的密码去数据库中查找
@Override
public User getUser(String name, String password) {
User user= userDao.findByNameAndPassword(name,password);
return user;
}
Dao
// 通过名字和密码进行查找
User findByNameAndPassword(String name,String password);
如果数据库中存在,则登录成功。记录到session中。
user.setPassword(null);//把密码去除掉
session.setAttribute("user", user);
至此注册登录完成。
4、发布文章
创建news表
创建model、service等
发表文章,前台传过来标题和内容
通过session判断用户是否登录
User user = (User)session.getAttribute("user");
if(user == null || user.getId() < 1){
attributes.addFlashAttribute("message","登陆后才可发布");
return "redirect:tosavenews";
}
设置时间、部分值等并保存
news.setUser_id(user.getId());
news.setCreate_time(new Date());
news.setStatus(1);
news.setZan(0);
newsService.save(news);
查询文章列表并传给前台
List newsList = newsService.findAll();
model.addAttribute("newsList",newsList);
Service
目前还没有增加分页等限制,查询的是全部
@Override
public List findAll(){
return newsDao.findAll();
}
详情页
通过id获取详情
@RequestMapping("detail/{id}")
public String detail(@PathVariable("id")int id, Model model){
News news = newsService.getNewsById(id);
model.addAttribute("news",news);
return "detail";
}
Service
@Override
public News getNewsById(int id){
News news= newsDao.findById(id);
return news;
}
源码在此处下载