上一章节,我们通过test类成功访问数据库,这章节我们将通过浏览器来操作数据库。
web
延续上一章的项目,在pom.xml中增加web依赖,点击idea maven同步功能即可下载依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
增加web依赖后,打开java下的MyFirstMavenApplication,该类是启动springboot的入口,在该类中有一个main方法,右键run ->MyFirstMavenApplication,我们的项目就启动了。启动后我们能在控制台看到下图。
现在我们在浏览器输入地址
http://localhost:8080/ 看到下图表示我们的项目已经变成了一个web服务,可以提供给外界访问,在局域网内其他电脑只要输入ip:8080就能访问我们的项目了。
由于我们的没有编写web接口所以会出现上面的页面,接着我们开始编写web接口。
web接口
首先我们在com.example.myFirstMaven包创建一个新的包controller,在此包创建一个PersonController类
@RestController//将此类声明为web接口
@RequestMapping("person")//路径前缀
public class PersonController {
@GetMapping("index")//声明get请求 浏览器访问地址:http://localhost:8080/person/index
public String index(){
//返回给浏览器的信息
return "person index";
}
}
浏览器访问地址:http://localhost:8080/person/index 会看到我们person index这一段字符串
创建了controller包,我们还是在com.example.myFirstMaven包下创建一个新的包service,这个包意义表示我们会所以的逻辑都编写在此包下,在service下创建一个PersonService接口和一个impl的包,然后在impl下创建一个PersonServiceImpl的类,此类要实现PersonService接口。

public interface PersonService {
//获取所有
List<Person> getList();
//插入一条数据
void addPerson(Person person);
//删除数据
void deletePerson(Person person);
//更新数据
void updatePerson(Person person);
}
@Service//声明一个service实现类
public class PersonServiceImpl implements PersonService {
@Autowired
private PersonDao personDao;
@Override
public List<Person> getList() {
return personDao.getList();
}
@Override
@Transactional
public void addPerson(Person person) {
personDao.addPerson(person);
}
@Override
@Transactional
public void deletePerson(Person person) {
personDao.deletePerson(person);
}
@Override
@Transactional
public void updatePerson(Person person) {
personDao.updatePerson(person);
}
}
@Transactional 表示事务是由spring 管理的,我们需要收到begin transaction &commit
还需要在MyFirstMavenApplication增加 @EnableTransactionManagement,表示只要有@Transactional注解的方法,其事务都会交给spring管理。
@SpringBootApplication
@EnableTransactionManagement
public class MyFirstMavenApplication {
public static void main(String[] args) {
SpringApplication.run(MyFirstMavenApplication.class, args);
}
}
编写完service,我们再回到controller
@RestController//将此类声明为web接口
@RequestMapping("person")//路径前缀
public class PersonController {
@Autowired
private PersonService personService;
@GetMapping("index")//声明get请求 浏览器访问地址:http://localhost:8080/person/index
public String index() {
//返回给浏览器的信息
return "person index";
}
@GetMapping("list")//声明get请求 浏览器访问地址:http://localhost:8080/person/list
public List<Person> getList() {
//返回给浏览器的信息
return personService.getList();
}
@GetMapping("add")//声明get请求 浏览器访问地址:http://localhost:8080/person/add
public String add(Person person) {
//返回给浏览器的信息
personService.addPerson(person);
return "ok";
}
}
浏览器访问地址:http://localhost:8080/person/list 我们就能等到所有的数据
[{"id":1,"name":"小金","age":18,"nationality":"中国"},{"id":2,"name":"小红","age":21,"nationality":"中国"},{"id":3,"name":"小黑","age":22,"nationality":"美国"}]
浏览器访问地址:http://localhost:8080/person/add 需要带上参数,不然会出错的。
http://localhost:8080/person/add?name=小红&age=22&nationality=美国 这样数据就能插入数据了。
细节
1.web接口必须要有放回值,如果返回值不是String类型,会在返回给浏览器的时候自动转为字符串。 2.浏览器输入的地址必须要跟web接口路径一直,不然就会出现404错误 3.web接口参数,spring mvc会将接口参数自动封装为对应实体,所有参数的字段必须要与实体字段一致。 4.spring mvc是spring框架中赋予spring提供web服务的框架,@RestController其实是spring mvc的注解。 5.每次修改代码,都要重新启动服务才能生效。