• Java项目:ssm+jsp+mysql实现的垃圾分类查询管理系统


    作者主页:夜未央5788

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

    文末获取源码

    项目介绍

    一款由jsp+ssm(spring+springmvc+mybatis)+mysql实现的垃圾分类查询管理系统,项目包含完整源码和sql脚本。
    系统主要实现的功能有:
    1:前端垃圾分类查询,前端采用bootstrap框架,自适应设备的。
    2:后台菜单管理、角色权限管理、用户管理、日志管理、垃圾分类管理、垃圾管理等功能。

    环境需要

    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版本;

    技术栈

    1. 后端:Spring SpringMVC MyBatis

    2. 前端:JSP+bootstrap

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
    2. 将项目中db.properties配置文件中的数据库配置改为自己的配置

    3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

    若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;

    4. 运行项目,输入localhost:8080/ 登录

    运行截图

     

     

     

     

     

     

     

    相关代码 

    HomeController

    1. package com.ischoolbar.programmer.controller.home;
    2. import java.awt.image.BufferedImage;
    3. import java.io.IOException;
    4. import java.util.HashMap;
    5. import java.util.List;
    6. import java.util.Map;
    7. import javax.imageio.ImageIO;
    8. import javax.servlet.http.HttpServletRequest;
    9. import javax.servlet.http.HttpServletResponse;
    10. import javax.servlet.http.HttpSession;
    11. import org.apache.commons.lang.StringUtils;
    12. import org.springframework.beans.factory.annotation.Autowired;
    13. import org.springframework.stereotype.Controller;
    14. import org.springframework.web.bind.annotation.RequestMapping;
    15. import org.springframework.web.bind.annotation.RequestMethod;
    16. import org.springframework.web.bind.annotation.RequestParam;
    17. import org.springframework.web.bind.annotation.ResponseBody;
    18. import org.springframework.web.servlet.ModelAndView;
    19. import com.ischoolbar.programmer.entity.admin.Authority;
    20. import com.ischoolbar.programmer.entity.admin.Menu;
    21. import com.ischoolbar.programmer.entity.admin.Role;
    22. import com.ischoolbar.programmer.entity.admin.Rubbish;
    23. import com.ischoolbar.programmer.entity.admin.RubbishCategory;
    24. import com.ischoolbar.programmer.entity.admin.User;
    25. import com.ischoolbar.programmer.service.admin.AuthorityService;
    26. import com.ischoolbar.programmer.service.admin.LogService;
    27. import com.ischoolbar.programmer.service.admin.MenuService;
    28. import com.ischoolbar.programmer.service.admin.RoleService;
    29. import com.ischoolbar.programmer.service.admin.RubbishCategoryService;
    30. import com.ischoolbar.programmer.service.admin.RubbishService;
    31. import com.ischoolbar.programmer.service.admin.UserService;
    32. import com.ischoolbar.programmer.util.CpachaUtil;
    33. import com.ischoolbar.programmer.util.MenuUtil;
    34. /**
    35. * 系统操作类控制器
    36. * @author llq
    37. *
    38. */
    39. @Controller
    40. @RequestMapping("/home")
    41. public class HomeController {
    42. @Autowired
    43. private RubbishCategoryService rubbishCategoryService;
    44. @Autowired
    45. private RubbishService rubbishService;
    46. /**
    47. * 系统登录后的主页
    48. * @param model
    49. * @return
    50. */
    51. @RequestMapping(value="/index",method=RequestMethod.GET)
    52. public ModelAndView index(ModelAndView model){
    53. model.setViewName("home/index");
    54. return model;//WEB-INF/views/+system/index+.jsp = WEB-INF/views/system/index.jsp
    55. }
    56. /**
    57. * 系统登录后的欢迎页
    58. * @param model
    59. * @return
    60. */
    61. @RequestMapping(value="/search",method=RequestMethod.GET)
    62. public ModelAndView search(@RequestParam(name="k",required=false,defaultValue="") String name,ModelAndView model){
    63. RubbishCategory rubbishCategory = null;
    64. if(!StringUtils.isEmpty(name)){
    65. //先查询垃圾表
    66. List rubbishList = rubbishService.findByName(name);
    67. if(rubbishList != null && rubbishList.size() > 0){
    68. rubbishCategory = rubbishList.get(0).getRubbishCategory();
    69. }else{
    70. //若垃圾表未查询到,再查询分类表
    71. List rubbishCategoryList = rubbishCategoryService.findByCommon(name);
    72. if(rubbishCategoryList != null && rubbishCategoryList.size() > 0)
    73. rubbishCategory = rubbishCategoryList.get(0);
    74. }
    75. }
    76. model.addObject("k", name);
    77. model.addObject("rubbishCategory", rubbishCategory);
    78. model.setViewName("home/search");
    79. return model;
    80. }
    81. }

    NewsController

    1. package com.ischoolbar.programmer.controller.admin;
    2. import java.util.Date;
    3. import java.util.HashMap;
    4. import java.util.Map;
    5. import org.apache.commons.lang.StringUtils;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.stereotype.Controller;
    8. import org.springframework.web.bind.annotation.RequestMapping;
    9. import org.springframework.web.bind.annotation.RequestMethod;
    10. import org.springframework.web.bind.annotation.RequestParam;
    11. import org.springframework.web.bind.annotation.ResponseBody;
    12. import org.springframework.web.servlet.ModelAndView;
    13. import com.ischoolbar.programmer.entity.admin.Log;
    14. import com.ischoolbar.programmer.page.admin.Page;
    15. import com.ischoolbar.programmer.service.admin.LogService;
    16. /**
    17. *
    18. * @author llq
    19. *
    20. */
    21. @RequestMapping("/admin/news")
    22. @Controller
    23. public class NewsController {
    24. @Autowired
    25. private LogService logService;
    26. @RequestMapping(value="/list",method=RequestMethod.GET)
    27. public ModelAndView list(ModelAndView model){
    28. model.setViewName("news/list");
    29. return model;
    30. }
    31. /**
    32. * 获取日志列表
    33. * @param page
    34. * @param content
    35. * @param roleId
    36. * @param sex
    37. * @return
    38. */
    39. @RequestMapping(value="/list",method=RequestMethod.POST)
    40. @ResponseBody
    41. public Map getList(Page page,
    42. @RequestParam(name="content",required=false,defaultValue="") String content
    43. ){
    44. Map ret = new HashMap();
    45. Map queryMap = new HashMap();
    46. queryMap.put("content", content);
    47. queryMap.put("offset", page.getOffset());
    48. queryMap.put("pageSize", page.getRows());
    49. ret.put("rows", logService.findList(queryMap));
    50. ret.put("total", logService.getTotal(queryMap));
    51. return ret;
    52. }
    53. /**
    54. * 添加日志
    55. * @param user
    56. * @return
    57. */
    58. @RequestMapping(value="/add",method=RequestMethod.POST)
    59. @ResponseBody
    60. public Map add(Log log){
    61. Map ret = new HashMap();
    62. if(log == null){
    63. ret.put("type", "error");
    64. ret.put("msg", "请填写正确的日志信息!");
    65. return ret;
    66. }
    67. if(StringUtils.isEmpty(log.getContent())){
    68. ret.put("type", "error");
    69. ret.put("msg", "请填写日志内容!");
    70. return ret;
    71. }
    72. log.setCreateTime(new Date());
    73. if(logService.add(log) <= 0){
    74. ret.put("type", "error");
    75. ret.put("msg", "日志添加失败,请联系管理员!");
    76. return ret;
    77. }
    78. ret.put("type", "success");
    79. ret.put("msg", "日志添加成功!");
    80. return ret;
    81. }
    82. /**
    83. * 批量删除日志
    84. * @param ids
    85. * @return
    86. */
    87. @RequestMapping(value="/delete",method=RequestMethod.POST)
    88. @ResponseBody
    89. public Map delete(String ids){
    90. Map ret = new HashMap();
    91. if(StringUtils.isEmpty(ids)){
    92. ret.put("type", "error");
    93. ret.put("msg", "选择要删除的数据!");
    94. return ret;
    95. }
    96. if(ids.contains(",")){
    97. ids = ids.substring(0,ids.length()-1);
    98. }
    99. if(logService.delete(ids) <= 0){
    100. ret.put("type", "error");
    101. ret.put("msg", "日志删除失败,请联系管理员!");
    102. return ret;
    103. }
    104. ret.put("type", "success");
    105. ret.put("msg", "日志删除成功!");
    106. return ret;
    107. }
    108. }

    垃圾管理控制器

    1. package com.ischoolbar.programmer.controller.admin;
    2. import java.util.HashMap;
    3. import java.util.Map;
    4. import org.apache.commons.lang.StringUtils;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Controller;
    7. import org.springframework.web.bind.annotation.RequestMapping;
    8. import org.springframework.web.bind.annotation.RequestMethod;
    9. import org.springframework.web.bind.annotation.RequestParam;
    10. import org.springframework.web.bind.annotation.ResponseBody;
    11. import org.springframework.web.servlet.ModelAndView;
    12. import com.ischoolbar.programmer.entity.admin.Rubbish;
    13. import com.ischoolbar.programmer.page.admin.Page;
    14. import com.ischoolbar.programmer.service.admin.RubbishCategoryService;
    15. import com.ischoolbar.programmer.service.admin.RubbishService;
    16. /**
    17. * 垃圾管理控制器
    18. * @author llq
    19. *
    20. */
    21. @RequestMapping("/admin/rubbish")
    22. @Controller
    23. public class RubbishController {
    24. @Autowired
    25. private RubbishCategoryService rubbishCategoryService;
    26. @Autowired
    27. private RubbishService rubbishService;
    28. /**
    29. * 垃圾列表页面
    30. * @param model
    31. * @return
    32. */
    33. @RequestMapping(value="/list",method=RequestMethod.GET)
    34. public ModelAndView list(ModelAndView model){
    35. model.addObject("rubbishCategoryList", rubbishCategoryService.findList(null));
    36. model.setViewName("rubbish/list");
    37. return model;
    38. }
    39. /**
    40. * 获取垃圾列表
    41. * @param page
    42. * @param name
    43. * @param roleId
    44. * @param sex
    45. * @return
    46. */
    47. @RequestMapping(value="/list",method=RequestMethod.POST)
    48. @ResponseBody
    49. public Map getList(Page page,
    50. @RequestParam(name="name",required=false,defaultValue="") String name,
    51. Long categoryId
    52. ){
    53. Map ret = new HashMap();
    54. Map queryMap = new HashMap();
    55. if(categoryId != null){
    56. queryMap.put("categoryId", categoryId);
    57. }
    58. queryMap.put("name", name);
    59. queryMap.put("offset", page.getOffset());
    60. queryMap.put("pageSize", page.getRows());
    61. ret.put("rows", rubbishService.findList(queryMap));
    62. ret.put("total", rubbishService.getTotal(queryMap));
    63. return ret;
    64. }
    65. /**
    66. * 添加垃圾
    67. * @param rubbish
    68. * @return
    69. */
    70. @RequestMapping(value="/add",method=RequestMethod.POST)
    71. @ResponseBody
    72. public Map add(Rubbish rubbish){
    73. Map ret = new HashMap();
    74. if(rubbish == null){
    75. ret.put("type", "error");
    76. ret.put("msg", "请填写正确的垃圾信息!");
    77. return ret;
    78. }
    79. if(StringUtils.isEmpty(rubbish.getName())){
    80. ret.put("type", "error");
    81. ret.put("msg", "请填写垃圾名!");
    82. return ret;
    83. }
    84. if(rubbishService.add(rubbish) <= 0){
    85. ret.put("type", "error");
    86. ret.put("msg", "垃圾添加失败,请联系管理员!");
    87. return ret;
    88. }
    89. ret.put("type", "success");
    90. ret.put("msg", "添加成功!");
    91. return ret;
    92. }
    93. /**
    94. * 编辑垃圾
    95. * @param rubbish
    96. * @return
    97. */
    98. @RequestMapping(value="/edit",method=RequestMethod.POST)
    99. @ResponseBody
    100. public Map edit(Rubbish rubbish){
    101. Map ret = new HashMap();
    102. if(rubbish == null){
    103. ret.put("type", "error");
    104. ret.put("msg", "请填写正确的垃圾信息!");
    105. return ret;
    106. }
    107. if(StringUtils.isEmpty(rubbish.getName())){
    108. ret.put("type", "error");
    109. ret.put("msg", "请填写垃圾名!");
    110. return ret;
    111. }
    112. if(rubbishService.edit(rubbish) <= 0){
    113. ret.put("type", "error");
    114. ret.put("msg", "垃圾添加失败,请联系管理员!");
    115. return ret;
    116. }
    117. ret.put("type", "success");
    118. ret.put("msg", "编辑成功!");
    119. return ret;
    120. }
    121. /**
    122. * 批量删除垃圾
    123. * @param id
    124. * @return
    125. */
    126. @RequestMapping(value="/delete",method=RequestMethod.POST)
    127. @ResponseBody
    128. public Map delete(Long id){
    129. Map ret = new HashMap();
    130. if(id == null){
    131. ret.put("type", "error");
    132. ret.put("msg", "选择要删除的数据!");
    133. return ret;
    134. }
    135. try {
    136. if(rubbishService.delete(id) <= 0){
    137. ret.put("type", "error");
    138. ret.put("msg", "垃圾删除失败,请联系管理员!");
    139. return ret;
    140. }
    141. } catch (Exception e) {
    142. // TODO: handle exception
    143. ret.put("type", "error");
    144. ret.put("msg", "该垃圾下存在垃圾,请先删除垃圾!");
    145. return ret;
    146. }
    147. ret.put("type", "success");
    148. ret.put("msg", "垃圾删除成功!");
    149. return ret;
    150. }
    151. }

    系统操作类控制器

    1. package com.ischoolbar.programmer.controller.admin;
    2. import java.awt.image.BufferedImage;
    3. import java.io.IOException;
    4. import java.util.HashMap;
    5. import java.util.List;
    6. import java.util.Map;
    7. import javax.imageio.ImageIO;
    8. import javax.servlet.http.HttpServletRequest;
    9. import javax.servlet.http.HttpServletResponse;
    10. import javax.servlet.http.HttpSession;
    11. import org.apache.commons.lang.StringUtils;
    12. import org.springframework.beans.factory.annotation.Autowired;
    13. import org.springframework.stereotype.Controller;
    14. import org.springframework.web.bind.annotation.RequestMapping;
    15. import org.springframework.web.bind.annotation.RequestMethod;
    16. import org.springframework.web.bind.annotation.RequestParam;
    17. import org.springframework.web.bind.annotation.ResponseBody;
    18. import org.springframework.web.servlet.ModelAndView;
    19. import com.ischoolbar.programmer.entity.admin.Authority;
    20. import com.ischoolbar.programmer.entity.admin.Menu;
    21. import com.ischoolbar.programmer.entity.admin.Role;
    22. import com.ischoolbar.programmer.entity.admin.User;
    23. import com.ischoolbar.programmer.service.admin.AuthorityService;
    24. import com.ischoolbar.programmer.service.admin.LogService;
    25. import com.ischoolbar.programmer.service.admin.MenuService;
    26. import com.ischoolbar.programmer.service.admin.RoleService;
    27. import com.ischoolbar.programmer.service.admin.UserService;
    28. import com.ischoolbar.programmer.util.CpachaUtil;
    29. import com.ischoolbar.programmer.util.MenuUtil;
    30. /**
    31. * 系统操作类控制器
    32. * @author llq
    33. *
    34. */
    35. @Controller
    36. @RequestMapping("/system")
    37. public class SystemController {
    38. @Autowired
    39. private UserService userService;
    40. @Autowired
    41. private RoleService roleService;
    42. @Autowired
    43. private AuthorityService authorityService;
    44. @Autowired
    45. private MenuService menuService;
    46. @Autowired
    47. private LogService logService;
    48. /**
    49. * 系统登录后的主页
    50. * @param model
    51. * @return
    52. */
    53. @RequestMapping(value="/index",method=RequestMethod.GET)
    54. public ModelAndView index(ModelAndView model,HttpServletRequest request){
    55. List userMenus = (List)request.getSession().getAttribute("userMenus");
    56. model.addObject("topMenuList", MenuUtil.getAllTopMenu(userMenus));
    57. model.addObject("secondMenuList", MenuUtil.getAllSecondMenu(userMenus));
    58. model.setViewName("system/index");
    59. return model;//WEB-INF/views/+system/index+.jsp = WEB-INF/views/system/index.jsp
    60. }
    61. /**
    62. * 系统登录后的欢迎页
    63. * @param model
    64. * @return
    65. */
    66. @RequestMapping(value="/welcome",method=RequestMethod.GET)
    67. public ModelAndView welcome(ModelAndView model){
    68. model.setViewName("system/welcome");
    69. return model;
    70. }
    71. /**
    72. * 登陆页面
    73. * @param model
    74. * @return
    75. */
    76. @RequestMapping(value="/login",method=RequestMethod.GET)
    77. public ModelAndView login(ModelAndView model){
    78. model.setViewName("system/login");
    79. return model;
    80. }
    81. /**
    82. * 登录表单提交处理控制器
    83. * @param user
    84. * @param cpacha
    85. * @return
    86. */
    87. @RequestMapping(value="/login",method=RequestMethod.POST)
    88. @ResponseBody
    89. public Map loginAct(User user,String cpacha,HttpServletRequest request){
    90. Map ret = new HashMap();
    91. if(user == null){
    92. ret.put("type", "error");
    93. ret.put("msg", "请填写用户信息!");
    94. return ret;
    95. }
    96. if(StringUtils.isEmpty(cpacha)){
    97. ret.put("type", "error");
    98. ret.put("msg", "请填写验证码!");
    99. return ret;
    100. }
    101. if(StringUtils.isEmpty(user.getUsername())){
    102. ret.put("type", "error");
    103. ret.put("msg", "请填写用户名!");
    104. return ret;
    105. }
    106. if(StringUtils.isEmpty(user.getPassword())){
    107. ret.put("type", "error");
    108. ret.put("msg", "请填写密码!");
    109. return ret;
    110. }
    111. Object loginCpacha = request.getSession().getAttribute("loginCpacha");
    112. if(loginCpacha == null){
    113. ret.put("type", "error");
    114. ret.put("msg", "会话超时,请刷新页面!");
    115. return ret;
    116. }
    117. if(!cpacha.toUpperCase().equals(loginCpacha.toString().toUpperCase())){
    118. ret.put("type", "error");
    119. ret.put("msg", "验证码错误!");
    120. logService.add("用户名为"+user.getUsername()+"的用户登录时输入验证码错误!");
    121. return ret;
    122. }
    123. User findByUsername = userService.findByUsername(user.getUsername());
    124. if(findByUsername == null){
    125. ret.put("type", "error");
    126. ret.put("msg", "该用户名不存在!");
    127. logService.add("登录时,用户名为"+user.getUsername()+"的用户不存在!");
    128. return ret;
    129. }
    130. if(!user.getPassword().equals(findByUsername.getPassword())){
    131. ret.put("type", "error");
    132. ret.put("msg", "密码错误!");
    133. logService.add("用户名为"+user.getUsername()+"的用户登录时输入密码错误!");
    134. return ret;
    135. }
    136. //说明用户名密码及验证码都正确
    137. //此时需要查询用户的角色权限
    138. Role role = roleService.find(findByUsername.getRoleId());
    139. List authorityList = authorityService.findListByRoleId(role.getId());//根据角色获取权限列表
    140. String menuIds = "";
    141. for(Authority authority:authorityList){
    142. menuIds += authority.getMenuId() + ",";
    143. }
    144. if(!StringUtils.isEmpty(menuIds)){
    145. menuIds = menuIds.substring(0,menuIds.length()-1);
    146. }
    147. List userMenus = menuService.findListByIds(menuIds);
    148. //把角色信息、菜单信息放到session中
    149. request.getSession().setAttribute("admin", findByUsername);
    150. request.getSession().setAttribute("role", role);
    151. request.getSession().setAttribute("userMenus", userMenus);
    152. ret.put("type", "success");
    153. ret.put("msg", "登录成功!");
    154. logService.add("用户名为{"+user.getUsername()+"},角色为{"+role.getName()+"}的用户登录成功!");
    155. return ret;
    156. }
    157. /**
    158. * 后台退出注销功能
    159. * @param request
    160. * @return
    161. */
    162. @RequestMapping(value="/logout",method=RequestMethod.GET)
    163. public String logout(HttpServletRequest request){
    164. HttpSession session = request.getSession();
    165. session.setAttribute("admin", null);
    166. session.setAttribute("role", null);
    167. request.getSession().setAttribute("userMenus", null);
    168. return "redirect:login";
    169. }
    170. /**
    171. * 修改密码页面
    172. * @param model
    173. * @return
    174. */
    175. @RequestMapping(value="/edit_password",method=RequestMethod.GET)
    176. public ModelAndView editPassword(ModelAndView model){
    177. model.setViewName("system/edit_password");
    178. return model;
    179. }
    180. @RequestMapping(value="/edit_password",method=RequestMethod.POST)
    181. @ResponseBody
    182. public Map editPasswordAct(String newpassword,String oldpassword,HttpServletRequest request){
    183. Map ret = new HashMap();
    184. if(StringUtils.isEmpty(newpassword)){
    185. ret.put("type", "error");
    186. ret.put("msg", "请填写新密码!");
    187. return ret;
    188. }
    189. User user = (User)request.getSession().getAttribute("admin");
    190. if(!user.getPassword().equals(oldpassword)){
    191. ret.put("type", "error");
    192. ret.put("msg", "原密码错误!");
    193. return ret;
    194. }
    195. user.setPassword(newpassword);
    196. if(userService.editPassword(user) <= 0){
    197. ret.put("type", "error");
    198. ret.put("msg", "密码修改失败,请联系管理员!");
    199. return ret;
    200. }
    201. ret.put("type", "success");
    202. ret.put("msg", "密码修改成功!");
    203. logService.add("用户名为{"+user.getUsername()+"},的用户成功修改密码!");
    204. return ret;
    205. }
    206. /**
    207. * 本系统所有的验证码均采用此方法
    208. * @param vcodeLen
    209. * @param width
    210. * @param height
    211. * @param cpachaType:用来区别验证码的类型,传入字符串
    212. * @param request
    213. * @param response
    214. */
    215. @RequestMapping(value="/get_cpacha",method=RequestMethod.GET)
    216. public void generateCpacha(
    217. @RequestParam(name="vl",required=false,defaultValue="4") Integer vcodeLen,
    218. @RequestParam(name="w",required=false,defaultValue="100") Integer width,
    219. @RequestParam(name="h",required=false,defaultValue="30") Integer height,
    220. @RequestParam(name="type",required=true,defaultValue="loginCpacha") String cpachaType,
    221. HttpServletRequest request,
    222. HttpServletResponse response){
    223. CpachaUtil cpachaUtil = new CpachaUtil(vcodeLen, width, height);
    224. String generatorVCode = cpachaUtil.generatorVCode();
    225. request.getSession().setAttribute(cpachaType, generatorVCode);
    226. BufferedImage generatorRotateVCodeImage = cpachaUtil.generatorRotateVCodeImage(generatorVCode, true);
    227. try {
    228. ImageIO.write(generatorRotateVCodeImage, "gif", response.getOutputStream());
    229. } catch (IOException e) {
    230. // TODO Auto-generated catch block
    231. e.printStackTrace();
    232. }
    233. }
    234. }

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

  • 相关阅读:
    Linux Kernel compile
    机器学习中的分类问题:如何选择和理解性能衡量标准
    电子邮件解决方案有哪些?邮件系统的问题?
    SSM 注解配置方式整合
    2022年最新辽宁交安安全员考试题库及答案
    701、450、二叉搜索树的插入和删除
    java进阶学习笔记
    The Last Naruto,兼容IE11的vue脚手架
    golang gin 监听rabbitmq队列无限消费
    Windows bat脚本启动jar包(亲测有效),,监控端口,如果没有,就启动jar包,自动退出cmd框
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/126735332