• Java项目:SSM农业信息管理系统


    作者主页:源码空间站2022

     简介: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.数据库:MySql 5.7版本;

    技术栈

    1. 后端:Spring+SpringMVC+Mybatis

    2. 前端:HTML+CSS+JavaScript+jsp

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
    2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
    3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;

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

    运行截图

    代码相关

    前台留言

    1. @Controller("frontMessageController")
    2. @RequestMapping("/")
    3. public class MessagesAction {
    4. @Autowired
    5. private MessageService messageService;
    6. @Autowired
    7. private FrontCache frontCache;
    8. @RequestMapping("message")
    9. public String message() {
    10. return "/front/message/message";
    11. }
    12. /**
    13. * 前台留言
    14. *
    15. * @param e
    16. * @param model
    17. * @return
    18. * @throws Exception
    19. */
    20. @RequestMapping("message/leaveMessage")
    21. @ResponseBody
    22. public String leaveMessage(Messages e, ModelMap model) throws Exception {
    23. messageService.insert(e);
    24. frontCache.loadMessage();
    25. return "ok";
    26. }
    27. @RequestMapping("checkVcode")
    28. @ResponseBody
    29. public String checkVcode(@ModelAttribute("e") Messages e, HttpServletResponse response) throws IOException {
    30. String vcode = RequestHolder.getSession().getAttribute("validateCode").toString();
    31. if(StringUtils.isNotBlank(vcode)&&!(vcode.toLowerCase()).equals(e.getVcode().toLowerCase())){
    32. return "{\"error\":\"验证码不正确!\"}";
    33. }
    34. return null;
    35. }
    36. }

     服务领域

    1. @Controller("serviceActionController")
    2. @RequestMapping("/")
    3. public class ServiceAction {
    4. /**
    5. * 跳转到“服务领域”
    6. * @return
    7. * @throws Exception
    8. */
    9. @RequestMapping("service")
    10. public String service() throws Exception {
    11. return "/front/service/serviceList";
    12. }
    13. @RequestMapping("service/{id}")
    14. public String selectOne(HttpServletRequest request, @ModelAttribute("id")@PathVariable("id") String id, @ModelAttribute("e") Service service) throws Exception {
    15. request.setAttribute("id", id);
    16. return "/front/service/serviceList";
    17. }
    18. }

     文章管理控制器

    1. @Controller("frontArticleController")
    2. @RequestMapping("/")
    3. public class ArticleAction extends BaseController
      {
    4. private static final String page_toList = "/front/article/articleList";
    5. private static final String page_toEdit = "/front/article/articleInfo";
    6. @Autowired
    7. private ArticleService articleService;
    8. @Override
    9. public Services
      getService() {
    10. return articleService;
    11. }
    12. public ArticleAction(){
    13. super.page_toList = page_toList;
    14. super.page_toEdit = page_toEdit;
    15. }
    16. /**
    17. * 跳转到文章列表
    18. * @param request
    19. * @param article
    20. * @return
    21. * @throws Exception
    22. */
    23. @RequestMapping("article")
    24. public String article(HttpServletRequest request, @ModelAttribute("e") Article article) throws Exception {
    25. this.initPageSelect();
    26. setParamWhenInitQuery(article);
    27. int offset = 0;
    28. if(request.getParameter("pager.offset")!=null){
    29. offset = Integer.parseInt(request.getParameter("pager.offset"));
    30. }
    31. if(offset < 0){
    32. offset=0;
    33. }
    34. article.setOffset(offset);
    35. PageModel page = getService().selectPageList(article);
    36. if(page == null){
    37. page = new PageModel();
    38. }
    39. page.setPageSize(10); //设置单页数据为10
    40. page.setPagerSize((page.getTotal() + page.getPageSize() - 1)
    41. / page.getPageSize());
    42. selectListAfter(page);
    43. page.setPagerUrl("article");
    44. request.setAttribute("pager", page);
    45. return page_toList;
    46. }
    47. /**
    48. * 文章详情
    49. * @param code
    50. * @param model
    51. * @return
    52. * @throws Exception
    53. */
    54. @RequestMapping("article/{code}")
    55. public String selectOne(HttpServletRequest request,@ModelAttribute("code")@PathVariable("code") String code,@ModelAttribute("e") Article article, ModelMap model) throws Exception {
    56. if(isInteger(code)) { //如果是数字 则为id 按id进行文章查询
    57. Article e = articleService.selectById(Integer.parseInt(code));
    58. e.setHit(String.valueOf(Integer.parseInt(e.getHit())+1));
    59. articleService.update(e); //更新浏览量 --优化建议:可使用缓存或者redis暂存 然后再刷入数据库
    60. Article next = articleService.selectNext(Integer.parseInt(code));
    61. if(next==null){
    62. next = new Article();
    63. }
    64. Article previous = articleService.selectPrevious(Integer.parseInt(code));
    65. if(previous==null){
    66. previous = new Article();
    67. }
    68. model.addAttribute("e", e);
    69. model.addAttribute("next", next);
    70. model.addAttribute("previous", previous);
    71. return page_toEdit;
    72. }else{//不是数字,则为分类编码
    73. for(ArticleCategory item: SystemManage.getInstance().getArticleCategory()){ //遍历分类缓存
    74. if(code.equals(item.getCode())){ //当编码相等时
    75. article.setCategoryId(String.valueOf(item.getId())); //把相等编码里的分类id值赋予文章中catagroyId中
    76. break; //跳出循环
    77. }
    78. }
    79. setParamWhenInitQuery(article);
    80. int offset = 0;
    81. if(request.getParameter("pager.offset")!=null){
    82. offset = Integer.parseInt(request.getParameter("pager.offset"));
    83. }
    84. if(offset < 0){
    85. offset=0;
    86. }
    87. article.setOffset(offset);
    88. PageModel page = getService().selectPageList(article);
    89. if(page == null){
    90. page = new PageModel();
    91. }
    92. page.setPageSize(10); //设置单页数据为10
    93. page.setPagerSize((page.getTotal() + page.getPageSize() - 1)
    94. / page.getPageSize());
    95. selectListAfter(page);
    96. page.setPagerUrl(code);
    97. request.setAttribute("pager", page);
    98. request.setAttribute("code", code);
    99. return page_toList;
    100. }
    101. }
    102. /**
    103. *判断是不是数字
    104. * @param code
    105. * @return
    106. */
    107. public static boolean isInteger(String code){
    108. try {
    109. Integer.parseInt(code);
    110. return true;
    111. }catch (NumberFormatException e){
    112. return false;
    113. }
    114. }
    115. }

     文章分类管理控制器

    1. @Controller
    2. @RequestMapping("/manage/articleCategory/")
    3. public class ArticleCategoryAction extends BaseController{
    4. private static final String page_toList = "/manage/articleCategory/articleCategoryList";
    5. private static final String page_toEdit = "/manage/articleCategory/articleCategoryEdit";
    6. private static final String page_toAdd = "/manage/articleCategory/articleCategoryEdit";
    7. @Autowired
    8. private ArticleCategoryService articleCategoryService;
    9. @Autowired
    10. private FrontCache frontCache;
    11. @Override
    12. public Services getService() {
    13. return articleCategoryService;
    14. }
    15. public ArticleCategoryAction(){
    16. super.page_toList = page_toList;
    17. super.page_toEdit = page_toEdit;
    18. super.page_toAdd = page_toAdd;
    19. }
    20. @Override
    21. public String insert(HttpServletRequest request, @ModelAttribute("e") ArticleCategory articleCategory, RedirectAttributes flushAttrs) throws Exception {
    22. articleCategoryService.insert(articleCategory);
    23. insertAfter(articleCategory);
    24. addMessage(flushAttrs,"操作成功!");
    25. frontCache.loadArticleCategroy();//加载缓存
    26. return "redirect:selectList";
    27. }
    28. @Override
    29. public String update(HttpServletRequest request, @ModelAttribute("e") ArticleCategory articleCategory, RedirectAttributes flushAttrs) throws Exception {
    30. articleCategoryService.update(articleCategory);
    31. insertAfter(articleCategory);
    32. addMessage(flushAttrs, "操作成功!");
    33. frontCache.loadArticleCategroy();//加载缓存
    34. return "redirect:selectList";
    35. }
    36. @RequestMapping("delete")
    37. public String delete(HttpServletRequest request, @ModelAttribute("e") ArticleCategory articleCategory, RedirectAttributes flushAttrs) throws Exception{
    38. articleCategoryService.delete(articleCategory);
    39. insertAfter(articleCategory);
    40. addMessage(flushAttrs, "操作成功!");
    41. frontCache.loadArticleCategroy();//加载缓存
    42. return "redirect:selectList";
    43. }
    44. @RequestMapping("unique")
    45. @ResponseBody
    46. public String unique(@ModelAttribute("e") ArticleCategory e,HttpServletResponse response) throws IOException {
    47. response.setCharacterEncoding("utf-8");//设置响应编码为utf-8
    48. if(StringUtils.isNotBlank(e.getCatename())){
    49. ArticleCategory articleCategory = new ArticleCategory();
    50. articleCategory.setCatename(e.getCatename());
    51. articleCategory = articleCategoryService.selectOne(articleCategory);
    52. if(articleCategory==null){
    53. return "{}";
    54. }else{
    55. if(e.getId()!=0 && e.getId()==articleCategory.getId()){
    56. return "{}";
    57. }else {
    58. return "{\"error\":\"分类名称已经存在!\"}";
    59. }
    60. }
    61. }else if(StringUtils.isNotBlank(e.getCode())){
    62. ArticleCategory articleCategory = new ArticleCategory();
    63. articleCategory.setCode(e.getCode());
    64. articleCategory = articleCategoryService.selectOne(articleCategory);
    65. if(articleCategory==null){
    66. return "{}";
    67. }else{
    68. if(e.getId()!=0 && e.getId()==articleCategory.getId()){
    69. return "{}";
    70. }else {
    71. return "{\"error\":\"编码已经存在!\"}";
    72. }
    73. }
    74. }
    75. return null;
    76. }
    77. }

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

     

  • 相关阅读:
    Linux 多线程( 进程VS线程 | 线程控制 )
    1月笔记本电脑行业分析:多品牌下滑但ThinkPad逆势增长!
    我的创作纪念日
    基于BS的数据结构项目案例库系统
    Openssl数据安全传输平台015:OCCI的使用方法+在项目中的设计与实现
    跨境商城源码可以定制开发吗?
    支付宝支付接口的调用
    Python学习(一)基础语法
    【MySQL】MySQL数据管理——DDL数据操作语言(数据表)
    Kruise Rollout:灵活可插拔的渐进式发布框架
  • 原文地址:https://blog.csdn.net/m0_74967853/article/details/128193638