基于javaweb+mysql的ssm美食论坛系统(java+ssm+jsp+jquery+layui+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SSM美食论坛系统(java+ssm+jsp+jquery+layui+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.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 6.数据库:MySql 5.7版本;
技术栈
- 后端:Spring SpringMVC MyBatis 2. 前端:JSP+jQuery+LayUI
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行; 3. 将项目中db.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入http://localhost:8080/cateforumssm 登录
try { //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 wwb = Workbook.createWorkbook(new File(fileName)); } catch (IOException e) { e.printStackTrace(); } if (wwb != null) { //创建一个可写入的工作表 //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置 WritableSheet ws = wwb.createSheet("sheet1", 0); ws.setColumnView(0, 20); ws.setColumnView(1, 20); ws.setColumnView(2, 20); ws.setColumnView(3, 20); ws.setColumnView(4, 20); ws.setColumnView(5, 20); try { for (int i = 0; i < pros.length; i++) { Label label1 = new Label(i, 0, ""); label1.setString(pros[i]); ws.addCell(label1); } } catch (RowsExceededException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (WriteException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //下面开始添加单元格 int i = 1; for (List t : mlist) { try { Iterator it = t.iterator(); int jj = 0; while (it.hasNext()) { Label label1 = new Label(jj, i, ""); String a = it.next().toString(); label1.setString(a); ws.addCell(label1); jj++; }
复制
ResultSetMetaData rsmd = rs.getMetaData(); int i = rsmd.getColumnCount(); for (int j = 2; j <= i; j++) { str += rsmd.getColumnName(j) + ","; } } catch (Exception e) { e.printStackTrace(); } str = str.substring(0, str.length() - 1); return str; } public String update(HttpServletRequest request, HttpServletResponse response, String tablename, HashMap extmap, boolean alert, boolean reflush) { if (request.getParameter("f") != null) { Enumeration enumeration = request.getParameterNames(); String names = ","; while (enumeration.hasMoreElements()) { names += enumeration.nextElement().toString() + ","; } HashMap typemap = new HashMap(); ArrayList<String> collist = new ArrayList(); String sql = "update " + tablename + " set "; Connection conn = this.getConn(); try { Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("select * from " + tablename); ResultSetMetaData rsmd = rs.getMetaData(); int i = rsmd.getColumnCount(); System.out.println(i); for (int j = 1; j <= i; j++) { if (rsmd.getColumnName(j).equals("id")) continue; typemap.put(rsmd.getColumnName(j) + "---", rsmd.getColumnTypeName(j)); collist.add(rsmd.getColumnName(j)); if (names.indexOf("," + rsmd.getColumnName(j) + ",") > -1) { String[] values = request.getParameterValues(rsmd.getColumnName(j)); String value = ""; for (String vstr : values) { if (vstr == null) vstr = ""; if (vstr.equals("null")) vstr = ""; if (vstr.trim().equals("")) continue;
复制
@Controller public class MgwordController extends BaseController { @Resource MgwordDAO mgwordDAO; //后台敏感字符列表 @RequestMapping("admin/mgwordList") public String newsList(HttpServletRequest request) { String index = request.getParameter("index"); int pageindex = 1; if(index!=null){
复制
// TODO Auto-generated catch block e.printStackTrace(); } } //删除回贴 @RequestMapping("delHt") public void delHt(int id, HttpServletRequest request,HttpServletResponse response) { try { tzhtinfoDAO.delHt(id); PrintWriter out = response.getWriter(); out.print(id); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //我回复的贴子 @RequestMapping("myHf") public String myHf(HttpServletRequest request){ Member m = (Member)request.getSession().getAttribute("member"); if(m!=null){ List<Tzinfo> publishlist = tzinfoDAO.myTzinfo(m.getId()); String index = request.getParameter("index"); int pageindex = 1; if(index!=null){ pageindex = Integer.parseInt(index); } Page<Object> page = PageHelper.startPage(pageindex,6); List<Tzhtinfo> list = tzhtinfoDAO.selectNorepetition(m.getId()); for(Tzhtinfo tzhtinfo:list){ Tzinfo tzinfo = tzinfoDAO.findById(tzhtinfo.getTzid()); List<Tzhtinfo> htlist = tzhtinfoDAO.selectHtinfo(tzinfo.getId()); tzinfo.setAllhtlist(htlist); Bbstype ftype = bbstypeDAO.findById(tzinfo.getFid()); tzhtinfo.setFtype(ftype); tzhtinfo.setTzinfo(tzinfo); } request.setAttribute("list", list); request.setAttribute("publishlist", publishlist); request.setAttribute("index", page.getPageNum()); request.setAttribute("pages", page.getPages()); request.setAttribute("total", page.getTotal()); return "myhf"; }else{ return "login"; } }
复制
@Controller public class BbstypeController extends BaseController { @Resource BbstypeDAO bbstypeDAO; @Resource BanzhuDAO banzhuDAO; @Resource MemberDAO memberDAO; //后台版块列表 @RequestMapping("admin/bbstypeList") public String bbstypeList(HttpServletRequest request) { String index = request.getParameter("index"); int pageindex = 1; if(index!=null){ pageindex = Integer.parseInt(index); } Page<Object> page = PageHelper.startPage(pageindex,6); List<Bbstype> list = bbstypeDAO.selectAll(); for(int i=0;i<list.size();i++){ List<Bbstype> childlist = bbstypeDAO.selectChildtype(list.get(i).getId()); list.get(i).setChildlist(childlist); List<Banzhu> banzhulist = banzhuDAO.selectOne(list.get(i).getId()); if(banzhulist.size()!=0){ Member banzhu = memberDAO.findById(banzhulist.get(0).getMemberid()); list.get(i).setBanzhu(banzhu); } } request.setAttribute("list", list); request.setAttribute("index", page.getPageNum()); request.setAttribute("pages", page.getPages()); request.setAttribute("total", page.getTotal());
复制
return value; } public HashMap getmap(String id, String table) { List<HashMap> list = new ArrayList(); try { Statement st = conn.createStatement(); System.out.println("select * from " + table + " where id=" + id); ResultSet rs = st.executeQuery("select * from " + table + " where id=" + id); ResultSetMetaData rsmd = rs.getMetaData(); while (rs.next()) { HashMap map = new HashMap(); int i = rsmd.getColumnCount(); for (int j = 1; j <= i; j++) { if (!rsmd.getColumnName(j).equals("ID")) { String str = rs.getString(j) == null ? "" : rs.getString(j); if (str.equals("null")) str = ""; map.put(rsmd.getColumnName(j), str); } else map.put("id", rs.getString(j)); } list.add(map); } rs.close(); st.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list.get(0); } public String insert(HttpServletRequest request, HttpServletResponse response, String tablename, HashMap extmap, boolean alert, boolean reflush) { extmap.put("savetime", Info.getDateStr()); if (request.getParameter("f") != null) { HashMap typemap = new HashMap(); ArrayList<String> collist = new ArrayList(); String sql = "insert into " + tablename + "("; Connection conn = this.getConn(); try { Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("select * from " + tablename); ResultSetMetaData rsmd = rs.getMetaData();
复制
try { Statement st = conn.createStatement(); for (String str : collist) { if (names.indexOf("," + str + ",") > -1) { String[] values = request.getParameterValues(str); String value = ""; for (String vstr : values) { if (vstr == null) vstr = ""; if (vstr.equals("null")) vstr = ""; if (vstr.trim().equals("")) continue; if (request.getParameter(vstr) != null && !"".equals(request.getParameter(vstr)) && request.getParameter("dk-" + str + "-value") != null) { String dkv = request.getParameter(vstr); String dknamevalue = request.getParameter("dk-" + str + "-value"); vstr += " - " + dknamevalue + ":" + dkv; } value += vstr + " ~ "; } if (value == null) value = ""; if (value.equals("null")) value = ""; if (value.length() > 0) value = value.substring(0, value.length() - 3); if (typemap.get(str + "---").equals("int")) { sql += (value.equals("") ? -10 : value) + ","; } else { sql += "'" + (value.equals("null") ? "" : value) + "',"; } } else { if (typemap.get(str + "---").equals("int")) { sql += (extmap.get(str) == null ? "" : extmap.get(str)) + ","; } else { sql += "'" + (extmap.get(str) == null ? "" : extmap.get(str)) + "',"; } } } sql = sql.substring(0, sql.length() - 1) + ")"; System.out.println(sql); this.commOper(sql); st.close();
复制
public static String getImgUpInfo5(int height) { String jscode = ""; jscode += "<img style=\"cursor: hand\" οnclick=\"uploadimg5()\" src=\"/vehiclemanagementsys/js/nopic.jpg\" id=txt5 height=\"" + height + "\"/>"; jscode += "<input type=hidden name=\"filename5\" id=\"filename5\" value=\"\" />"; return jscode; } public static String fck(int height, String content) { String jscode = "<TEXTAREA name=\"content\" id=\"content\">" + content + "</TEXTAREA>"; jscode += "<script language=\"javascript\">"; jscode += "function fckinit()"; jscode += "{"; jscode += " var of = new FCKeditor(\"content\");"; jscode += "of.BasePath=\"/vehiclemanagementsys/fckeditor/\";"; jscode += "of.Height = \"" + height + "\";"; jscode += "of.ToolbarSet=\"Default\";"; jscode += "of.ReplaceTextarea();"; jscode += "}"; jscode += "fckinit();"; jscode += "</script>"; return jscode; } public synchronized static String subStr(String source, int length) { if (source.length() > length) { source = source.substring(0, length) + "..."; } return source; } public static String getDateStr() { String dateString = ""; try {//yyyyMMddHHmmss java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date currentTime_1 = new java.util.Date(); dateString = formatter.format(currentTime_1); } catch (Exception e) { } return dateString; }
复制
@Resource SxinfoDAO sxinfoDAO; @Resource MemberDAO memberDAO; //查找私信人到私信添加页面 @RequestMapping("sxShow") public String sxShow(int memberid,int sxmemberid, HttpServletRequest request) { Member member = memberDAO.findById(sxmemberid); request.setAttribute("sxmember", member); request.setAttribute("memberid", memberid); return "sxadd"; } //添加私信 @RequestMapping("sxAdd") public void jinyanJc(Sxinfo sxinfo, HttpServletRequest request,HttpServletResponse response) { try { sxinfo.setHfnote(""); sxinfo.setSavetime(Info.getDateStr()); sxinfoDAO.add(sxinfo); PrintWriter out = response.getWriter(); out.print(sxinfo.getSxmemberid()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //前台页面查询私信 @RequestMapping("mysendSx") public String newsList(HttpServletRequest request) { Member member = (Member)request.getSession().getAttribute("member"); String index = request.getParameter("index"); int pageindex = 1; if(index!=null){ pageindex = Integer.parseInt(index); } Page<Object> page = PageHelper.startPage(pageindex,6); List<Sxinfo> list = sxinfoDAO.selectMysendsx(member.getId()); for(Sxinfo sxinfo:list){ Member sxmember = memberDAO.findById(sxinfo.getSxmemberid()); sxinfo.setSxmember(sxmember); } request.setAttribute("list", list);
复制
dayNumber = (d2.getTime() - d1.getTime()) / mins; } catch (Exception e) { e.printStackTrace(); } return (int) dayNumber; } public static void main(String[] g) { } public static String getselect(String name, String tablename, String zdname) { String select = "<select name=\"" + name + "\" id=\"" + name + "\" >"; for (HashMap permap : new CommDAO().select("select * from " + tablename + " order by id desc")) { select += "<option value=\"" + permap.get(zdname) + "\">" + permap.get(zdname) + "</option>"; } select += "</select>"; return select; } public static String getselect(String name, String tablename, String zdname, String where) { String select = "<select name=\"" + name + "\" id=\"" + name + "\" >"; select += "<option value=\"\">不限</option>"; for (HashMap permap : new CommDAO().select("select * from " + tablename + " where " + where + " order by id desc")) { String optionstr = ""; if (zdname.split(";").length == 1) { optionstr = permap.get(zdname.split("~")[0]).toString(); } else { for (String str : zdname.split(";")) { String zdstr = str.split("~")[0]; String zdnamestr = str.split("~")[1].equals("无名") ? "" : (str.split("~")[1] + ":"); optionstr += zdnamestr + permap.get(zdstr) + " - "; } }
复制
} Page<Object> page = PageHelper.startPage(pageindex,6); List<Chat> list = chatDAO.searchKey(key); for(Chat chat:list){ Member member = memberDAO.findById(chat.getMemberid()); chat.setMember(member); } request.setAttribute("list", list); request.setAttribute("key", key); request.setAttribute("index", page.getPageNum()); request.setAttribute("pages", page.getPages()); request.setAttribute("total", page.getTotal()); return "admin/msgsearch"; } //意见和建议添加 @RequestMapping("chatAdd") public void chatAdd(Chat chat, HttpServletRequest request,HttpServletResponse response) { try { chat.setSavetime(Info.getDateStr()); chat.setHfmsg(""); chatDAO.add(chat); PrintWriter out = response.getWriter(); out.print(0); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //管理员回复意见和建议 @RequestMapping("admin/chatEdit") public String chatAdd(Chat chat, HttpServletRequest request) { chatDAO.update(chat); return "redirect:msgList.do"; } //删除 @RequestMapping("admin/chatDel") public String chatDel(int id, HttpServletRequest request) {
复制
jscode += "{\n"; jscode += "document.getElementById(\"txt4\").src=\"/vehiclemanagementsys/upfile/" + map.get("filename4") + "\";\n"; jscode += "}\n"; jscode += "if(document.getElementById(\"txt5\"))\n"; jscode += "{\n"; jscode += "document.getElementById(\"txt5\").src=\"/vehiclemanagementsys/upfile/" + map.get("filename5") + "\";\n"; jscode += "}\n"; } } jscode += "}\n"; jscode += " getPvalue();\n"; jscode += "</script>\n"; } catch (Exception e) { e.printStackTrace(); } return jscode; } public static String generalFileName(String srcFileName) { try { int index = srcFileName.lastIndexOf("."); return StrUtil.generalSrid() + srcFileName.substring(index).toLowerCase(); } catch (Exception e) { return StrUtil.generalSrid(); } } public synchronized static String getID() { Random random = new Random(); StringBuffer ret = new StringBuffer(20); String rand = String.valueOf(Math.abs(random.nextInt())); ret.append(getDateStr()); ret.append(rand.substring(0, 6)); return ret.toString(); } public static String getImgUpInfo(int height) { String jscode = ""; jscode += "<img style=\"cursor: hand\" οnclick=\"uploadimg()\" src=\"/vehiclemanagementsys/js/nopic.jpg\" id=txt height=\"" + height + "\"/>"; jscode += "<input type=hidden name=\"filename\" id=\"filename\" value=\"\" />"; return jscode; }
复制
try { tzinfoDAO.updateIsjh(id); PrintWriter out = response.getWriter(); out.print(id); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //查找帖子到编辑帖子页面 @RequestMapping("tzinfoShow") public String tzinfoShow(int id,HttpServletRequest request) { Member m = (Member)request.getSession().getAttribute("member"); Member member = memberDAO.findById(m.getId()); Tzinfo tzinfo = tzinfoDAO.findById(id); List<Bbstype> typelist = bbstypeDAO.selectAll(); for(Bbstype bbstype:typelist){ //子类 List<Bbstype> childlist = bbstypeDAO.selectChildtype(bbstype.getId()); bbstype.setChildlist(childlist); //分类贴子 List<Tzinfo> ftypetzinfolist = tzinfoDAO.selectTypetzinfo(bbstype.getId()); bbstype.setFtypetzinfolist(ftypetzinfolist); } request.setAttribute("member", member); request.setAttribute("typelist", typelist); request.setAttribute("tzinfo", tzinfo); return "tzedit"; } //编辑帖子 @RequestMapping("tzinfoEdit") public String tzinfoEdit(Tzinfo tzinfo,HttpServletRequest request) { tzinfoDAO.updata(tzinfo); return "redirect:memberCenter.do"; } //删除贴子和回贴 @RequestMapping("admin/tzinfoDel") public void tzinfoDel(int id,HttpServletRequest request,HttpServletResponse response) { try { PrintWriter out = response.getWriter(); List<Tzhtinfo> htlist = tzhtinfoDAO.selectHtinfo(id); for(Tzhtinfo tzhtinfo:htlist){ tzhtinfoDAO.delHt(tzhtinfo.getId()); } tzinfoDAO.delete(id);
复制
@Controller public class ChatController extends BaseController { @Resource ChatDAO chatDAO; @Resource MemberDAO memberDAO; @Resource BbstypeDAO bbstypeDAO; @Resource NewsDAO newsDAO; @Resource YqlinkDAO yqlinkDAO; @Resource TzinfoDAO tzinfoDAO; @Resource BanzhuDAO banzhuDAO; //前台意见和建议 @RequestMapping("chatList") public String chatList(HttpServletRequest request){ List<Yqlink> yqlinklist = yqlinkDAO.selectAll(); List<Tzinfo> nowtzinfolist = tzinfoDAO.selectNowtzinfo(Info.getDateStr().substring(0,10)); List<News> newslist = newsDAO.selectAll(); String index = request.getParameter("index"); int pageindex = 1; if(index!=null){ pageindex = Integer.parseInt(index); } Page<Object> page = PageHelper.startPage(pageindex,6); List<Chat> list = chatDAO.selectAll(); for(Chat chat:list){ Member member = memberDAO.findById(chat.getMemberid()); chat.setMember(member); } request.setAttribute("yqlinklist", yqlinklist); request.setAttribute("nowtzinfolist", nowtzinfolist); request.setAttribute("newslist", newslist); request.setAttribute("list", list);
复制
public String searchMsg(HttpServletRequest request){ String index = request.getParameter("index"); String key = request.getParameter("key"); int pageindex = 1; if(index!=null){ pageindex = Integer.parseInt(index); } Page<Object> page = PageHelper.startPage(pageindex,6); List<Chat> list = chatDAO.searchKey(key); for(Chat chat:list){ Member member = memberDAO.findById(chat.getMemberid()); chat.setMember(member); } request.setAttribute("list", list); request.setAttribute("key", key); request.setAttribute("index", page.getPageNum()); request.setAttribute("pages", page.getPages()); request.setAttribute("total", page.getTotal()); return "admin/msgsearch"; } //意见和建议添加 @RequestMapping("chatAdd") public void chatAdd(Chat chat, HttpServletRequest request,HttpServletResponse response) { try { chat.setSavetime(Info.getDateStr()); chat.setHfmsg(""); chatDAO.add(chat); PrintWriter out = response.getWriter(); out.print(0); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //管理员回复意见和建议 @RequestMapping("admin/chatEdit") public String chatAdd(Chat chat, HttpServletRequest request) { chatDAO.update(chat); return "redirect:msgList.do"; } //删除 @RequestMapping("admin/chatDel") public String chatDel(int id, HttpServletRequest request) { chatDAO.delete(id); return "redirect:msgList.do"; }
复制
@Controller public class PbinfoController extends BaseController { @Resource PbinfoDAO pbinfoDAO; @Resource MemberDAO memberDAO; //屏蔽 @RequestMapping("pbinfoAdd") public void pbinfoAdd(HttpServletRequest request,HttpServletResponse response){ try { String memberid = request.getParameter("memberid"); String pbmemberid = request.getParameter("pbmemberid"); Pbinfo pbinfo = new Pbinfo(); pbinfo.setMemberid(Integer.parseInt(memberid)); pbinfo.setPbmemberid(Integer.parseInt(pbmemberid)); pbinfoDAO.add(pbinfo); PrintWriter out = response.getWriter();
复制
public Connection getConn() { try { if (conn == null || conn.isClosed()) { /* Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String dburl = (String)config.get("dburl"); conn = DriverManager.getConnection(dburl);*/ String d = new Date().toLocaleString().substring(0, 9); Class.forName("com.mysql.jdbc.Driver"); String dburl = (String) config.get("dburl"); conn = DriverManager.getConnection(dburl, (String) config.get("user_name"), (String) config.get("user_pwd")); } } catch (Exception e) { e.printStackTrace(); } return conn; } public String getCheckBoxValues(HttpServletRequest request, String name) { String value = ""; if (request.getParameterValues(name) != null) { String[] values = request.getParameterValues(name); for (String str : values) { value += str + " ~ "; } } if (value.length() > 0) value = value.substring(0, value.length() - 6); return value; } public String getCheckBoxDkValues(HttpServletRequest request, String name) { String value = ""; String[] values = request.getParameterValues(name); if (values != null) { for (String vstr : values) { if (vstr == null) vstr = ""; if (vstr.equals("null")) vstr = ""; if (vstr.trim().equals("")) continue; if (request.getParameter(vstr) != null && !"".equals(request.getParameter(vstr)) && request.getParameter("dk-" + name + "-value") != null) { String dkv = request.getParameter(vstr); String dknamevalue = request.getParameter("dk-" + name + "-value"); vstr += " - " + dknamevalue + ":" + dkv; } value += vstr + " ~ "; }
复制