В моем проекте N-номер пользователя доступен. Каждый пользователь может сделать вставку обновления удаленного списка данных. У каждого пользователя разные данные. Предположим, у одного пользователя 10 записей, у другого пользователя 20 записей, у 3-го пользователя 15 записей и т. д.
Я попытался сделать так, чтобы несколько пользователей могли зарегистрироваться и войти в мое приложение, указав первого пользователя на стороне. запись и отображение, а затем выход из системы. Я снова войду в систему с другим пользователем, после чего отобразятся те же данные, которые были вставлены предыдущим пользователем. Так что моя проблема заключается в том, как сохранить все пользовательские данные под своей учетной записью. Я новичок в весенней загрузке с hibernate, jsp.
1.Usercontroller.java
package com.rajesh.controller;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.rajesh.model.User;
import com.rajesh.service.UserService;
@Controller
public class UserController {
private final Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired
private UserService userService;
@GetMapping("/")
public String Home(Model model) {
return "home";
}
@PostMapping("/user/register")
public String registerNewUser(ModelMap model, @ModelAttribute("userRegister")@Valid User user, BindingResult bindingResult) {
User userExists = userService.findUserByEmail(user.getEmail());
if (userExists != null) {
bindingResult
.rejectValue("email", "error.user",
"There is already a user registered with the email provided");
model.addAttribute("msgEmail", "your email is already registered");
logger.info("your email Id is already registered");
System.out.println("your email is already registered");
return "home";
} else {
userService.saveUser(user);
model.addAttribute("successMessage", "User has been registered successfully");
logger.info("User has been registered successfully");
System.out.println("User has been registered successfully");
return "home";
}
}
@PostMapping("/user/login")
public String doLogin(ModelMap model, @ModelAttribute("command")User user, HttpSession session) {
if(userService.loginUser(user.getEmail(), user.getPassword()) != null) {
session.setAttribute("email",user.getEmail());
session.setAttribute("user_id", user.getId());
model.addAttribute("sucessLogin", "You are login sucessfully");
logger.info("You are login sucessfully",user.getEmail());
System.out.println("You are login sucessfully "+ user.getEmail());
return "redirect:userdashboard";
}else {
System.out.println("Invalid Email/Password");
logger.error("Invalid Email/Password");
model.put("failed", "Invalid Email/Password");
return "home";
}
}
@PostMapping("/user/checkstatus")
@ResponseBody
public Integer checkUserStatus(String email, ModelMap model, @ModelAttribute("command")User user, HttpSession session) {
int userStatus = userService.isActiveUserStatus(email);
System.out.println(userStatus);
if(userStatus != 0) {
System.out.println(userStatus);
return userStatus;
}else {
System.out.println(userStatus);
return userStatus;
}
}
@GetMapping("/logout")
public String doLogout(ModelMap model, @ModelAttribute("command")User user, HttpSession session) {
session.removeAttribute("email");
logger.info("you are logout successfully");
return "home";
}
}
User.java
package com.rajesh.model;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import org.hibernate.validator.constraints.Length;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Rajesh Bhushan
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "users")
public class User extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private int id;
@Column(name="shopname")
@Length(min = 3, message = "*Your shopname must have at least 3 characters")
@NotEmpty(message = "*Please provide an shopname")
private String shopname;
@Column(name="name")
@Length(min = 3, message = "*Your name must have at least 3 characters")
@NotEmpty(message = "*Please provide an name")
private String name;
@Column(name="address")
@Length(min = 3, message = "*Your address must have at least 3 characters")
@NotEmpty(message = "*Please provide an address")
private String address;
@Column(name="mobile")
@NotEmpty(message = "*Please provide an address")
private String mobile;
@Column(name = "email")
@Email(message = "*Please provide a valid Email")
@NotEmpty(message = "*Please provide an email")
private String email;
@Column(name = "password")
@NotEmpty(message = "*Please provide your password")
private String password;
@Column(name="active")
private int active;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getShopname() {
return shopname;
}
public void setShopname(String shopname) {
this.shopname = shopname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getActive() {
return active;
}
public void setActive(int active) {
this.active = active;
}
public Set<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
}
UserRepository.java
package com.rajesh.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import com.rajesh.model.User;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
public User findByEmail(String email);
@Query("from User as u where u.email=:email and u.password=:password")
public User loginUser(String email,String password);
@Query("select active from User as u where u.email=:email")
public Integer isActiveUserStatus(String email);
}
4.UserService.java
package com.rajesh.service;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.rajesh.model.Role;
import com.rajesh.model.User;
import com.rajesh.repository.RoleRepository;
import com.rajesh.repository.UserRepository;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Autowired
private RoleRepository roleRepository;
public User findUserByEmail(String email) {
return userRepository.findByEmail(email);
}
public void saveUser(User user) {
user.setShopname(user.getShopname());
user.setName(user.getName());
user.setEmail(user.getEmail());
user.setPassword(user.getPassword());
user.setMobile(user.getMobile());
user.setAddress(user.getAddress());
user.setActive(0);
user.setCreatedBy(user.getName());
user.setCreatedDate(new Date());
user.setUpdatedBy(user.getName());
user.setUpdatedDate(new Date());
Role userRole = roleRepository.findByRole("USER");
user.setRoles(new HashSet<Role>(Arrays.asList(userRole)));
userRepository.save(user);
}
public User loginUser(String email,String password) {
return userRepository.loginUser(email, password);
}
public Integer isActiveUserStatus(String email) {
Integer activeStatus = userRepository.isActiveUserStatus(email);
return activeStatus;
}
}