下载文件:
点击下载,(把student_upload_file的id传递回来,在数据库中找到url的记录,读取文件),读到内存中,通过内存的数据流,传递回前端页面,进行加载。
@RequestMapping(“downloadFile”)
//返回一个文件的流,通过字节数组来返回
public ResponseEntity<byte[]> downloadFile(int id, HttpServletRequest request) throws IOException {
//找到对应的记录
StudentUploadFile studentUploadFile=studentUploadFileDao.selectById(id);
//获取到url
String fileUrl=studentUploadFile.getFileUrl();
//转换成对象
File file=new File(fileUrl);
//让浏览器下载文件
HttpHeaders headers=new HttpHeaders();
//对fileName进行编码,解决下载时文件名的乱码问题。
String fileName=file.getName();
fileName= URLEncoder.encode(fileName,“UTF-8”);
//这里是配置下载时的文件名和后缀
headers.setContentDispositionFormData(“attachment”,fileName);
//设置响应的类型,如果不设置,有些浏览器不会启动文件下载的逻辑
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//读取文件,转换成字节数组
byte[] bytes = FileUtils.readFileToByteArray(file);
return new ResponseEntity<byte[]>(bytes,headers,HttpStatus.CREATED);
}
审核阶段任务:
@RequestMapping(“checkJieDuanTaskView”)
public String checkJieDuanTaskView(HttpServletRequest request){
/*
1.通过教师id,获取该教师所有学生的阶段任务 第一张表
2.遍历阶段任务,获取每个学生的id,然后查询学生姓名 第二张表
3.通过学生id,找到KetiRecord记录 第三张表
4.通过KetiRecord里的ketiId,找到对应的课题,获取课题名 第四张表
*/
//获取session中教师id
HttpSession session = request.getSession();
User user = (User) session.getAttribute(“user”);
//通过教师id查询这个教师管理的所有阶段性任务
List jieDuanTasks=jieDuanTaskDao.selectByTeacherId(user.getTeacherId());
//创建一个集合,存储结果
List result = new ArrayList();
for (JieDuanTask task:jieDuanTasks){
Student student = studentDao.selectById(task.getStudentId());
KetiRecord record=ketiRecordDao.selectByStudentId(student.getId());
//创建VO类,用于显示在页面上的信息
TaskVo vo = new TaskVo();
vo.setId(task.getId());
vo.setName(student.getName());
if (task.getStatus()==0) {
vo.setStatus(“未审核”);
}else if (task.getStatus()==1){
vo.setStatus(“通过”);
}else {
vo.setStatus(“不通过”);
}
vo.setDescription(task.getDescription());
//如果学生已经选课了
if (record!=null){
Keti keti=ketiDao.selectById(record.getKetiId());
vo.setKetiName(keti.getName());
}
result.add(vo);
}
//在页面显示数据
request.setAttribute(“list”,result);
//跳转页面
return “teacher/teacherCheckProgressNotification”;
}
```java
<%-- items:要进行迭代的集合。var:迭代参数的名称。
var:在迭代体中可以使用的变量的名称,用来表示每一个迭代变量。–%>
<c:forEach items="
l
i
s
t
"
v
a
r
=
"
v
o
"
>
<
t
r
>
<
t
d
>
{list}" var="vo"> <tr> <td>
list"var="vo"><tr><td>{vo.name}
v
o
.
k
e
t
i
N
a
m
e
<
/
t
d
>
<
t
d
>
{vo.ketiName}</td> <td>
vo.ketiName</td><td>{vo.description}
v
o
.
s
t
a
t
u
s
<
/
t
d
>
<
t
d
>
<
a
h
r
e
f
=
"
c
h
e
c
k
J
i
e
D
u
a
n
T
a
s
k
?
i
d
=
{vo.status}</td> <td> <a href="checkJieDuanTask?id=
vo.status</td><td><ahref="checkJieDuanTask?id={vo.id}&status=1">通过
未通过
</tr>
</c:forEach>
***审核状态:***
```java
@RequestMapping("checkJieDuanTask")
public String checkJieDuanTask(int id,int status){
jieDuanTaskDao.updateStatus(id,status);
return "redirect:checkJieDuanTaskView";
}