Java项目:jsp+servlet高校社团管理系统

发布于:2022-12-05 ⋅ 阅读:(705) ⋅ 点赞:(0)

作者主页:夜未央5788

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

功能简介

高校社团管理系统分为前后台,角色分为三种:管理员、社长、普通社员。

超级管理员角色包含以下功能:会员管理,物品管理,活动审批,系统用户管理,社团添加删除等功能。

社长角色包含以下功能:社团管理员登录,会员管理,物品管理,活动管理,查询社团信息,密码修改等功能。

普通社员角色包含以下功能:社员登录,申请入社,物品查看,活动申请等功能。


前台主要是展示社团列表、社团风采、社团活动、新闻列表
前台登录后进入个人中心,在个人中心能申请加入社团、查看参加的社团活动等
后台为管理员与社长使用,应用于对社团的管理及内容发布等。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 
6.数据库:MySql 8.0版本;

使用技术

使用技术:servlet+jsp+mysql 8.0

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;注:数据库使用mysql 8.0,注意版本要匹配,否则可能会产生连接异常的情况,
2. 将项目中db.properties配置文件中的数据库配置改为自己的配置
3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;

前台地址:http://localhost:8080/team/front/login.jsp
普通社员账号:苏c  密码:123 

后台地址:http://localhost:8080/team/mui/login.jsp
管理员账号:sys  密码:123456
社长账号:苏悲   密码:123456

运行截图

前台界面

 

 

 

 后台界面

 

 

 

 

 

 

相关代码 

DownloadController

package com.so.system.controller;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class DownloadController
 */
@WebServlet(name = "download", urlPatterns = { "/download" })
public class DownloadController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	// 字符编码

	private final String ENCODING = "GB2312";

	// 内容类型

	private final String CONTENT_TYPE = "text/html;charset=gb2312";

	// 要下载的文件存放的路径

	private String downloadfiledir = "d:\\temp\\";

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String realPath = request.getSession().getServletContext().getRealPath("");
		// 设置request对象的字符编码

		request.setCharacterEncoding(ENCODING);

		// 从request中取出要下载文件的名字

		String filename = request.getParameter("filename");

		if (filename == null || filename.trim().equals("")) {

			// 设置response对象的ContentType

			response.setContentType(CONTENT_TYPE);

			// 输出错误信息

			PrintWriter out = response.getWriter();

			out.println("<font color=red>输入的文件名无效!</font>");

			out.close();

		} else {

			// 下载文件的完整路径名

			String fullfilename = realPath + filename;

			System.out.println("下载文件:" + fullfilename);

			// 根据文件的类型设置response对象的ContentType

			String contentType = getServletContext().getMimeType(fullfilename);

			if (contentType == null)

				contentType = "application/octet-stream";

			response.setContentType(contentType);

			// 设置response的头信息

			response.setHeader("Content-disposition", "attachment;filename=\"" + filename + "\"");

			InputStream is = null;

			OutputStream os = null;

			try {

				is = new BufferedInputStream(new FileInputStream(fullfilename));

				// 定义输出字节流

				ByteArrayOutputStream baos = new ByteArrayOutputStream();

				// 定义response的输出流

				os = new BufferedOutputStream(response.getOutputStream());

				// 定义buffer

				byte[] buffer = new byte[4 * 1024]; // 4k Buffer

				int read = 0;

				// 从文件中读入数据并写到输出字节流中

				while ((read = is.read(buffer)) != -1) {

					baos.write(buffer, 0, read);

				}

				// 将输出字节流写到response的输出流中

				os.write(baos.toByteArray());

			} catch (IOException e) {

				e.printStackTrace();

			} finally {
				// 关闭输出字节流和response输出流
				os.close();
				is.close();

			}
		}
	}

}

MenuController

package com.so.system.controller;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.so.system.bean.Menu;
import com.so.system.bean.MenuRole;
import com.so.system.dao.MenuDao;
import com.so.system.dao.MenuRoleDao;
import com.so.system.service.MenuService;
import com.so.system.service.impl.MenuServiceImpl;
import com.so.utils.Page;
import com.so.utils.StringUtils;

@WebServlet("/menu")
public class MenuController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	private String contextPath = "";
	
	MenuDao menuDao=new MenuDao();
	MenuService menuService = new MenuServiceImpl();
	MenuRoleDao menuRoleDao = new MenuRoleDao();
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		contextPath = request.getServletContext().getContextPath();
		String method = request.getParameter("method");
		if ("add".equals(method)) {
			add(request,response);
		}else if ("delete".equals(method)) {
			delete(request, response);
		}else if ("list".equals(method)) {
			list(request, response);
		}else if ("update".equals(method)) {
			update(request, response);
		}else if ("form".equals(method)) {
			form(request, response);
		}else if ("save".equals(method)) {
			save(request, response);
		}else if ("setMenuRole".equals(method)) {
			setMenuRole(request, response);
		}else if ("saveMenuRole".equals(method)) {
			saveMenuRole(request, response);
		}
		
	}
	
	//添加
	private void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String name = request.getParameter("name");
		String href = request.getParameter("href");
		String target = request.getParameter("target");
		String isShow = request.getParameter("isShow");
		String sort = request.getParameter("sort");
		String parentId = request.getParameter("parentId");
		String parentIds = request.getParameter("parentIds");
		String remarks = request.getParameter("remarks");
		Menu menu = new Menu();
		menu.setName(name);
		menu.setHref(href);
		menu.setTarget(target);
		menu.setIsShow(isShow);
		menu.setSort(sort);
		menu.setParentId(parentId);
		menu.setParentIds(parentIds);
		menu.setRemarks(remarks);
		menuService.add(menu);
		response.sendRedirect(contextPath+"/menu?method=list");
	}
	
	//添加保存
	protected void save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Menu menu = new Menu();
		 //得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
        String savePath = this.getServletContext().getRealPath("/upload");
        File file = new File(savePath);
        //判断上传文件的保存目录是否存在
        if (!file.exists() && !file.isDirectory()) {
            System.out.println(savePath+"目录不存在,需要创建");
            //创建目录
            file.mkdir();
        }
        //消息提示
        String msg = "";
        try{
            //使用Apache文件上传组件处理文件上传步骤:
            //1、创建一个DiskFileItemFactory工厂
            DiskFileItemFactory factory = new DiskFileItemFactory();
            //2、创建一个文件上传解析器
            ServletFileUpload upload = new ServletFileUpload(factory);
             //解决上传文件名的中文乱码
            upload.setHeaderEncoding("UTF-8"); 
            //3、判断提交上来的数据是否是上传表单的数据
            if(!ServletFileUpload.isMultipartContent(request)){
                //按照传统方式获取数据
                return;
            }
            //4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
            List<FileItem> list = upload.parseRequest(request);
            for(FileItem item : list){
                //如果fileitem中封装的是普通输入项的数据
                if(item.isFormField()){
                    String name = item.getFieldName();
                     //解决普通输入项的数据的中文乱码问题
					if ("id".endsWith(name)) {
                    	if (item.getString("UTF-8")!=null && item.getString("UTF-8")!="") {
                    		menu.setId(item.getString("UTF-8"));
						}
					}
					if ("name".endsWith(name)) {
						menu.setName(item.getString("UTF-8"));
					}
					if ("href".endsWith(name)) {
						menu.setHref(item.getString("UTF-8"));
					}
					if ("target".endsWith(name)) {
						menu.setTarget(item.getString("UTF-8"));
					}
					if ("isShow".endsWith(name)) {
						menu.setIsShow(item.getString("UTF-8"));
					}
					if ("sort".endsWith(name)) {
						menu.setSort(item.getString("UTF-8"));
					}
					if ("parentId".endsWith(name)) {
						menu.setParentId(item.getString("UTF-8"));
					}
					if ("parentIds".endsWith(name)) {
						menu.setParentIds(item.getString("UTF-8"));
					}
					if ("remarks".endsWith(name)) {
						menu.setRemarks(item.getString("UTF-8"));
					}
                    
                }else{//如果fileitem中封装的是上传文件
                    //得到上传的文件名称,
                    String filename = item.getName();
                    System.out.println(filename);
                    if(filename==null || filename.trim().equals("")){
                        continue;
                    }
                    //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:  c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
                    //处理获取到的上传文件的文件名的路径部分,只保留文件名部分
                    filename = filename.substring(filename.lastIndexOf("\\")+1);
                    //获取item中的上传文件的输入流
                    InputStream in = item.getInputStream();
                    //创建一个文件输出流
                    FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);
                    //创建一个缓冲区
                    byte buffer[] = new byte[1024];
                    //判断输入流中的数据是否已经读完的标识
                    int len = 0;
                    //循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
                    while((len=in.read(buffer))>0){
                        //使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
                        out.write(buffer, 0, len);
                    }
                    //关闭输入流
                    in.close();
                    //关闭输出流
                    out.close();
                    //删除处理文件上传时生成的临时文件
                    item.delete();
 					msg = "文件上传成功!";
                    
//                    menu.setPic("\\upload" + "\\" + filename);
                }
            }
            if (menu.getId()!=null && !"".equals(menu.getId())) {
    			menuService.update(menu);
    		}else{
    			menuService.add(menu);
    		}
    		response.sendRedirect(contextPath+"/menu?method=list");
        }catch (Exception e) {
            msg= "文件上传失败!";
            e.printStackTrace();
            request.setAttribute("msg",msg);
            request.getRequestDispatcher("/views/system/menuForm.jsp").forward(request, response);
        }
	}
	
	//删除
	private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id = request.getParameter("id");
		menuService.delete(id);
		response.sendRedirect(contextPath+"/menu?method=list");
	}
	
	//修改
	private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id = request.getParameter("id");
		String name = request.getParameter("name");
		String href = request.getParameter("href");
		String target = request.getParameter("target");
		String isShow = request.getParameter("isShow");
		String sort = request.getParameter("sort");
		String parentId = request.getParameter("parentId");
		String parentIds = request.getParameter("parentIds");
		String remarks = request.getParameter("remarks");
		Menu menu = new Menu();
		menu.setId(id);
		menu.setName(name);
		menu.setHref(href);
		menu.setTarget(target);
		menu.setIsShow(isShow);
		menu.setSort(sort);
		menu.setParentId(parentId);
		menu.setParentIds(parentIds);
		menu.setRemarks(remarks);
		menuService.update(menu);
		request.setAttribute("menu", menu);
		request.getRequestDispatcher("/views/system/menuForm.jsp").forward(request, response);
	}
	
	//列表查询
	private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.err.println("---开始查询---");
		Menu menu = new Menu();
		/*//分页有关
		Page<Menu> page = new Page<Menu>();
		//设置查询页
		String pageNoStr = request.getParameter("pageNo");
		if (pageNoStr != null && pageNoStr != "") {
			page.setPageNo(Integer.parseInt(pageNoStr));
		}
		//设置查询条件
		String name = request.getParameter("name");
		if (name != null && name != "") {
			menu.setName(name);
			request.setAttribute("name", name);
		}
		String isShow = request.getParameter("isShow");
		if (isShow != null && isShow != "") {
			menu.setIsShow(isShow);
			request.setAttribute("isShow", isShow);
		}
		
		page = menuService.page(menu, page);
		request.setAttribute("page", page);*/
		
		List<Menu> list = new ArrayList<Menu>();
		List<Menu> list1 = menuService.findAll(menu);
		sortList(list, list1, "0", true);
		request.setAttribute("list", list);
		request.getRequestDispatcher("/views/system/menuList.jsp").forward(request, response);
	}
	
	//form跳转页面
	private void form(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id = request.getParameter("id");
		String parentId = request.getParameter("parentId");
		Menu menu = new Menu();
		if (StringUtils.isNotEmpty(parentId)) {
			menu.setParentId(parentId);
		}
		if (id!=null && id!="") {
			menu = menuService.getById(id);
		}
		request.setAttribute("menu", menu);
		List<Menu> parentMenus = menuDao.getParentMenu("0");
		request.setAttribute("parentMenus", parentMenus);
		request.getRequestDispatcher("/views/system/menuForm.jsp").forward(request, response);
	}
	
	/**
	 * 跳转到设置权限页面
	 * @param request
	 * @param response
	 * @throws ServletException
	 * @throws IOException
	 */
	private void setMenuRole(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String roleId = request.getParameter("roleId");
		request.setAttribute("roleId", roleId);
		//获取角色的所以权限菜单ID
		List<String> roleMenus = menuRoleDao.getByRoleId(roleId);
		//定义集合接收菜单数据
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		//获取所有的父级菜单
		List<Menu> parentMenus = menuDao.getParentMenu("0");
		for (Menu menu : parentMenus) {
			if (roleMenus.contains(menu.getId())) {
				menu.setIsCheck("1");
			}
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("parentMenu", menu);
			List<Menu> parentMenu = menuDao.getParentMenu(menu.getId());
			List<Menu> menus = new ArrayList<Menu>();
			for (Menu menu2 : parentMenu) {
				if (roleMenus.contains(menu2.getId())) {
					menu2.setIsCheck("1");
				}
				menus.add(menu2);
			}
			
			map.put("menus", menus);
			list.add(map);
		}
		request.setAttribute("list", list);
		String type = request.getParameter("type");
		if (type!=null && "success".equals(type)) {
			request.setAttribute("msg", "更新权限成功!");
		}
		request.getRequestDispatcher("/views/system/setMenuRole.jsp").forward(request, response);
	}
	
	/**
	 * 更新保存权限设置
	 * @param request
	 * @param response
	 * @throws ServletException
	 * @throws IOException
	 */
	private void saveMenuRole(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String roleId = request.getParameter("roleId");
		request.setAttribute("roleId", roleId);
		menuRoleDao.delete(roleId);
		MenuRole menuRole = new MenuRole();
		menuRole.setRoleId(roleId);
		String[] parameterValues = request.getParameterValues("menuIds");
		if (parameterValues!=null) {
			for (String string : parameterValues) {
				menuRole.setMenuId(string);
				menuRoleDao.add(menuRole);
			}
		}
		response.sendRedirect(contextPath+"/menu?method=setMenuRole&type=success&roleId="+roleId);
	}
	
	
	public static void sortList(List<Menu> list, List<Menu> sourcelist, String parentId, boolean cascade){
		for (int i=0; i<sourcelist.size(); i++){
			Menu e = sourcelist.get(i);
			if (e.getParentId()!=null && e.getParentId()!=null
					&& e.getParentId().equals(parentId)){
				list.add(e);
				if (cascade){
					// 判断是否还有子节点, 有则继续获取子节点
					for (int j=0; j<sourcelist.size(); j++){
						Menu child = sourcelist.get(j);
						if (child.getParentId()!=null && child.getParentId()!=null
								&& child.getParentId().equals(e.getId())){
							sortList(list, sourcelist, e.getId(), true);
							break;
						}
					}
				}
			}
		}
	}
	
}

如果也想学习本系统,下面领取。关注并回复:001jsp

本文含有隐藏内容,请 开通VIP 后查看