Всем привет я уже две недели голову ломаю, буду очень благодарен если поможете. Я почти закончил проект, осталось последнею функцию добавить. Мой проект позволяет на JSP странице студенту добавлять имя и фамилию и выводить его вместе с остальными студентами в таблице + она хранит все данные в моей базе данных MySQL. Так вот я не могу написать код, который позволит каждому студенту добавить аватарку и добавленная аватарка вместе с ФИО должна высветится в таблице(allStudents) после добавления. Я написал вWeb-MVC-Config код для Multiple, но не могу написать код для добавления в "Student Controlller". Пожалуйста помогите
Student Controller
Код:
package fallen.java.schoolmaven.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import fallen.java.schoolmaven.entity.Student;
import fallen.java.schoolmaven.service.StudentService;
@Controller
public class StudentController {
// Constructor based Dependency Injection
private StudentService studentService;
public StudentController() {
}
@Autowired
public StudentController(StudentService studentService) {
this.studentService = studentService;
}
@RequestMapping(value = { "/", "/index" }, method = RequestMethod.GET)
public ModelAndView hello(HttpServletResponse response) throws IOException {
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
return mv;
}
// Get All Users
@RequestMapping(value = "/allStudents", method = {RequestMethod.GET, RequestMethod.POST})
public ModelAndView displayAllUser() {
System.out.println("User Page Requested : All Students");
ModelAndView mv = new ModelAndView();
List<Student> studentList = studentService.getAllStudents();
mv.addObject("studentList", studentList);
mv.setViewName("allStudents");
return mv;
}
@RequestMapping(value = "/addStudent", method = RequestMethod.GET)
public ModelAndView displayNewUserForm() {
ModelAndView mv = new ModelAndView("addStudent");
mv.addObject("headerMessage", "Add Student Details");
mv.addObject("student", new Student());
return mv;
}
@RequestMapping(value = "/addStudent", method = RequestMethod.POST)
public ModelAndView saveNewStudent(@ModelAttribute Student student, BindingResult result) {
ModelAndView mv = new ModelAndView("redirect:/allStudents");
if (result.hasErrors()) {
return new ModelAndView("error");
}
boolean isAdded = studentService.saveStudent(student);
if (isAdded) {
mv.addObject("message", "New student successfully added");
} else {
return new ModelAndView("error");
}
return mv;
}
@RequestMapping(value = "/editStudent/{id}", method = RequestMethod.GET)
public ModelAndView displayEditUserForm(@PathVariable Long id) {
ModelAndView mv = new ModelAndView("/editStudent");
Student student = studentService.getStudentById(id);
mv.addObject("headerMessage", "Редактирование студента");
mv.addObject("student", student);
return mv;
}
@RequestMapping(value = "/editStudent/{id}", method = RequestMethod.POST)
public ModelAndView saveEditedUser(@ModelAttribute Student student, BindingResult result) {
ModelAndView mv = new ModelAndView("redirect:/allStudents");
if (result.hasErrors()) {
System.out.println(result.toString());
return new ModelAndView("error");
}
boolean isSaved = studentService.saveStudent(student);
if (!isSaved) {
return new ModelAndView("error");
}
return mv;
}
@RequestMapping(value = "/deleteStudent/{id}", method = RequestMethod.GET)
public ModelAndView deleteUserById(@PathVariable Long id) {
boolean isDeleted = studentService.deleteStudentById(id);
System.out.println("Удаление студента: " + isDeleted);
ModelAndView mv = new ModelAndView("redirect:/allStudents");
return mv;
}
}
Класс Student
Код:
package fallen.java.schoolmaven.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import org.springframework.web.multipart.MultipartFile;
@Entity
@Table(name = "student")
public class Student implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
private String surname;
private MultipartFile avatar;
@Lob
@Column(name = "avatar", columnDefinition="BLOB")
private byte[] avatar;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", surname=" + surname + ", avatar=" + avatar + "]";
}
}
AddStudent JSP
Код:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<title>Home</title>
</head>
<body>
<div class="add">
<br>
<br>
<br>
<br>
<center>
<h1>${headerMessage}</h1>
<form:form method="POST" action="addStudent" modelAttribute="student" >
<table>
<tr>
<td><form:label path="Name">Имя</form:label></td>
<td><form:input path="Name"/></td>
</tr>
<tr>
<td><form:label path="Surname">Фамилия</form:label></td>
<td><form:input path="Surname"/></td>
</tr>
<tr>
<td>Фотография:</td>
<td><form:input type="file" path="avatar" /></td>
</tr>
<tr>
<td><input class="btn btn-primary" type="submit" value="Добавить"></td>
</tr>
</table>
</form:form>
</center>
</div>
</body>
</html>