文章目录
一、登录
Controller层
注入服务层对象UserService,使用服务层方法获得page对象;model参数负责将对象传递到前端。
@Controller
@RequestMapping("admin")
public class LoginController {
@Autowired
private UserService userService;
@GetMapping
public String toLogin() { return "admin/login"; }
@PostMapping("login")
public String login(String username, String password, HttpSession session, RedirectAttributes redirectAttributes){
User user = userService.checkUser(username,password);
if(user!=null){
session.setAttribute("user",user);
return "admin/index";
}else {
redirectAttributes.addFlashAttribute("message","用户名和密码错误1");
return "redirect:/admin";
}
}
}
Service层
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public User checkUser(String username, String password) {
return userDao.findByUsernameAndPassword(username,password);
}
}
Dao层
Dao层使用JPA完成数据库的操作。设置接口如下:
public interface UserDao extends JpaRepository<User,Long> {
User findByUsernameAndPassword(String username,String password);
}
配置文件:配置JPA和数据库
持久化:Hibernate(开放源代码的对象关系映射框架)
Hibernate是基于JPA的框架,JPA由一系列的接口和抽象类构成,是一个标准,而Hibernate就是献县这一些列接口的框架。Hibernate可以自动生成SQL语句,完成持久化相关任务,使开发变得更加方便快捷。
server:
port: 8082
spring:
datasource:
url: jdbc:mysql://localhost:3306/tnews?characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
结果展示
1、登录界面
2、登录成功
3、登录失败
二、信息分页
与SSM框架不同,Spring Boot项目使用内置的Pageable来实现信息分页
Controller层
@Controller
@RequestMapping("/admin/types")
public class TypeController {
@Autowired
private TypeService typeService;
@RequestMapping
public String list(@PageableDefault(size = 5,sort = {"id"},direction = Sort.Direction.DESC) Pageable pageable, Model model){
Page<Type> page = typeService.listType(pageable);
model.addAttribute("page",page);
return "admin/types";
}
}
Service层
@Service
public class TypeServiceImpl implements TypeService {
@Autowired
private TypeDao typeDao;
@Override
public Page<Type> listType(Pageable pageable) {
return typeDao.findAll(pageable);
}
}
Dao层
public interface TypeDao extends JpaRepository<Type,Long> {
}
HTML文件
<tr>
<th colspan="6">
<div class="ui mini pagination menu" th:if="${page.totalPages}>1">
<a class=" item" th:href="@{/admin/types(page=${page.number}-1)}" th:unless="${page.first}" >上一页</a>
<a class=" item" th:href="@{/admin/types(page=${page.number}+1)}" th:unless="${page.last}">下一页</a>
</div>
<a href="#" class="ui mini right floated teal basic button">新增</a>
</th>
</tr>
实体类
@Entity
@Table(name = "t_type")
public class Type {
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "type")
private List<News> news = new ArrayList<>();
public Type() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<News> getNews() {
return news;
}
public void setNews(List<News> news) {
this.news = news;
}
@Override
public String toString() {
return "Type{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
t_type数据表
结果展示
三、注销
Controller层
@GetMapping("logout")
public String logout(HttpSession session){
session.removeAttribute("user");
return "admin/login";
}
HTML文件
<div class="menu">
<a href="#" th:href="@{/admin/logout}" class="item">注销</a>
</div>
结果展示
注销后返回登录界面
四、小结
Spring Boot项目的实现过程较SSM项目更为简洁,它不需要Mybatis框架编写SQL语句来实现具体功能,数据库访问也通过JPA完成,基于JPA框架的Hibernate可以自动生成SQL语句,完成持久化相关任务。在本次项目实现中,我通过不断对比SSM与Spring Boot,加深了对这两个框架的理解,学会了如何简捷高效的实现Java开发,收获颇多。