Проблема со страницей refre sh и повторной вставкой тех же данных - PullRequest
0 голосов
/ 26 мая 2020

im new в java spring, и я создаю форму html, и когда я нажимаю кнопку, данные вставляются в базу данных. Но после вставки, когда я обновляю страницу sh, данные автоматически вставляются снова. Пожалуйста, помогите мне это исправить. Сначала я использовал метод get, но я изменил его на post и сделал другой метод get, который возвращает ту же страницу, и теперь у меня есть один метод get и один метод post в контроллере. Где-то я читал, что когда я обновляю sh страницу, вызывается метод get. И теперь, когда я меняю методы, когда я обновляю страницу sh, браузер показывает мне это сообщение и сообщает, что данные будут отправлены повторно. Как исправить, чтобы он только обновлял sh страницу без повторной отправки данных

Это сообщение enter image description here

Это мой html

<form th:method="post" th:action="@{/CreateAccount}">
<div class="ContainerCreateAccountLeft">

   <input type="text" id="firstName" th:name="firstName" th:value="${firstName}" placeholder="First name">
      <input type="text" id="secondName" th:name="secondName" th:value="${secondName}" placeholder="Surname">
      <input type="text" id="lastName" th:name="lastName" th:value="${lastName}" placeholder="Family name">
      <input type="text" id="address" th:name="address" th:value="${address}" placeholder="Address">
</div>
<div class="ContainerCreateAccountRight">
   <input type="text" id="username" th:name="username" th:value="${username}" placeholder="Username">
      <input type="text" id="password" th:name="password" th:value="${password}" placeholder="Password">
      <input type="text" id="repeatPassword" th:name="repeatPassword" th:value="${repeatPassword}" placeholder="Repeat password">
      <input type="text" id="email" th:name="email"th:value="${email}"  placeholder="email">
</div>
<div class="ContainerCreateButton">
   <button class="button button1" type="submit">Create</button>
</div>
</form>

Это мой контроллер

@Controller
public class CreateAccountController {

    @PostMapping("/CreateAccount")

    public String login(
            @RequestParam(value = "firstName", required = false) String firstName,
            @RequestParam(value = "secondName", required = false) String secondName,
            @RequestParam(value = "lastName", required = false) String lastName,
            @RequestParam(value = "address", required = false) String address,
            @RequestParam(value = "username", required = false) String username,
            @RequestParam(value = "password", required = false) String password,
            @RequestParam(value = "repeatPassword", required = false) String repeatPassword,
            @RequestParam(value = "email", required = false) String email,
            Model model,
            HttpServletRequest request
    ) throws SQLException, NamingException {
        HttpSession mySession = request.getSession();


        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        dataSource.setUsername("mssqllogin");
        dataSource.setPassword("mssqllogin$");
        dataSource.setUrl("jdbc:sqlserver://localhost\\SQLEXPRESS:1433;databaseName=AdminToolWeb");
        Connection connection = dataSource.getConnection();

        Employee emp = new Employee(0,firstName, secondName, lastName, address, username, password, repeatPassword, email);



        try {
            EncryptPasswords td = new EncryptPasswords();
            emp.setPassword(td.encrypt(emp.getPassword()));
            emp.setRepeatPassword(td.encrypt(emp.getRepeatPassword()));
            Connection connection2 = dataSource.getConnection();
            PreparedStatement st = connection2.prepareStatement(
                    "INSERT INTO Employees (FirstName_DB, Surname_DB, FamilyName_DB, Address_DB, Username_DB, Password_DB, RepeatPassword_DB, Email_DB) VALUES (?,?,?,?,?,?,?,?)");
            st.setString(1, emp.getFirstName());
            st.setString(2, emp.getSurname());
            st.setString(3, emp.getFamilyName());
            st.setString(4, emp.getAddress());
            st.setString(5, emp.getUsername());
            st.setString(6, emp.getPassword());
            st.setString(7, emp.getRepeatPassword());
            st.setString(8, emp.getEmail());
            st.executeQuery();
            st.close();
            connection2.close();
        } catch (Exception e) {

        }
        return "CreateAccount";
    }

   @GetMapping("/CreateAccount")
   public Sting login(Model model) {
      return "CreateAccount";
   }
}
...