基于javaweb+mysql的jsp+servlet高校学生会社团管理系统(前台、后台)(java+jsp+servlet+javabean+mysql+tomcat)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
前台:用户注册登陆、个人中心的管理(成立社团、加入的社团、申请加入社团、申请加入活动等)、社团列表、社团风采、社团活动、新闻列表以及留言板功能;
后台管理页面主要有:注册登陆、个人中心、系统管理(用户管理、角色管理、菜单管理、新闻管理、留言管理)、社团管理(财务管理、社团列表、社团风采、社团活动、活动申请、学生管理、社团申请)等几大块
前台
后台:
技术框架
JSP Servlet MySQL JDBC Tomcat CSS JavaScript jstl
基于javaweb+mysql的JSP+Servlet高校学生会社团管理系统(前台、后台)(java+jsp+servlet+javabean+mysql+tomcat)
str = contextPath+"\\" + newFileName;
}
//解决普通输入项的数据的中文乱码问题
if ("id".endsWith(name)) {
if (str!=null && str!="") {
moneyManger.setId(str);
}
}
if ("actId".endsWith(name)) {
moneyManger.setActId(str);
}
if ("type".endsWith(name)) {
moneyManger.setType(str);
}
if ("money".endsWith(name)) {
moneyManger.setMoney(Double.parseDouble(str));
}
if ("remark".endsWith(name)) {
moneyManger.setRemark(str);
}
}
if (moneyManger.getId()!=null && !"".equals(moneyManger.getId())) {
moneyMangerService.update(moneyManger);
}else{
moneyMangerService.add(moneyManger);
}
response.sendRedirect(contextPath+"/moneyManger?method=list");
}catch (Exception e) {
msg= "服务异常!";
e.printStackTrace();
request.setAttribute("msg",msg);
request.getRequestDispatcher("/views/team/moneyMangerForm.jsp").forward(request, response);
}
//循环将输入流读入到缓冲区当中,(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 = "文件上传成功!";
// role.setPic("\\upload" + "\\" + filename);
}
}
if (role.getId()!=null && !"".equals(role.getId())) {
roleService.update(role);
}else{
roleService.add(role);
}
response.sendRedirect(contextPath+"/role?method=list");
}catch (Exception e) {
msg= "文件上传失败!";
e.printStackTrace();
request.setAttribute("msg",msg);
request.getRequestDispatcher("/views/system/roleForm.jsp").forward(request, response);
}
}
//删除
private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String contextPath = request.getServletContext().getContextPath();
String id = request.getParameter("id");
roleService.delete(id);
response.sendRedirect(contextPath+"/role?method=list");
}
//修改
private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String roleName = request.getParameter("roleName");
String roleFlag = request.getParameter("roleFlag");
String introduce = request.getParameter("introduce");
Role role = new Role();
}
//添加保存
protected void save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MoneyManger moneyManger = new MoneyManger();
//这是上传到tomcat下,文件容易丢失
//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
String savePath = this.getServletContext().getRealPath("/upload");
File file = new File(savePath);
//判断上传文件的保存目录是否存在
if (!file.exists() && !file.isDirectory()) {
System.out.println(savePath+"目录不存在,需要创建");
//创建目录
file.mkdir();
}
//上传到服务器硬盘上,保证重启tomcat不会丢失文件
//获取上传文件的路径
// String savePath = PropertiesUtil.getValue("fileBaseUrl")+ PropertiesUtil.getValue("fileUrl");
// File file = new File(savePath+"/");
// if (!file.exists() && !file.isDirectory()) {
// System.out.println(savePath+"目录不存在,需要创建");
// //创建目录
// file.mkdirs();
// }
//消息提示
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中封装的是普通输入项的数据
String str = "";
//判断提示信息
Object msg = request.getSession().getAttribute("msg");
if (msg != null) {
request.setAttribute("msg", msg.toString());
request.getSession().removeAttribute("msg");
}
page = studentService.page(student, page);
request.setAttribute("page", page);
request.getRequestDispatcher("/views/team/studentList.jsp").forward(request, response);
}
//form跳转页面
private void form(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
Student student = new Student();
if (id!=null && id!="") {
student = studentService.getById(id);
}
request.setAttribute("student", student);
request.getRequestDispatcher("/views/team/studentForm.jsp").forward(request, response);
}
}
@WebServlet("/role")
public class RoleController extends HttpServlet {
private static final long serialVersionUID = 1L;
RoleDao roleDao=new RoleDao();
RoleService roleService = new RoleServiceImpl();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
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);
}
}
//添加
private void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String contextPath = request.getServletContext().getContextPath();
//解决上传文件名的中文乱码
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
//处理获取到的上传文件的文件名的路径部分,只保留文件名部分
request.setAttribute("msg",msg);
request.getRequestDispatcher("/views/system/roleForm.jsp").forward(request, response);
}
}
//删除
private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String contextPath = request.getServletContext().getContextPath();
String id = request.getParameter("id");
roleService.delete(id);
response.sendRedirect(contextPath+"/role?method=list");
}
//修改
private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String roleName = request.getParameter("roleName");
String roleFlag = request.getParameter("roleFlag");
String introduce = request.getParameter("introduce");
Role role = new Role();
role.setId(id);
role.setRoleName(roleName);
role.setRoleFlag(roleFlag);
role.setIntroduce(introduce);
roleService.update(role);
request.setAttribute("role", role);
request.getRequestDispatcher("/views/system/roleForm.jsp").forward(request, response);
}
//列表查询
private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.err.println("---开始查询---");
Role role = new Role();
//分页有关
Page<Role> page = new Page<Role>();
//设置查询页
String pageNoStr = request.getParameter("pageNo");
if (pageNoStr != null && pageNoStr != "") {
page.setPageNo(Integer.parseInt(pageNoStr));
}
//设置查询条件
String roleName = request.getParameter("roleName");
if (roleName != null && roleName != "") {
role.setRoleName(roleName);
request.setAttribute("roleName", roleName);
}
page = roleService.page(role, page);
request.setAttribute("page", page);
request.getRequestDispatcher("/views/system/roleList.jsp").forward(request, response);
}
out.close();
//删除处理文件上传时生成的临时文件
item.delete();
msg = "文件上传成功!";
teams.setPic("/upload" + "/" + filename);
}
}
if (teams.getId()!=null && !"".equals(teams.getId())) {
try {
teams.setBuildStu(teamsService.getById(teams.getId()).getBuildStu());
} catch (Exception e) {
e.printStackTrace();
}
teamsService.update(teams);
}else{
teamsService.add(teams);
}
response.sendRedirect(contextPath+"/teams?method=list");
}catch (Exception e) {
msg= "文件上传失败!";
e.printStackTrace();
request.setAttribute("msg",msg);
request.getRequestDispatcher("/views/team/teamsForm.jsp").forward(request, response);
}
}
//删除
private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
teamsService.delete(id);
response.sendRedirect(contextPath+"/teams?method=list");
}
//修改
private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String teamName = request.getParameter("teamName");
String pic = request.getParameter("pic");
String teamIntro = request.getParameter("teamIntro");
String buildTime = request.getParameter("buildTime");
String stuName = request.getParameter("stuName");
String phone = request.getParameter("phone");
String type = request.getParameter("type");
String isArrive = request.getParameter("isArrive");
ActiveStu activeStu = new ActiveStu();
activeStu.setActiveId(activeId);
activeStu.setStuId(stuId);
activeStu.setStuName(stuName);
activeStu.setPhone(phone);
activeStu.setType(type);
activeStu.setIsArrive(isArrive);
activeStuService.add(activeStu);
response.sendRedirect(contextPath+"/activeStu?method=list");
}
//添加保存
protected void save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ActiveStu activeStu = new ActiveStu();
//这是上传到tomcat下,文件容易丢失
//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
String savePath = this.getServletContext().getRealPath("/upload");
File file = new File(savePath);
//判断上传文件的保存目录是否存在
if (!file.exists() && !file.isDirectory()) {
System.out.println(savePath+"目录不存在,需要创建");
//创建目录
file.mkdir();
}
//上传到服务器硬盘上,保证重启tomcat不会丢失文件
//获取上传文件的路径
// String savePath = PropertiesUtil.getValue("fileUpload");
// File file = new File(savePath+"/");
// if (!file.exists() && !file.isDirectory()) {
// System.out.println(savePath+"目录不存在,需要创建");
// //创建目录
// file.mkdirs();
// }
//消息提示
String msg = "";
try{
//使用Apache文件上传组件处理文件上传步骤:
//1、创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//2、创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
e.printStackTrace();
request.setAttribute("msg",msg);
request.getRequestDispatcher("/front/regit.jsp").forward(request, response);
}
}
}
@WebServlet("/siteNews")
public class SiteNewsController extends HttpServlet {
private static final long serialVersionUID = 1L;
private String contextPath = "";
SiteNewsDao siteNewsDao=new SiteNewsDao();
}else{
activeStu.setStuName(stuName);
activeStu.setPhone(phone);
activeStu.setType(type);
activeStu.setIsArrive(isArrive);
activeStuService.add(activeStu);
}
}
//获取新闻活动详情
private void detail(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
SiteNews news = siteNewsService.getById(id);
request.setAttribute("news", news);
//查出左侧列表数据
String newsType = news.getNewsType();
SiteNews siteNews = new SiteNews();
siteNews.setIsAudit("1");
siteNews.setNewsType(newsType);
Page<SiteNews> page = new Page<SiteNews>();
page.setPageSize(15);
Page<SiteNews> leftNews = siteNewsService.page(siteNews, page);
request.setAttribute("leftNews", leftNews);
request.getRequestDispatcher("/front/detail.jsp").forward(request, response);
}
//查看社团详情
protected void teamDetail(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
Teams team = teamsService.getById(id);
request.setAttribute("team", team);
//查出所有社团
Teams teams = new Teams();
teams.setAuditType("1");
List<Teams> teamList = teamsService.findAll(teams);
request.setAttribute("teamList", teamList);
request.getRequestDispatcher("/front/teamDetail.jsp").forward(request, response);
}
//申请社团
private void applayLeader(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Object attribute = request.getSession().getAttribute("flogin");
if (attribute!=null) {
Page<Role> page = new Page<Role>();
//设置查询页
String pageNoStr = request.getParameter("pageNo");
if (pageNoStr != null && pageNoStr != "") {
page.setPageNo(Integer.parseInt(pageNoStr));
}
//设置查询条件
String roleName = request.getParameter("roleName");
if (roleName != null && roleName != "") {
role.setRoleName(roleName);
request.setAttribute("roleName", roleName);
}
page = roleService.page(role, page);
request.setAttribute("page", page);
request.getRequestDispatcher("/views/system/roleList.jsp").forward(request, response);
}
//form跳转页面
private void form(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
Role role = new Role();
if (id!=null && id!="") {
role = roleService.getById(id);
}
request.setAttribute("role", role);
request.getRequestDispatcher("/views/system/roleForm.jsp").forward(request, response);
}
}
/**
* Servlet implementation class DownloadController
/**
* 系统用户控制器servlet
* @version V1.0
*/
@WebServlet("/user")
public class UserController extends HttpServlet {
private static final long serialVersionUID = 1L;
UserDao userDao=new UserDao();
UserService userService = new UserServiceImpl();
RoleService roleService = new RoleServiceImpl();
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 {
String method = request.getParameter("method");
if ("add".equals(method)) {
add(request,response);
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) {
}else{
request.setAttribute("teamList", teamsService.findAll(new Teams()));
}
page = siteNewsService.page(siteNews, page);
request.setAttribute("page", page);
request.getRequestDispatcher("/views/team/siteNewsList.jsp").forward(request, response);
}
//form跳转页面
private void form(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
SiteNews siteNews = new SiteNews();
String newsType = request.getParameter("newsType");
if (newsType!=null && newsType !="") {
siteNews.setNewsType(newsType);
}
if (id!=null && id!="") {
siteNews = siteNewsService.getById(id);
}
request.setAttribute("siteNews", siteNews);
//根据登录用户查出所有的社团
User currentUser = CurrentUserUtils.getCurrentUser(request);
String roleFlag = currentUser.getRole2().getRoleFlag();
if ("leader".equals(roleFlag)) {
//如果是社长,查出自己负责的所以社团
Teams teams = new Teams();
teams.setBuildStu(currentUser.getId());
request.setAttribute("teamList", teamsService.findAll(teams));
}else{
request.setAttribute("teamList", teamsService.findAll(new Teams()));
}
request.getRequestDispatcher("/views/team/siteNewsForm.jsp").forward(request, response);
}
}
//创建一个缓冲区
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 = "文件上传成功!";
}
}
if (teamApplay.getId()!=null && !"".equals(teamApplay.getId())) {
teamApplayService.update(teamApplay);
}else{
teamApplayService.add(teamApplay);
}
response.sendRedirect(contextPath+"/teamApplay?method=list");
}catch (Exception e) {
msg= "文件上传失败!";
e.printStackTrace();
request.setAttribute("msg",msg);
request.getRequestDispatcher("/views/team/teamApplayForm.jsp").forward(request, response);
}
}
//删除
private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
teamApplayService.delete(id);
response.sendRedirect(contextPath+"/teamApplay?method=list");
}
//修改
private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String applayTeam = request.getParameter("applayTeam");
String applayStu = request.getParameter("applayStu");
String applayContent = request.getParameter("applayContent");
String applayTime = request.getParameter("applayTime");
String applayType = request.getParameter("applayType");
TeamApplay teamApplay = new TeamApplay();
teamApplay.setId(id);
teamApplay.setApplayTeam(applayTeam);
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")!="") {
student.setId(item.getString("UTF-8"));
}
}
if ("loginName".endsWith(name)) {
student.setLoginName(item.getString("UTF-8"));
for (Student s : studentService.findAll(new Student())) {
if((s.getLoginName()+"").equals(student.getLoginName())){
System.out.println(msg="帐号已存在!!!");
System.out.println(msg);
System.out.println(msg);
System.out.println(msg);
System.out.println(msg);
throw new RuntimeException(msg);
}
}
}
if ("loginPassword".endsWith(name)) {
student.setLoginPassword(item.getString("UTF-8"));
}
if ("regitTime".endsWith(name)) {
if ("classRoom".endsWith(name)) {
student.setClassRoom(item.getString("UTF-8"));
}
if ("phone".endsWith(name)) {
student.setPhone(item.getString("UTF-8"));
}
if ("pic".endsWith(name)) {
student.setPic(item.getString("UTF-8"));
}
if ("remark".endsWith(name)) {
student.setRemark(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);
String suffix = filename.substring(filename.lastIndexOf("."));
filename=String.valueOf(System.currentTimeMillis()+suffix);
//获取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);
}