基于javaweb+mysql的jsp+servlet高校社团信息管理系统(java+jsp+html+javascript+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的JSP+Servlet高校社团信息管理系统(java+jsp+html+javascript+mysql)
项目介绍
管理员角色包含以下功能: 管理员登录,用户信息管理,社团创建审批,社团简介管理,学校器材管理,图片资讯查询,活动消息管理,新闻资讯管理,留言信息查询等功能。
社团管理员角色包含以下功能: 社团管理员登录,我的社团信息查询,社团成员查询,社团活动管理,社团新闻管理等功能。
用户角色包含以下功能: 查看所有新闻,用户注册,查看新闻,留言板留言,查看活动信息,创建社团,查看社团详细情况,申请加入社团,个人信息修改,创建社团审批详情,加入社团审批详情等功能。
环境需要
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.数据库:MySql 5.7版本;
技术栈
HTML+CSS+JavaScript+jsp+mysql
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/login.jsp 登录
* @param values
* @throws SQLException
*/
private static void setParam(Object[] param, PreparedStatement pstmt)
throws SQLException {
// 判断是否有参数
if (param != null) {
for (int i = 0; i < param.length; i++) {
pstmt.setObject(i + 1, param[i]); // 为预编译sql设置参数
}
}
}
/**
* 执行数据库查询或更新,但不关闭数据库
*
* @param preparedSql
* 预编译的 SQL 语句
* @param param
* 预编译的 SQL 语句中的‘?’参数的字符串数组
* @param flag
* 0标示更新 1标示查询
* @return 查询结果
*/
public static Result execute(String preparedSql, Object[] param, int flag, Connection conn) {
PreparedStatement pstmt = null; // 预编译的sql语句对象
ResultSet rs = null; // 结果集对象
Result result = null;
try {
pstmt = conn.prepareStatement(preparedSql); // 得到PreparedStatement对象
setParam(param, pstmt);
if (flag == 0) {
pstmt.executeUpdate(); // 执行SQL语句
} else {
rs = pstmt.executeQuery(); // 获取结果集
if (rs != null) {
result = ResultSupport.toResult(rs); // 将结果集保存在Result中
}
}
return result;
} catch (SQLException e) {
log.error("BaseDao执行execute异常:", e);
throw new RuntimeException("BaseDao执行execute异常:", e);
setSuccess(false);
this.errorReason.put(ERROR_MSG, errorMsg);
this.errorReason.put(ERROR_STACK, "");
}
protected void setErrorReason(String errorMsg, Exception e) {
if (errorReason == null) {
errorReason = new HashMap<Object, Object>();
}
setSuccess(false);
this.errorReason.put(ERROR_MSG, errorMsg);
this.errorReason.put(ERROR_STACK, generateStackTrace(e));
}
/**
* @Title: generateStackTrace
* @Description: 生成异常堆栈字符串
* @param e
* @return
* @return String
*/
private String generateStackTrace(Exception e) {
if (e == null) {
return null;
}
StringBuffer stringBuffer = new StringBuffer();
ByteArrayOutputStream byteArrayOutputStream = null;
try {
byteArrayOutputStream = new ByteArrayOutputStream();
e.printStackTrace(new PrintStream(byteArrayOutputStream));
stringBuffer.append(byteArrayOutputStream.toString());
} catch (Exception ex) {
} finally {
if (byteArrayOutputStream != null) {
try {
byteArrayOutputStream.close();
} catch (IOException ex2) {
}
}
}
return stringBuffer.toString();
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
/**
equipDao.updateEquip(equip, conn);
BaseDao.closeDB(null, null, conn);
}
/**
* @Title: delEquips
* @Description: 删除学校器材信息
* @param equip
* @return void
*/
public void delEquips(Equip equip){
Connection conn = BaseDao.getConnection();
equipDao.delEquips(equip.getIds().split(","), conn);
BaseDao.closeDB(null, null, conn);
}
/**
* @Title: listPicnewss
* @Description: 查询图片新闻
* @param picnews
* @param sum
* @return List<Picnews>
*/
public List<Picnews> listPicnewss(Picnews picnews,int[] sum){
Connection conn = BaseDao.getConnection();
if (sum!=null) {
sum[0] = 4;
}
List<Picnews> picnewss = picnewsDao.listPicnewss(picnews,conn);
BaseDao.closeDB(null, null, conn);
return picnewss;
}
/**
* @Title: getPicnews
* @Description: 查询图片新闻
* @param picnews
* @return Picnews
*/
public Picnews getPicnews(Picnews picnews){
Connection conn = BaseDao.getConnection();
Picnews _picnews = picnewsDao.getPicnews(picnews, conn);
BaseDao.closeDB(null, null, conn);
return _picnews;
}
/**
* @Title: updatePicnews
* @Description: 更新图片新闻
}else {
int count = map.put(user.getNick_name(), 1);count++;
map.put(user.getNick_name(), count);
}
} catch (Exception e) {
continue;
}
}
// for(int i = 0;i<districts.size();i++) {
// if(map.containsKey(JSONObject.fromObject(districts.get(i).toString()).getString("name"))) {
//
// }
// }
System.out.println(districts.toString());
Param.setAttribute("users", users);
setTotalCount(sum[0]);
Param.setSession("districts", districts.toString());
} catch (Exception e) {
e.printStackTrace();
setErrorTip("查询用户异常", "main.jsp");
return "infoTip";
}
return "userShow";
}
/**
* @Title: addUserShow
* @Description: 显示添加用户页面
* @return String
*/
public String addUserShow(){
return "userEdit";
}
/**
* @Title: addUser
* @Description: 添加用户
* @return String
*/
public String addUser(){
try {
//添加用户
paramsUser.setUser_type(1);
paramsUser.setReg_date(DateUtil.dateToDateString(new Date(), "yyyy-MM-dd HH:mm:ss"));
adminManager.addUser(paramsUser);
} catch (Exception e) {
setErrorTip("添加用户异常", "Admin_listUsers.action");
public String createCollegeShow(){
return "collegeCreate";
}
/**
* @Title: createCollege
* @Description: 申请创建社团
* @return String
*/
public String createCollege(){
try {
//检查社团名字是否已经存在
College college = indexManager.getCollege(paramsCollege);
if (college!=null) {
setErrorReason("创建失败!该社团名字已经存在!");
return "error2";
}
//创建社团
indexManager.createCollege(paramsCollege);
} catch (Exception e) {
e.printStackTrace();
setErrorReason("创建失败!后台服务器繁忙!");
return "error2";
}
return "success";
}
/**
* @Title: joinMemberShow
* @Description: 申请创建社团页面
* @return String
*/
public String joinMemberShow(){
College college = indexManager.getCollege(paramsCollege);
Param.setAttribute("college", college);
return "memberJoin";
}
/**
* @Title: joinMember
* @Description: 申请加入社团
* @return String
*/
public String joinMember(){
try {
//检查社团是否已经加入
Member member = indexManager.getMember(paramsMember);
if (member!=null) {
List<Member> members = null;
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("SELECT * FROM (");
sBuilder.append("SELECT m.*,u.real_name,c.college_name FROM `member` m join user u on m.user_id=u.user_id ");
sBuilder.append(" join college c on m.college_id=c.college_id join user u2 on c.user_id=u2.user_id WHERE 1=1 ");
if (member.getMember_id()!=0) {
sBuilder.append(" and member_id = " + member.getMember_id() +" ");
}
if (member.getUser_id()!=0) {
sBuilder.append(" and m.user_id = " + member.getUser_id() +" ");
}
if (!StringUtil.isEmptyString(member.getReal_name())) {
sBuilder.append(" and u.real_name like '%" + member.getReal_name() + "%'");
}
if (!StringUtil.isEmptyString(member.getCollege_name())) {
sBuilder.append(" and c.college_name like '%" + member.getCollege_name() + "%'");
}
if (member.getMember_flag()!=0) {
sBuilder.append(" and member_flag =" + member.getMember_flag() + " ");
}
if (member.getAdmin_id()!=0) {
sBuilder.append(" and u2.user_id =" + member.getAdmin_id() + " ");
}
sBuilder.append(" order by member_id asc) t");
if (member.getStart() != -1) {
sBuilder.append(" limit " + member.getStart() + "," + member.getLimit());
}
List<Object> list = BaseDao.executeQuery(Member.class.getName(), sBuilder.toString(), null, conn);
if (list != null && list.size() > 0) {
members = new ArrayList<Member>();
for (Object object : list) {
members.add((Member)object);
}
}
return members;
}
public int listMembersCount(Member member, Connection conn){
int sum = 0;
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("SELECT count(*) FROM `member` m join user u on m.user_id=u.user_id join college c on m.college_id=c.college_id join user u2 on c.user_id=u2.user_id WHERE 1=1");
if (member.getMember_id()!=0) {
sBuilder.append(" and member_id = " + member.getMember_id() +" ");
}
if (member.getMember_id()!=0) {
sBuilder.append(" and member_id = " + member.getMember_id() +" ");
}
if (member.getUser_id()!=0) {
try {
//删除活动消息
adminManager.delActivitys(paramsActivity);
} catch (Exception e) {
setErrorTip("删除活动消息异常", "Admin_listActivitys.action");
}
setSuccessTip("删除活动消息成功", "Admin_listActivitys.action");
return "infoTip";
}
/**
* @Title: listNewss
* @Description: 查询新闻资讯
* @return String
*/
public String listNewss(){
try {
//查询新闻资讯
if (paramsNews==null) {
paramsNews = new News();
}
//设置分页信息
setPagination(paramsNews);
//用户身份判断
User admin = (User) Param.getSession("admin");
if (admin.getUser_type()==2) {
//社团管理员
paramsNews.setUser_id(admin.getUser_id());
}
int[] sum={0};
List<News> newss = adminManager.listNewss(paramsNews,sum);
Param.setAttribute("newss", newss);
setTotalCount(sum[0]);
} catch (Exception e) {
setErrorTip("查询新闻资讯异常", "main.jsp");
return "infoTip";
}
return "newsShow";
}
/**
* @Title: approveNews
* @Description: 新闻资讯审批
* @return String
sBuilder.append(" ,sblog_flag = " + sblog.getSblog_flag() );
}
sBuilder.append(" where sblog_id = " + sblog.getSblog_id() );
Object[] params = null;
return BaseDao.executeUpdate(sBuilder.toString(), params, conn); }
public Sblog getSblog(Sblog sblog, Connection conn){
Sblog _sblog=null;
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("SELECT s.*,u.nick_name,u.real_name,u.user_name from sblog s join user u on s.user_id = u.user_id WHERE sblog_id = " + sblog.getSblog_id() );
List<Object> list = BaseDao.executeQuery(Sblog.class.getName(), sBuilder.toString(), null, conn);
if (list != null && list.size() > 0) {
_sblog = (Sblog)list.get(0);
}
return _sblog;
}
public List<Sblog> listSblogs(Sblog sblog, Connection conn){
List<Sblog> sblogs = null;
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("SELECT * FROM (");
sBuilder.append("SELECT s.*,u.nick_name,u.real_name,u.user_name from sblog s join user u on s.user_id = u.user_id where 1=1");
if (sblog.getSblog_id()!=0) {
sBuilder.append(" and sblog_id = " + sblog.getSblog_id() );
}
if (!StringUtil.isEmptyString(sblog.getSblog_title())) {
sBuilder.append(" and sblog_title like '%" + sblog.getSblog_title() +"%'");
}
if (sblog.getSblog_flag()!=0) {
sBuilder.append(" and sblog_flag = " + sblog.getSblog_flag() );
}
sBuilder.append(" order by sblog_date desc,sblog_id asc) t");
if (sblog.getStart() != -1) {
sBuilder.append(" limit " + sblog.getStart() + "," + sblog.getLimit());
}
* @param activity
* @return void
*/
public void approveActivity(Activity activity){
Connection conn = BaseDao.getConnection();
activity.setActivity_flag(2);
activityDao.updateActivity(activity, conn);
BaseDao.closeDB(null, null, conn);
}
/**
* @Title: updateActivity
* @Description: 更新活动消息信息
* @param activity
* @return void
*/
public void updateActivity(Activity activity){
Connection conn = BaseDao.getConnection();
//活动消息内容编码后保存
if (!StringUtil.isEmptyString(activity.getActivity_content())) {
activity.setActivity_content(Transcode.htmlEncode(activity.getActivity_content()));
}
activityDao.updateActivity(activity, conn);
BaseDao.closeDB(null, null, conn);
}
/**
* @Title: delActivitys
* @Description: 删除活动消息信息
* @param activity
* @return void
*/
public void delActivitys(Activity activity){
Connection conn = BaseDao.getConnection();
activityDao.delActivitys(activity.getIds().split(","), conn);
BaseDao.closeDB(null, null, conn);
}
/**
* @Title: listNewss
* @Description: 新闻查询
* @param news
* @return List<News>
return paramsPicnews;
}
public void setParamsPicnews(Picnews paramsPicnews) {
this.paramsPicnews = paramsPicnews;
}
public Activity getParamsActivity() {
return paramsActivity;
}
public void setParamsActivity(Activity paramsActivity) {
this.paramsActivity = paramsActivity;
}
public String getTip() {
return tip;
}
public void setTip(String tip) {
this.tip = tip;
}
public College getParamsCollege() {
return paramsCollege;
}
public void setParamsCollege(College paramsCollege) {
this.paramsCollege = paramsCollege;
}
public Equip getParamsEquip() {
return paramsEquip;
}
public void setParamsEquip(Equip paramsEquip) {
this.paramsEquip = paramsEquip;
}
public Member getParamsMember() {
return paramsMember;
}
public void setParamsMember(Member paramsMember) {
this.paramsMember = paramsMember;
}
public User getParamsUser() {
return paramsUser;
}
public void setParamsUser(User paramsUser) {
this.paramsUser = paramsUser;
}
}
if (activity.getActivity_flag()!=0) {
sBuilder.append(" , activity_flag =" + activity.getActivity_flag() + " ");
}
sBuilder.append("where activity_id = " + activity.getActivity_id() +" ");
Object[] params = null;
return BaseDao.executeUpdate(sBuilder.toString(), params, conn);
}
public Activity getActivity(Activity activity, Connection conn){
Activity _activity=null;
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("SELECT * FROM activity WHERE 1=1");
if (activity.getActivity_id()!=0) {
sBuilder.append(" and activity_id = " + activity.getActivity_id() +" ");
}
List<Object> list = BaseDao.executeQuery(Activity.class.getName(), sBuilder.toString(), null, conn);
if (list != null && list.size() > 0) {
_activity = (Activity)list.get(0);
}
return _activity;
}
public List<Activity> listActivitys(Activity activity, Connection conn){
List<Activity> activitys = null;
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("SELECT * FROM (");
sBuilder.append("SELECT * FROM activity WHERE 1=1");
if (activity.getActivity_id()!=0) {
sBuilder.append(" and activity_id = " + activity.getActivity_id() +" ");
}
if (!StringUtil.isEmptyString(activity.getActivity_title())) {
sBuilder.append(" and activity_title like '%" + activity.getActivity_title() + "%' ");
}
if (!StringUtil.isEmptyString(activity.getActivity_content())) {
sBuilder.append(" and activity_content like '%" + activity.getActivity_content() + "%' ");
}
if (!StringUtil.isEmptyString(activity.getActivity_date())) {
sBuilder.append(" and activity_date ='" + activity.getActivity_date() + "' ");
}
if (activity.getActivity_flag()!=0) {
sBuilder.append(" and activity_flag =" + activity.getActivity_flag() + " ");
}
if (activity.getActivity_type()!=0) {
sBuilder.append(" and activity_type =" + activity.getActivity_type() + " ");
}
if (activity.getUser_id()!=0) {
sBuilder.append(" and user_id =" + activity.getUser_id() + " ");
/**
* @Title: listNewss
* @Description: 查询新闻资讯
* @return String
*/
public String searchNewss(){
try {
//查询新闻资讯
if (paramsNews==null) {
paramsNews = new News();
}
paramsNews.setNews_flag(2);
setPagination(paramsNews);
int[] sum={0};
List<News> newss = indexManager.listNewss(paramsNews,sum);
Param.setAttribute("newss", newss);
setTotalCount(sum[0]);
} catch (Exception e) {
e.printStackTrace();
return "error";
}
return "news";
}
/**
* @Title: queryNews
* @Description: 查询新闻资讯详情
* @return String
*/
public String queryNews(){
try {
//查询新闻资讯详情
News news = indexManager.getNews(paramsNews);
Param.setAttribute("news", news);
Param.setAttribute("news_type", paramsNews.getNews_type());
} catch (Exception e) {
e.printStackTrace();
return "error";
}
List<Object> list = BaseDao.executeQuery(User.class.getName(), sBuilder.toString(), null, conn);
if (list != null && list.size() > 0) {
users = new ArrayList<User>();
for (Object object : list) {
users.add((User)object);
}
}
return users;
}
public int listUsersCount(User user, Connection conn){
int sum = 0;
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("SELECT count(*) FROM user WHERE 1=1");
if (user.getUser_id()!=0) {
sBuilder.append(" and user_id =" + user.getUser_id() +" ");
}
if (!StringUtil.isEmptyString(user.getUser_name())) {
sBuilder.append(" and user_name like '%" + user.getUser_name() +"%' ");
}
if (!StringUtil.isEmptyString(user.getNick_name())) {
sBuilder.append(" and nick_name like '%" + user.getNick_name() +"%' ");
}
if (!StringUtil.isEmptyString(user.getReal_name())) {
sBuilder.append(" and real_name like '%" + user.getReal_name() +"%' ");
}
if (!StringUtil.isEmptyString(user.getUser_dept())) {
sBuilder.append(" and user_dept like '%" + user.getUser_dept() +"%' ");
}
if (user.getUser_type()!=0) {
sBuilder.append(" and user_type =" + user.getUser_type() +" ");
}
if (!StringUtil.isEmptyString(user.getUser_types())) {
sBuilder.append(" and user_type in (" + user.getUser_types() +") ");
}
long count = (Long)BaseDao.executeQueryObject(sBuilder.toString(), null, conn);
sum = (int)count;
return sum;
}
}
BaseDao.closeDB(null, null, conn);
}
/**
* @Title: listNewss
* @Description: 新闻查询
* @param news
* @return List<News>
*/
public List<News> listNewss(News news,int[] sum){
Connection conn = BaseDao.getConnection();
if (sum!=null) {
sum[0] = newsDao.listNewssCount(news, conn);
}
List<News> newss = newsDao.listNewss(news,conn);
BaseDao.closeDB(null, null, conn);
return newss;
}
/**
* @Title: getNews
* @Description: 新闻查询
* @param news
* @return News
*/
public News getNews(News news){
Connection conn = BaseDao.getConnection();
News _news = newsDao.getNews(news, conn);
BaseDao.closeDB(null, null, conn);
return _news;
}
/**
* @Title: addNews
* @Description: 添加新闻
* @param news
* @return void
*/
public void addNews(News news){
Connection conn = BaseDao.getConnection();
news.setNews_date(DateUtil.dateToDateString(new Date(), "yyyy-MM-dd HH:mm:ss"));
//新闻内容编码后保存
if (!StringUtil.isEmptyString(news.getNews_content())) {
news.setNews_content(Transcode.htmlEncode(news.getNews_content()));
}
newsDao.addNews(news, conn);
BaseDao.closeDB(null, null, conn);
}
/**
* @Title: updateNews
* @Description: 更新新闻信息
this.activity_title=activity_title;
}
public String getActivity_title(){
return activity_title;
}
public void setActivity_content(String activity_content){
this.activity_content=activity_content;
}
public String getActivity_contentShow(){
if (!StringUtil.isEmptyString(activity_content)) {
return Transcode.htmlDiscode(activity_content);
}
return activity_content;
}
public String getActivity_content(){
return activity_content;
}
public void setActivity_date(String activity_date){
this.activity_date=activity_date;
}
public String getActivity_date(){
return activity_date;
}
public void setActivity_address(String activity_address){
this.activity_address=activity_address;
}
public String getActivity_address(){
return activity_address;
}
public void setActivity_equip(String activity_equip){
this.activity_equip=activity_equip;
}
public String getActivity_equip(){
return activity_equip;
}
Param.setSession("admin", admin);
} catch (Exception e) {
setErrorTip("编辑异常", "modifyInfo.jsp");
}
setSuccessTip("编辑成功", "modifyInfo.jsp");
return "infoTip";
}
/**
* @Title: saveAdminPass
* @Description: 保存修改个人密码
* @return String
*/
public String saveAdminPass(){
try {
//验证用户会话是否失效
if (!validateAdmin()) {
return "loginTip";
}
//保存修改个人密码
adminManager.updateUser(paramsUser);
//更新session
User admin = (User)Param.getSession("admin");
if (admin!=null) {
admin.setUser_pass(paramsUser.getUser_pass());
Param.setSession("admin", admin);
}
} catch (Exception e) {
setErrorTip("修改异常", "modifyPwd.jsp");
}
setSuccessTip("修改成功", "modifyPwd.jsp");
return "infoTip";
}
public static void main(String[] args) {
System.out.println(HttpUtil.get("http://api.map.baidu.com/geocoder?address=武汉市&output=json&key=37492c0ee6f924cb5e934fa08c6b1676"));
}
/**
* @Title: listUsers
* @Description: 查询用户
* @return String
*/
* @Description: 查询创建社团申请
* @return String
*/
public String myCollegeApply(){
try {
//查询社团申请
if (paramsCollege==null) {
paramsCollege = new College();
}
//设置身份为当前用户
User userFront = (User) Param.getSession("userFront");
paramsCollege.setUser_id(userFront.getUser_id());
//设置分页信息
setPagination(paramsCollege);
int[] sum={0};
List<College> colleges = indexManager.listColleges(paramsCollege,sum);
Param.setAttribute("colleges", colleges);
setTotalCount(sum[0]);
} catch (Exception e) {
e.printStackTrace();
return "error";
}
return "myCollegeApply";
}
/**
* @Title: myMemberApply
* @Description: 查询加入社团申请
* @return String
*/
public String myMemberApply(){
try {
//查询加入社团申请
if (paramsMember==null) {
paramsMember = new Member();
}
//设置身份为当前用户
User userFront = (User) Param.getSession("userFront");
paramsMember.setUser_id(userFront.getUser_id());
//设置分页信息