基于javaweb+mysql的jsp+servlet美食菜谱分享平台(java+servlet+mysql+jsp)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的JSP+Servlet美食菜谱分享平台(java+servlet+mysql+jsp)
启动前先修改上传路径为项目编译后的目录:
yjf.psyd.servlet.CreateRecipeServlet.path
首页:
http://localhost:8080/index
登录:
user1 123456
user2 123456
user3 123456
搜索、查看、收藏、创建菜谱等
// 设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
// 获取操作符
String oper = req.getParameter("oper");
if ("register".equals(oper)) {
// 调用注册方法
userRegister(req, resp);
} else if ("login".equals(oper)) {
// 调用登录方法
checkUserLogin(req, resp);
} else if ("out".equals(oper)) {
// 调用退出方法
userOut(req, resp);
} else if ("checkUserName".equals(oper)) {
// 调用验证用用户名是否存在方法
checkUserName(req, resp);
} else {
System.out.println("没有找到对应的操作符:" + oper);
}
}
// 利用ajax请求验证用户名是否存在
private void checkUserName(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 获取请求信息
String username = req.getParameter("username");
// 处理请求信息
UserService us = new UserServiceImpl();
boolean isExist = us.checkUserNameService(username);
// 响应请求结果
if (isExist) {
resp.getWriter().write("{\"valid\":false}");
} else {
resp.getWriter().write("{\"valid\":true}");
}
}
// 处理用户注册
private void userRegister(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 获取请求信息
String createDate = null;
String username = req.getParameter("username");
String password = req.getParameter("password");
// 获取系统当前日期
Date dateNow = new Date(System.currentTimeMillis());
createDate = dateNow.toString();
// 处理请求信息
// 获取service层对象
UserService us = new UserServiceImpl();
int index = us.userRegisterService(createDate, username, password);
// System.out.println(index);
// 检查前台表单form是否有multipart
if (ServletFileUpload.isMultipartContent(req)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
// 通过parseRequest解析form中的所有请求字段,并保存到items集合中
List<FileItem> items = null;
try {
items = upload.parseRequest(req);
} catch (FileUploadException e1) {
e1.printStackTrace();
}
// 遍历List中的数据
// Iterator<FileItem> iter = items.iterator();
// while (iter.hasNext()) {
// FileItem item = iter.next();
for (FileItem item : items) {
String itemName = item.getFieldName();
// 判断前台字段是普通form表单字段,还是文件字段
if (item.isFormField()) {
// 普通上传
if (itemName.equals("recTitle")) {
title = item.getString("utf-8");
} else if (itemName.equals("recInfo")) {
info = item.getString("utf-8");
} else if (itemName.equals("recMaterial")) {
material = item.getString("utf-8");
} else if (itemName.equals("recCategory")) {
categorys.add(item.getString("utf-8"));
} else {
if (!"".equals(item.getString("utf-8"))) {
stepInfos.add(item.getString("utf-8"));
} else {
stepInfos.add("");
}
}
} else {
// 文件上传
String fileName = item.getName();
// 判断文件名是否为不为空
}
@WebServlet("/recipeDetail")
public class RecipeDetailServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RecipeDetailServlet() {
super();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1、获取请求信息
String recipeId = req.getParameter("recipeId");
// 获取session对象,用session判断是否收藏
HttpSession hs = req.getSession();
// 把session中的值传到user对象中
User user = (User) hs.getAttribute("user");
// 2、处理请求信息
RecipeService rs = new RecipeServiceImpl();
Recipe r = rs.recipeDetailService(recipeId, user);
// 3、响应请求结果
req.setAttribute("recipe", r);
// 输出r
// System.out.println(r);
// 请求转发
req.getRequestDispatcher("/recipeStepRetail").forward(req, resp);
return;
}
@WebServlet("/createRecipe")
public class CreateRecipeServlet extends HttpServlet {
public static String rootPath = "C:\\Users\\Administrator\\Desktop\\361723322209\\project\\out\\artifacts\\project_Web_exploded\\upload\\";
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CreateRecipeServlet() {
super();
}
// 处理创建菜谱
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("地址改为这个:");
System.out.println("地址改为这个:");
System.out.println("地址改为这个:");
System.out.println("地址改为这个:");
System.out.println(req.getRealPath("/upload"));
// 设置请求编码格式
req.setCharacterEncoding("utf-8");
// 设置响应编码格式
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// 1、获取请求信息
String createDate = null;
String title = null;
String info = null;
String material = null;
List<String> stepInfos = new LinkedList<>();
List<String> categorys = new LinkedList<>();
String coverFilePath = null;
List<File> stepFiles = new LinkedList<>();
List<String> stepFilesPath = new LinkedList<>();
* @see HttpServlet#HttpServlet()
*/
public CreateRecipeServlet() {
super();
}
// 处理创建菜谱
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("地址改为这个:");
System.out.println("地址改为这个:");
System.out.println("地址改为这个:");
System.out.println("地址改为这个:");
System.out.println(req.getRealPath("/upload"));
// 设置请求编码格式
req.setCharacterEncoding("utf-8");
// 设置响应编码格式
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// 1、获取请求信息
String createDate = null;
String title = null;
String info = null;
String material = null;
List<String> stepInfos = new LinkedList<>();
List<String> categorys = new LinkedList<>();
String coverFilePath = null;
List<File> stepFiles = new LinkedList<>();
List<String> stepFilesPath = new LinkedList<>();
User user = null;
// 获取系统当前日期
Date dateNow = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
createDate = dateFormat.format(dateNow);
// System.out.println(createDate);
// 检查前台表单form是否有multipart
if (ServletFileUpload.isMultipartContent(req)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
// 通过parseRequest解析form中的所有请求字段,并保存到items集合中
List<FileItem> items = null;
try {
items = upload.parseRequest(req);
} catch (FileUploadException e1) {
e1.printStackTrace();
}
// 遍历List中的数据
// Iterator<FileItem> iter = items.iterator();
@WebServlet("/recipeCategory")
public class RecipeCategoryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public RecipeCategoryServlet() {
super();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1、接收请求信息
String item = req.getParameter("item");
String categoryName = req.getParameter("categoryName");
// 菜谱动态分页请求
String categoryCP = req.getParameter("categoryCurrentPage");
if (categoryCP == null) {
categoryCP = "1";
}
int categoryCp = Integer.parseInt(categoryCP);
// 设置网页大小
int pageSize = 8;
// 2、处理请求信息
PageService pages = new PageServiceImpl();
CategoryPage cp = new CategoryPage();
cp = pages.categoryPageService(item, categoryCp);
// 加入分页信息
cp.setItem(item);
cp.setCategoryName(categoryName);
cp.setPageSize(pageSize);
cp.setCurrentPage(categoryCp);
// 3、请求响应结果
req.setAttribute("categoryp", cp);
// 转发
req.getRequestDispatcher("/categoryList.jsp").forward(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
@WebServlet("/homePage")
public class HomePageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HomePageServlet() {
super();
}
// 处理个人中心信息的请求功能
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1、获取请求信息
String userId = req.getParameter("userId");
// li为个人中心首页标签页索引
String li = req.getParameter("li");
if(li==null) {
li = "1";
}
int Li = Integer.parseInt(li);
// 菜谱动态分页请求
String createCP = req.getParameter("createCurrentPage");
if(createCP==null) {
createCP = "1";
}
int createCp = Integer.parseInt(createCP);
int createPageSize = 6;
@WebServlet("/recipeDetail")
public class RecipeDetailServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RecipeDetailServlet() {
super();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1、获取请求信息
String recipeId = req.getParameter("recipeId");
// 获取session对象,用session判断是否收藏
HttpSession hs = req.getSession();
// 把session中的值传到user对象中
User user = (User) hs.getAttribute("user");
// 2、处理请求信息
RecipeService rs = new RecipeServiceImpl();
Recipe r = rs.recipeDetailService(recipeId, user);
// 3、响应请求结果
req.setAttribute("recipe", r);
// 输出r
// System.out.println(r);
// 请求转发
req.getRequestDispatcher("/recipeStepRetail").forward(req, resp);
return;
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
} catch (FileUploadException e1) {
e1.printStackTrace();
}
// 遍历List中的数据
// Iterator<FileItem> iter = items.iterator();
// while (iter.hasNext()) {
// FileItem item = iter.next();
for (FileItem item : items) {
String itemName = item.getFieldName();
// 判断前台字段是普通form表单字段,还是文件字段
if (item.isFormField()) {
// 普通上传
if (itemName.equals("recTitle")) {
title = item.getString("utf-8");
} else if (itemName.equals("recInfo")) {
info = item.getString("utf-8");
} else if (itemName.equals("recMaterial")) {
material = item.getString("utf-8");
} else if (itemName.equals("recCategory")) {
categorys.add(item.getString("utf-8"));
} else {
if (!"".equals(item.getString("utf-8"))) {
stepInfos.add(item.getString("utf-8"));
} else {
stepInfos.add("");
}
}
} else {
// 文件上传
String fileName = item.getName();
// 判断文件名是否为不为空
if (fileName != null && !"".equals(fileName)) {
if (itemName.equals("recCover")) {
// 获取文件内容 并上传
String path = rootPath + "cover";
// 使用uuid生成随机数,调用工具类
String uuidFileName = UploadTools.getUUIDFileName(fileName);
File coverFile = new File(path, uuidFileName);
// 判断文件夹是否存在,如不存在则创建文件夹
if (!coverFile.exists()) {
// 先得到文件的上级目录,并创建上级目录,在创建文件
coverFile.getParentFile().mkdir();
try {
// 创建文件
coverFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
item.write(coverFile);
}
int categoryCp = Integer.parseInt(categoryCP);
// 设置网页大小
int pageSize = 8;
// 2、处理请求信息
PageService pages = new PageServiceImpl();
CategoryPage cp = new CategoryPage();
cp = pages.categoryPageService(item, categoryCp);
// 加入分页信息
cp.setItem(item);
cp.setCategoryName(categoryName);
cp.setPageSize(pageSize);
cp.setCurrentPage(categoryCp);
// 3、请求响应结果
req.setAttribute("categoryp", cp);
// 转发
req.getRequestDispatcher("/categoryList.jsp").forward(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
}
}
}
// 获取session对象
HttpSession hs = req.getSession();
// 把session中的值传到user对象中
user = (User) hs.getAttribute("user");
// System.out.println(user);
// if (hs.getAttribute("user") != null) {
// System.out.println("session不为空");
// } else {
// System.out.println("session为空");
// }
// System.out.println(title);
// System.out.println("封面上传成功!路径:" + coverFilePath);
// for(File stepFilePath : stepFiles) {
// System.out.println("步骤上传成功!路径:" + stepFilePath);
// }
// for (String stepInfo : stepInfos) {
// System.out.println(stepInfo);
// }
// for (String category : categorys) {
// System.out.println(category);
// }
RecipeService us = new RecipeServiceImpl();
int index = us.createRecipeService(createDate, title, info, material, stepInfos, categorys, coverFilePath,
stepFilesPath, user);
// 响应处理结果
if (index > 0) {
// 弹窗提示,点击后转跳
PrintWriter out = resp.getWriter();
} else {
PrintWriter out = resp.getWriter();
}
}
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置请求编码格式
req.setCharacterEncoding("utf-8");
// 设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
// 获取操作符
String oper = req.getParameter("oper");
if ("register".equals(oper)) {
// 调用注册方法
userRegister(req, resp);
} else if ("login".equals(oper)) {
// 调用登录方法
checkUserLogin(req, resp);
} else if ("out".equals(oper)) {
// 调用退出方法
userOut(req, resp);
} else if ("checkUserName".equals(oper)) {
// 调用验证用用户名是否存在方法
checkUserName(req, resp);
} else {
System.out.println("没有找到对应的操作符:" + oper);
}
}
// 利用ajax请求验证用户名是否存在
private void checkUserName(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 获取请求信息
String username = req.getParameter("username");
// 处理请求信息
UserService us = new UserServiceImpl();
boolean isExist = us.checkUserNameService(username);
// 响应请求结果
if (isExist) {
resp.getWriter().write("{\"valid\":false}");
} else {
resp.getWriter().write("{\"valid\":true}");
}
}
// 处理用户注册
private void userRegister(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 获取请求信息
String createDate = null;
String username = req.getParameter("username");
String password = req.getParameter("password");
// 获取系统当前日期
Date dateNow = new Date(System.currentTimeMillis());
createDate = dateNow.toString();
// 处理请求信息
// 获取service层对象
UserService us = new UserServiceImpl();
int index = us.userRegisterService(createDate, username, password);
System.out.println("地址改为这个:");
System.out.println("地址改为这个:");
System.out.println(req.getRealPath("/upload"));
// 设置请求编码格式
req.setCharacterEncoding("utf-8");
// 设置响应编码格式
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// 1、获取请求信息
String createDate = null;
String title = null;
String info = null;
String material = null;
List<String> stepInfos = new LinkedList<>();
List<String> categorys = new LinkedList<>();
String coverFilePath = null;
List<File> stepFiles = new LinkedList<>();
List<String> stepFilesPath = new LinkedList<>();
User user = null;
// 获取系统当前日期
Date dateNow = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
createDate = dateFormat.format(dateNow);
// System.out.println(createDate);
// 检查前台表单form是否有multipart
if (ServletFileUpload.isMultipartContent(req)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
// 通过parseRequest解析form中的所有请求字段,并保存到items集合中
List<FileItem> items = null;
try {
items = upload.parseRequest(req);
} catch (FileUploadException e1) {
e1.printStackTrace();
}
// 遍历List中的数据
// Iterator<FileItem> iter = items.iterator();
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置请求编码格式
req.setCharacterEncoding("utf-8");
// 设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
// 获取操作符
String oper = req.getParameter("oper");
if ("register".equals(oper)) {
// 调用注册方法
userRegister(req, resp);
} else if ("login".equals(oper)) {
// 调用登录方法
checkUserLogin(req, resp);
} else if ("out".equals(oper)) {
// 调用退出方法
userOut(req, resp);
} else if ("checkUserName".equals(oper)) {
// 调用验证用用户名是否存在方法
checkUserName(req, resp);
} else {
System.out.println("没有找到对应的操作符:" + oper);
}
}
// 利用ajax请求验证用户名是否存在
private void checkUserName(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 获取请求信息
String username = req.getParameter("username");
// 处理请求信息
UserService us = new UserServiceImpl();
boolean isExist = us.checkUserNameService(username);
// 响应请求结果
if (isExist) {
resp.getWriter().write("{\"valid\":false}");
} else {
resp.getWriter().write("{\"valid\":true}");
}
}
// 处理用户注册
private void userRegister(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// 1、获取请求信息
String createDate = null;
String title = null;
String info = null;
String material = null;
List<String> stepInfos = new LinkedList<>();
List<String> categorys = new LinkedList<>();
String coverFilePath = null;
List<File> stepFiles = new LinkedList<>();
List<String> stepFilesPath = new LinkedList<>();
User user = null;
// 获取系统当前日期
Date dateNow = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
createDate = dateFormat.format(dateNow);
// System.out.println(createDate);
// 检查前台表单form是否有multipart
if (ServletFileUpload.isMultipartContent(req)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
// 通过parseRequest解析form中的所有请求字段,并保存到items集合中
List<FileItem> items = null;
try {
items = upload.parseRequest(req);
} catch (FileUploadException e1) {
e1.printStackTrace();
}
// 遍历List中的数据
// Iterator<FileItem> iter = items.iterator();
// while (iter.hasNext()) {
// FileItem item = iter.next();
for (FileItem item : items) {
String itemName = item.getFieldName();
// 判断前台字段是普通form表单字段,还是文件字段
if (item.isFormField()) {
// 普通上传
if (itemName.equals("recTitle")) {
title = item.getString("utf-8");
} else if (itemName.equals("recInfo")) {
info = item.getString("utf-8");
} else if (itemName.equals("recMaterial")) {
material = item.getString("utf-8");
} else if (itemName.equals("recCategory")) {
categorys.add(item.getString("utf-8"));
} else {
if (!"".equals(item.getString("utf-8"))) {
stepInfos.add(item.getString("utf-8"));
} else {
stepInfos.add("");
int index = us.userRegisterService(createDate, username, password);
// System.out.println(index);
// 响应处理结果
if (index > 0) {
// 弹窗提示,点击后转跳
PrintWriter out = resp.getWriter();
// 重定向
// resp.sendRedirect("/login.jsp");
}
}
// 处理用户登录
private void checkUserLogin(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
// 1、获取请求信息
String username = req.getParameter("username");
String password = req.getParameter("password");
// System.out.println(username + ":" + password);
// 2、处理请求信息
// 获取service层对象
UserService us = new UserServiceImpl();
// 校验
User u = us.checkUserLoginService(username, password);
// System.out.println(u);
// 3、响应处理结果
if (u != null) {
// 获取session对象
// System.out.println(u);
HttpSession hs = req.getSession();
// 将用户信息存储到session中
hs.setAttribute("user", u);
// 重定向,/表示服务器根目录,写绝对路径。相对路径的话servlet的别名中包含别目录,会造成重定向资源失败
resp.sendRedirect("/index");
return;
} else {
// 失败
// 请求转发,/表示项目根目录。
// 弹窗提示,点击后转跳
PrintWriter out = resp.getWriter();
// 请求转发
// req.getRequestDispatcher("/login.jsp").forward(req, resp);
return;
@WebServlet("/recipeCollection")
public class RecipeCollectionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RecipeCollectionServlet() {
super();
}
// 处理菜谱收藏功能
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 1、获取请求信息
String status = req.getParameter("status");
String RecipeId = req.getParameter("RecipeId");
// 获取session对象
HttpSession hs = req.getSession();
// 把session中的值传到user对象中
User user = (User) hs.getAttribute("user");
RecipeService rs = new RecipeServiceImpl();
// 2、判断status状态
if (status.equals("false")) {
// 3、处理请求结果;插入收藏菜谱
int index = rs.insertCollectionRecipe(RecipeId, user);
if(index>0) {
resp.getWriter().write("{\"index\":" + index + "}");
}
} else {
// 3、处理请求结果:删除收藏菜谱
req.setAttribute("searchp", sp);
// 转发
req.getRequestDispatcher("/searchList.jsp").forward(req, resp);
}
}
@WebServlet("/recipeCategory")
public class RecipeCategoryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public RecipeCategoryServlet() {
super();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1、接收请求信息
String item = req.getParameter("item");
String categoryName = req.getParameter("categoryName");
// 菜谱动态分页请求
String categoryCP = req.getParameter("categoryCurrentPage");
if (categoryCP == null) {
categoryCP = "1";
}
int categoryCp = Integer.parseInt(categoryCP);
// 设置网页大小
int pageSize = 8;
// 2、处理请求信息
PageService pages = new PageServiceImpl();