中间件接口
使用知识
- SpringBoot
- JPA
- thymeleaf
- EasyUI
目录结构
POM.xml配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.fuju</groupId>
<artifactId>23-spring-boot-jpa</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.20.RELEASE</version>
</parent>
<dependencies>
<!-- springboot的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springboot的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- JPA-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- 测试工具启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
</dependencies>
</project>
application.proerties配置
#mysql数据库连接信息
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf8
spring.datasource.username=用户名
spring.datasource.password=密码
#连接池信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#配置正向工程
spring.jpa.hibernate.ddl-auto=update
#在控制台输出sql语句
spring.jpa.show-sql=true
前段页面
- index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" th:href="@{/jquery-easyui-1.7.0/themes/default/easyui.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/jquery-easyui-1.7.0/themes/icon.css}" />
<script type="text/javascript" th:src="@{jquery-easyui-1.7.0/jquery.min.js}"></script>
<script type="text/javascript" th:src="@{/jquery-easyui-1.7.0/jquery.easyui.min.js}"></script>
<script type="text/javascript">
$(function(){
$("#login_submit").click(function(){
$('#login_form').form('submit', {
url:"login",
onSubmit: function(){
if($(":text:eq(0)").val()==""){
$.messager.alert('系统信息','用户名不能为空 ');
return false;
}else if($(":password:eq(0)").val()==""){
$.messager.alert('系统信息','密码不能为空 ');
return false;
}
},
success:function(data){
//alert(data)
if(data=="1"){
location.href="main.html";
}else{
$.messager.alert('系统信息','登录失败 ');
}
}
});
});
});
</script>
</head>
<body style="background-color: #e9f1ff">
<div style="margin: 100px auto;width: 400px">
<div id="p" class="easyui-panel" title="登录"
style="width:400px;height:230px;padding:10px;background:#fafafa;"
><!-- data-options="iconCls:'icon-save'" -->
<form action="login" method="post" id="login_form">
<table width="230" align="center">
<tr>
<td colspan="2" style="text-align: center;font-size: 20px;font-weight: bold;">中间件接口</td>
</tr>
<tr style="height: 40px">
<td>登录名</td>
<td><input type="text" name = "username"/></td>
</tr>
<tr style="height: 40px">
<td>密码</td>
<td><input type="password" name = "password"/></td>
</tr>
<tr>
<td colspan="2" align="right"><a id="login_submit" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-ok'">登录</a> </td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>
实体类 使用JPA正向工程生成数据库
- users实体类
package com.fuju.po;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* 用户实体类
* @author Administrator
*
*/
@Entity
@Table(name="t_users")
public class Users {
@Id//主键
@GeneratedValue(strategy=GenerationType.IDENTITY)//自增长
@Column(name="id")//字段名
private Integer id;
@Column(name="username")//字段名
private String username;
@Column(name="password")//字段名
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "Users [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
持久层
- UserRepository
package com.fuju.dao;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.Repository;
import com.fuju.po.Users;
/**
* 用户持久层
* @author Administrator
*
*/
public interface UserRepository extends Repository<Users, Integer>,JpaRepository<Users, Integer>{
@Query("from Users where username=? and password = ?")
List<Users> findByHQL(String username, String password);
}
业务逻辑层 接口及实现类
- UsersService
package com.fuju.service;
import com.fuju.po.Users;
public interface UsersService {
Users findByUsers(Users users);
}
package com.fuju.service;
import com.fuju.po.Users;
public interface UsersService {
Users findByUsers(Users users);
}
Controlller层(控制层)
- UsersController
package com.fuju.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.fuju.po.Users;
import com.fuju.service.UsersService;
@Controller
public class UsersController {
@Autowired
private UsersService usersService;
@RequestMapping("/login")
@ResponseBody
public String login(Users users) {
Users user = usersService.findByUsers(users);
if(user!=null) {
user.setPassword("");
session.setAttribute("user", user);
return "1";
}else {
return "0";
}
}
}
- PageController
package com.fuju.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class PageController {
/**
* 显示首页
* @return
*/
@RequestMapping("/{page}")
public String showInfo(@PathVariable String page) {
return page;
}
}
测试类
- UsersRepositoryTest
package com.fuju.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.fuju.App;
import com.fuju.dao.UserRepository;
import com.fuju.po.Users;
import com.fuju.service.UsersService;
/**
* 测试类
* @author Administrator
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=App.class)
public class UsersRepositoryTest {
@Autowired
private UsersService usersService;
@Autowired
private UserRepository userRepository;
@Test
public void testFindByUsers() {
Users users= new Users();
users.setUsername("admin");
users.setPassword("admin");
Users user= usersService.findByUsers(users);
System.out.println(user);
}
@Test
public void testSave() {
Users users=new Users();
users.setUsername("administrator");
users.setPassword("admin");
userRepository.save(users);
}
}
启动类
- App
package com.fuju;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
运行结果