Java从零单排 -- web

160 阅读3分钟

上一章节,我们通过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,我们的项目就启动了。启动后我们能在控制台看到下图。 tomcat 现在我们在浏览器输入地址 http://localhost:8080/ 看到下图表示我们的项目已经变成了一个web服务,可以提供给外界访问,在局域网内其他电脑只要输入ip:8080就能访问我们的项目了。 404 由于我们的没有编写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.每次修改代码,都要重新启动服务才能生效。