gpt4 book ai didi

java - 如何防止 Controller 方法在 Chrome 浏览器的 Spring Boot 中运行两次?

转载 作者:行者123 更新时间:2023-12-02 02:03:32 28 4
gpt4 key购买 nike

我使用 spring boot 和 postgresql 来保存表中的行并打印表行。我的问题是,所有 WebController 方法都被执行两次,但仅当我在 chrome 中打开 url 时执行。如果我在 Internet Explorer 中执行此操作,效果很好。如何在 Chrome 中停止此操作?

我放了四个文件的代码以供引用,尽管我认为代码中没有任何问题。我需要更改浏览器设置或其他设置吗?

用户.java

@Entity
@Table(name="users")
public class User implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@Column(name="name")
private String name;

@Column(name="email")
private String email;

public User(String name, String email) {
this.name = name;
this.email = email;
}

@Override
public String toString() {
return String.format("User[id=%d, name='%s', email='%s']",this.id,this.name,this.email);
}
}

UserRepository.java

public interface UserRepository extends JpaRepository<User, Long>{

}

WebController.java

@RestController 
public class WebController {

@Autowired
private UserRepository repository;

@GetMapping("home")
public String home() {
System.out.println("whaaat");
return "hi";
}

@GetMapping("/save")
public String process() {

repository.save(new User("vidhi","vd@gmail.com"));
System.out.print("apple ");
return "Done";
}

@RequestMapping("findall")
public String findAll() {
String result = "";

for(User u: repository.findAll()) {
result += u.toString() + "<br>";
}

return result;
}

}

应用程序属性

spring.datasource.url=jdbc:postgresql://localhost:5432/test
spring.datasource.username=postgres
spring.datasource.password=
spring.jpa.generate-ddl=true
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false

我知道这些方法运行了两次,因为表中的行被双重添加,并且“whaaat”在控制台中打印了两次,但仅在 chrome 中打印。任何帮助都会很棒。

感谢您的宝贵时间。

最佳答案

首先。尝试 Chrome 开发者工具中的“网络”选项卡(尝试 F12 按钮)来确定实际发送了多少请求。 enter image description here

第二。在“GET”请求中保存任何数据通常不是一个好主意,因为它的语义,浏览器不期望服务器端发生更改,并且可以多次调用请求(无法为此生成用例,但这完全是不禁止浏览器这样做)或从缓存中获取它。

关于java - 如何防止 Controller 方法在 Chrome 浏览器的 Spring Boot 中运行两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57365430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com