tips:数据库用的是MySQL,编辑器是Intellij,具体两个东西怎么安装请左转Google。
需要JAVA基础知识,SQL数据库基础知识
很多地方具体原理我也不是很清楚,记录下来只是防止自己忘了。本文属于入门入门入门级别笔记,仅仅是自学笔记,轻弹勿喷,仅仅完成了最基础的前后端通信。
养成一个好习惯:三层架构
image-
界面层 controller
文件命名规则example: MainController.java
-
业务逻辑层 service
文件命名规则example: StudentService.java
-
数据层 dao
文件命名规则example: StudentDao.java
model层用于存放数据库对应的mapped
`文件命名规则example: Student.java`
Intellij新建项目实践
新建Spring Boot + Jpa项目
-
Spring项目
image -
修改项目名称
image -
添加web依赖
image -
添加SQL依赖:MySQL,JPA,JDBC
image -
选择项目存放地址
image
配置
- 当前目录状态
我们只需要关注框框内的就好了。
com.example.test存放的是java代码,resource.static下存放静态文件
- 在.com.example.text下构建三层架构目录
- resourece目录下的application.properties重命名为application.yml
- 编辑application.yml,添加如下代码。
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/javaweb
username: root
password: root
jpa:
properties:
hibernate:
hbm2ddl:
auto: update
show-sql: true
datasource
下的driver-class-name
属性标注使用了jdbc驱动。
url
属性为数据库地址,我这里是本地数据库,最后的/javaweb
为数据库名称。
jpa
下的auto
表示有表的话修改表
model下建立student表的实体类
在model目录下新建一个Student类,里面的get和set方法可以用快捷键Alt+Ins
调出Generate
选择Getter and Setter
。
类上面一定要加@Entity
,才能声明为实体
package com.example.classcommunity3.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
//实体
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long sid;
private String saccount;
private String spassword;
private String sname;
public Long getSid() {
return sid;
}
public void setSid(Long sid) {
this.sid = sid;
}
public String getSaccount() {
return scount;
}
public void setSaccount(String scount) {
this.scount = scount;
}
public String getSpassword() {
return spassword;
}
public void setSpassword(String spassword) {
this.spassword = spassword;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
}
dao下建立Student表对应的数据层
dao目录下新建一个类StudentDao
package com.example.classcommunity3.dao;
import com.example.classcommunity3.model.Student;
import org.springframework.data.jpa.repository.JpaRepository;
public interface StudentDao extends JpaRepository<Student, Long> {
}
添加第一个数据库操作:获取Student表中的account
public interface StudentDao extends JpaRepository<Student, Long> {
Student findByScount(String count);
}
在Intellij中输入findBy
就会自动弹出许多函数,这些都是JPA根据刚才的Student表实体自动生成的。
service目录下建立业务层类
service目录下新建StudentService类,我们现在要实现的是判断页面输入的密码和数据库中的是否一致。需要建立StudentDao
的对象,查找到的数据会以List<Student>
的格式输出。我们这里只查询1组数据,所以直接用Student
对象接受赋值。
package com.example.classcommunity3.service;
import com.example.classcommunity3.dao.StudentDao;
import com.example.classcommunity3.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
//业务逻辑
@Service
@RequestMapping
public class StudentService {
@Autowired
StudentDao studentDao; //数据操作
public boolean login(String name, String psw) {
Student student = studentDao.findByScount(name);
if (student != null) {
System.out.print(student.getSpassword());
if (psw.equals(student.getSpassword()))
return true;
}
return false;
}
}
controller目录下新建界面层类
controller目录下新建MainController类,有如下代码,从页面中获取name和psw,并传值到service。
package com.example.classcommunity3.controller;
import com.example.classcommunity3.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
@Autowired
StudentService studentService;
@RequestMapping("/login")
public boolean login(String name,String psw){
return studentService.login(name,psw);
}
}
再贴一个HTML与Java通信的代码
Login.html
<script>
$("#login").click(function () {
var name=$('#count').val();
var psw = $('#psw').val();
alert(name);
$.ajax({
url:'/login',
type:'post',
data:{name:name,psw:psw},
dataType:'json',
success:function (result) {
if(result)
alert('成功');
else
alert('失败');
}
});
})
</script>
学习总结:Web刚开始最头疼的就是入门的问题,很多东西不知道,前后端如何通信不知道。仅此文用来记录一下学习过程。
网友评论