帮我写一个spring通讯录系统
时间: 2023-08-28 11:33:00 浏览: 42
好的,我可以为您提供一个简单的基于Spring框架的通讯录系统,包括用户注册、登录、添加联系人、删除联系人、查询联系人等基本功能。以下是大致的步骤:
1. 创建Spring项目:使用Spring Initializr创建一个基本的Spring项目。
2. 设计数据库结构:根据项目需求,设计数据库的表结构。可以使用MySQL或其他关系型数据库。
3. 定义实体类:根据数据库表结构,定义Java实体类,并使用JPA进行ORM映射。
```java
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
// getter and setter
}
@Entity
@Table(name = "contacts")
public class Contact {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String phone;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
// getter and setter
}
```
4. 编写控制器:使用Spring MVC框架编写控制器,处理用户请求,并调用相应的服务进行业务处理。
```java
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/register")
public String register() {
return "register";
}
@PostMapping("/register")
public String register(User user) {
userService.register(user);
return "redirect:/login";
}
@GetMapping("/login")
public String login() {
return "login";
}
@PostMapping("/login")
public String login(User user, HttpSession session) {
User loginUser = userService.login(user);
session.setAttribute("user", loginUser);
return "redirect:/contacts";
}
@GetMapping("/logout")
public String logout(HttpSession session) {
session.invalidate();
return "redirect:/login";
}
}
@Controller
public class ContactController {
@Autowired
private ContactService contactService;
@GetMapping("/contacts")
public String contacts(Model model, HttpSession session) {
User user = (User) session.getAttribute("user");
List<Contact> contacts = contactService.getContactsByUserId(user.getId());
model.addAttribute("contacts", contacts);
return "contacts";
}
@GetMapping("/add-contact")
public String addContact() {
return "add-contact";
}
@PostMapping("/add-contact")
public String addContact(Contact contact, HttpSession session) {
User user = (User) session.getAttribute("user");
contact.setUser(user);
contactService.addContact(contact);
return "redirect:/contacts";
}
@GetMapping("/delete-contact/{id}")
public String deleteContact(@PathVariable Long id) {
contactService.deleteContact(id);
return "redirect:/contacts";
}
@GetMapping("/search-contact")
public String searchContact() {
return "search-contact";
}
@PostMapping("/search-contact")
public String searchContact(String keyword, Model model, HttpSession session) {
User user = (User) session.getAttribute("user");
List<Contact> contacts = contactService.searchContacts(keyword, user.getId());
model.addAttribute("contacts", contacts);
return "search-result";
}
}
```
5. 编写服务层:编写服务层代码,实现业务逻辑,例如添加联系人、删除联系人、查询联系人等。
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public void register(User user) {
userRepository.save(user);
}
public User login(User user) {
User loginUser = userRepository.findByUsername(user.getUsername());
if (loginUser == null || !loginUser.getPassword().equals(user.getPassword())) {
throw new RuntimeException("用户名或密码错误!");
}
return loginUser;
}
}
@Service
public class ContactService {
@Autowired
private ContactRepository contactRepository;
public List<Contact> getContactsByUserId(Long userId) {
return contactRepository.findByUserId(userId);
}
public void addContact(Contact contact) {
contactRepository.save(contact);
}
public void deleteContact(Long id) {
contactRepository.deleteById(id);
}
public List<Contact> searchContacts(String keyword, Long userId) {
return contactRepository.findByNameContainingAndUserId(keyword, userId);
}
}
```
6. 编写DAO层:使用JPA进行数据的持久化。
```java
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
public interface ContactRepository extends JpaRepository<Contact, Long> {
List<Contact> findByUserId(Long userId);
void deleteById(Long id);
List<Contact> findByNameContainingAndUserId(String name, Long userId);
}
```
7. 编写视图:使用HTML、CSS、JavaScript等技术,编写前端视图,实现用户界面的展示和交互。
8. 测试与部署:完成代码编写后,进行测试,解决问题,最后部署到服务器上。
以上是一个简单的基于Spring框架的通讯录系统,您可以根据实际需求进行调整和完善。