String strPageNumb = req.getParameter(“pageNumb”);
Integer pageNumb = 1;
if (!StringUtils.isEmpty(strPageNumb) && NumberUtils.isDigits(strPageNumb)) {
pageNumb = Integer.valueOf(strPageNumb);
}
PageInfo pager = courseService.queryList(pageNumb, PAGE_SIZE, courseName, cid, min, max);
List categoryList = categoryService.queryList();
req.setAttribute(“courseName”, courseName);
req.setAttribute(“cid”, cid);
req.setAttribute(“min”, min);
req.setAttribute(“max”, max);
req.setAttribute(“categoryList”, categoryList);
req.setAttribute(“pager”, pager);
req.getRequestDispatcher(“/WEB-INF/list.jsp”)
.forward(req, resp);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void add(HttpServletRequest req, HttpServletResponse resp) {
try {
List categoryList = categoryService.queryList();
req.setAttribute(“categoryList”, categoryList);
req.getRequestDispatcher(“/WEB-INF/add.jsp”)
.forward(req, resp);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void edit(HttpServletRequest req, HttpServletResponse resp) {
try {
String id = req.getParameter(“id”);
Course course = courseService.getById(id);
List categoryList = categoryService.queryList();
req.setAttribute(“categoryList”, categoryList);
req.setAttribute(“course”, course);
req.getRequestDispatcher(“/WEB-INF/edit.jsp”)
.forward(req, resp);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
FileUploadUtils
文件工具上传类,该类封装了上传文件方法
public class FileUploadUtils extends HttpServlet{
/**
-
@param basePath 用户指定的上传目录
-
@return 返回上传之后的文件名称
-
@throws FileUploadException
*/
public static String upload(String basePath,HttpServletRequest req) throws Exception{
//1. 先上传文件,并返回上传的文件名称,便于将来通过名字找到该文件
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(factory);
//将request请求的内容解析成List集合 {input[type=file],input[type=text],}
List list = fileUpload.parseRequest(req);
String dbpath = “”;
for(FileItem item:list){
if(item.isFormField()){
//普通的文本框:
String fieldName = item.getFieldName(); //获取字段名 username\route_id
String fieldValue = item.getString(“UTF-8”);//获取字段值 张三丰
req.setAttribute(fieldName, fieldValue);
}else{
//文件上传框
//1. 获取文件输入流
InputStream input = item.getInputStream();
if(input.available() > 0){
//2. 获取文件输出流
//String basePath = “D:/uploads/”;
//确定目标文件名
String destFileName = UUID.randomUUID().toString().replace(“-”, “”);
//确定目标文件后缀:.png .jpg .gif
String originName = item.getName();
String suffix = originName.substring(originName.lastIndexOf(“.”));
//保存到数据库中的相对路径
dbpath = destFileName+suffix;
//如果当前文件的父级目录不存在,则创建
File destFile = new File(basePath+dbpath);
if(!destFile.getParentFile().isDirectory()){
destFile.getParentFile().mkdirs();
}
//创建文件输出流
FileOutputStream output = new FileOutputStream(destFile);
//3. 开始读写(上传、拷贝)
byte[] arr = new byte[1024];
int res = 0;
while( (res = input.read(arr)) > 0){
output.write(arr, 0, res);
}
//关闭资源
input.close();
output.close();
}
}
}
return dbpath; // 返回文件名称
}
}
前端部分代码
list.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%
request.setAttribute(“APP_PATH”, request.getContextPath());
%>
课程列表
<c:forEach items=“${categoryList }” var=“cat”>
</c:forEach>
-
<c:forEach items=“${pager.courseList }” var=“course”>
${course.id }
${course.course_name }
${course.cat_name }
${course.lesson_nums }
${course.price }
${course.buy_count }
${course.view_count }
<c:if test=“${course.status == 0 }”>已下架</c:if>
<c:if test=“${course.status == 1 }”>已上架</c:if>
</c:forEach>
上一页
<c:forEach begin=“1” end=“${pager.pageCount }” var=“i”>
</c:forEach>
下一页
共 p a g e r . t o t a l 条记录,分 {pager.total}条记录,分 pager.total条记录,分{pager.pageCount}页显示
add.jsp
注意:form表单需加 enctype=“multipart/form-data”
将表单设置为支持图片上传
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
<%
request.setAttribute(“APP_PATH”, request.getContextPath());
%>
添加课程
enctype=“multipart/form-data”>
<c:forEach items=“${categoryList }” var=“cat”>
${cat.cat_name }</c:forEach>
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
er">课程封面图:
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-KwSi1G6d-1715352520733)]
[外链图片转存中…(img-Myrgeibn-1715352520733)]
[外链图片转存中…(img-FhWDruHc-1715352520733)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!