当前位置: 首页 > news >正文

基于jsp,ssm物流快递管理系统

开发工具:eclipse,jdk1.8

服务器:tomcat7.0

数据库:mysql5.7

技术: spring+springMVC+mybaits+EasyUI

项目包括用户前台和管理后台两部分,功能介绍如下: 

一、用户(前台)功能:

用户进入物流快递管理系统后,可以进行在线下单,下单完成后,可以查询订单状态;接着,用户可以浏览相关物流快递的新闻资讯;用户可以浏览网站提供的业务范围;最后,用户如果需要投诉或者反馈信息,可以给网站在线留言。

在线下单:用户可以在线下单,填写发货人、收货人和货物相关信息即可。

查询订单:用户下单后,可以输入订单号,查询物流快递订单的状态。

浏览新闻:用户可以在网站上,浏览相关物流快递的最新资讯。

浏览业务:用户可以浏览网站上的业务介绍,了解业务范围,明确自己的物流快递需求。

在线留言:用户可以给网站在线留言,填写相关信息即可。

二、管理员(后台)功能:

管理员首先登录系统,可以进行菜单管理、角色管理、用户管理、订单管理、新闻管理、留言管理、查看日志。

菜单管理:管理员可以增、删、改和查菜单信息。

角色管理:对角色信息进行管理,可以增、删、改和查角色信息。

用户管理:对用户信息进行管理,可以添加、修改、查询和删除用户信息。

订单管理:对订单信息进行管理,可以添加、修改、查询和删除订单信息。

新闻管理:对新闻进行管理,可以添加、修改、查询和删除新闻资讯。

留言管理:对留言信息进行管理,可以修改和删除留言信息。

查看日志:可以查看系统的详细日志信息。

文档截图:

前台用户截图:

后台管理员截图: 

package com.ischoolbar.programmer.controller.admin;import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;import com.ischoolbar.programmer.entity.admin.News;
import com.ischoolbar.programmer.page.admin.Page;
import com.ischoolbar.programmer.service.admin.NewsCategoryService;
import com.ischoolbar.programmer.service.admin.NewsService;/*** 新闻控制器* @author llq**/
@RequestMapping("/admin/news")
@Controller
public class NewsController {@Autowiredprivate NewsCategoryService newsCategoryService;@Autowiredprivate NewsService newsService;/*** 新闻列表页面* @param model* @return*/@RequestMapping(value="/list",method=RequestMethod.GET)public ModelAndView list(ModelAndView model){model.addObject("newsCategoryList", newsCategoryService.findAll());model.setViewName("news/list");return model;}/*** 新闻添加页面* @param model* @return*/@RequestMapping(value="/add",method=RequestMethod.GET)public ModelAndView add(ModelAndView model){model.addObject("newsCategoryList", newsCategoryService.findAll());model.setViewName("news/add");return model;}/*** 新闻添加* @param news* @return*/@RequestMapping(value="/add",method=RequestMethod.POST)@ResponseBodypublic Map<String,String> add(News news){Map<String,String> ret = new HashMap<String, String>();if(news == null){ret.put("type", "error");ret.put("msg", "请填写正确的信息!");return ret;}if(StringUtils.isEmpty(news.getTitle())){ret.put("type", "error");ret.put("msg", "新闻标题不能为空!");return ret;}if(news.getCategoryId() == null){ret.put("type", "error");ret.put("msg", "请选择新闻分类!");return ret;}if(StringUtils.isEmpty(news.getAbstrs())){ret.put("type", "error");ret.put("msg", "新闻摘要不能为空!");return ret;}if(StringUtils.isEmpty(news.getTags())){ret.put("type", "error");ret.put("msg", "新闻标签不能为空!");return ret;}if(StringUtils.isEmpty(news.getPhoto())){ret.put("type", "error");ret.put("msg", "新闻封面图片必须上传!");return ret;}if(StringUtils.isEmpty(news.getAuthor())){ret.put("type", "error");ret.put("msg", "新闻作者不能为空!");return ret;}if(StringUtils.isEmpty(news.getContent())){ret.put("type", "error");ret.put("msg", "新闻内容不能为空!");return ret;}news.setCreateTime(new Date());if(newsService.add(news) <= 0){ret.put("type", "error");ret.put("msg", "添加失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "添加成功!");return ret;}/*** 新闻编辑页面* @param model* @return*/@RequestMapping(value="/edit",method=RequestMethod.GET)public ModelAndView edit(ModelAndView model,Long id){model.addObject("newsCategoryList", newsCategoryService.findAll());model.addObject("news", newsService.find(id));model.setViewName("news/edit");return model;}/*** 新闻信息编辑* @param newsCategory* @return*/@RequestMapping(value="/edit",method=RequestMethod.POST)@ResponseBodypublic Map<String,String> edit(News news){Map<String,String> ret = new HashMap<String, String>();if(news == null){ret.put("type", "error");ret.put("msg", "请填写正确的信息!");return ret;}if(StringUtils.isEmpty(news.getTitle())){ret.put("type", "error");ret.put("msg", "新闻标题不能为空!");return ret;}if(news.getCategoryId() == null){ret.put("type", "error");ret.put("msg", "请选择新闻分类!");return ret;}if(StringUtils.isEmpty(news.getAbstrs())){ret.put("type", "error");ret.put("msg", "新闻摘要不能为空!");return ret;}if(StringUtils.isEmpty(news.getTags())){ret.put("type", "error");ret.put("msg", "新闻标签不能为空!");return ret;}if(StringUtils.isEmpty(news.getPhoto())){ret.put("type", "error");ret.put("msg", "新闻封面图片必须上传!");return ret;}if(StringUtils.isEmpty(news.getAuthor())){ret.put("type", "error");ret.put("msg", "新闻作者不能为空!");return ret;}if(StringUtils.isEmpty(news.getContent())){ret.put("type", "error");ret.put("msg", "新闻内容不能为空!");return ret;}if(newsService.edit(news) <= 0){ret.put("type", "error");ret.put("msg", "修改失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "修改成功!");return ret;}/*** 删除新闻* @param id* @return*/@RequestMapping(value="/delete",method=RequestMethod.POST)@ResponseBodypublic Map<String,String> delete(Long id){Map<String,String> ret = new HashMap<String, String>();if(id == null){ret.put("type", "error");ret.put("msg", "请选择要删除的信息!");return ret;}try{if(newsService.delete(id) <= 0){ret.put("type", "error");ret.put("msg", "删除失败,请联系管理员!");return ret;}}catch(Exception e){ret.put("type", "error");ret.put("msg", "该新闻下有评论信息,不可删除!");return ret;}ret.put("type", "success");ret.put("msg", "删除成功!");return ret;}/*** 分页模糊搜索查询列表* @param name* @param page* @return*/@RequestMapping(value="/list",method=RequestMethod.POST)@ResponseBodypublic Map<String,Object> getList(@RequestParam(name="title",required=false,defaultValue="") String title,@RequestParam(name="author",required=false,defaultValue="") String author,@RequestParam(name="categoryId",required=false) Long categoryId,Page page){Map<String,Object> ret = new HashMap<String, Object>();Map<String,Object> queryMap = new HashMap<String, Object>();queryMap.put("title", title);queryMap.put("author", author);if(categoryId != null && categoryId.longValue() != -1){queryMap.put("categoryId", categoryId);}queryMap.put("offset", page.getOffset());queryMap.put("pageSize", page.getRows());ret.put("rows", newsService.findList(queryMap));ret.put("total", newsService.getTotal(queryMap));return ret;}/*** 上传图片* @param photo* @param request* @return*/@RequestMapping(value="/upload_photo",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> uploadPhoto(MultipartFile photo,HttpServletRequest request){Map<String, String> ret = new HashMap<String, String>();if(photo == null){ret.put("type", "error");ret.put("msg", "选择要上传的文件!");return ret;}if(photo.getSize() > 1024*1024*1024){ret.put("type", "error");ret.put("msg", "文件大小不能超过10M!");return ret;}//获取文件后缀String suffix = photo.getOriginalFilename().substring(photo.getOriginalFilename().lastIndexOf(".")+1,photo.getOriginalFilename().length());if(!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())){ret.put("type", "error");ret.put("msg", "请选择jpg,jpeg,gif,png格式的图片!");return ret;}String savePath = request.getServletContext().getRealPath("/") + "/resources/upload/";File savePathFile = new File(savePath);if(!savePathFile.exists()){//若不存在改目录,则创建目录savePathFile.mkdir();}String filename = new Date().getTime()+"."+suffix;try {//将文件保存至指定目录photo.transferTo(new File(savePath+filename));}catch (Exception e) {// TODO Auto-generated catch blockret.put("type", "error");ret.put("msg", "保存文件异常!");e.printStackTrace();return ret;}ret.put("type", "success");ret.put("msg", "用户上传图片成功!");ret.put("filepath",request.getServletContext().getContextPath() + "/resources/upload/" + filename );return ret;}
}

相关文章:

基于jsp,ssm物流快递管理系统

开发工具&#xff1a;eclipse&#xff0c;jdk1.8 服务器&#xff1a;tomcat7.0 数据库&#xff1a;mysql5.7 技术&#xff1a; springspringMVCmybaitsEasyUI 项目包括用户前台和管理后台两部分&#xff0c;功能介绍如下&#xff1a; 一、用户(前台)功能&#xff1a; 用…...

陪诊系统|挂号陪护搭建二开陪诊师入驻就医小程序

我们的陪诊小程序拥有丰富多样的功能&#xff0c;旨在最大程度满足现代人的需求。首先&#xff0c;我们采用了智能排队系统&#xff0c;通过扫描二维码获取排号信息&#xff0c;让您从繁琐的排队过程中解放出来。其次&#xff0c;我们提供了多种支付方式&#xff0c;不仅可以实…...

恒驰服务 | 华为云数据使能专家服务offering之大数据建设

恒驰大数据服务主要针对客户在进行智能数据迁移的过程中&#xff0c;存在业务停机、数据丢失、迁移周期紧张、运维成本高等问题&#xff0c;通过为客户提供迁移调研、方案设计、迁移实施、迁移验收等服务内容&#xff0c;支撑客户实现快速稳定上云&#xff0c;有效降低时间成本…...

轻量级狂雨小说cms系统源码 v1.5.2 基于ThinkPHP5.1+MySQL

轻量级狂雨小说cms系统源码 v1.5.2 基于ThinkPHP5.1MySQL的技术开发 狂雨小说cms提供一个轻量级小说网站解决方案&#xff0c;基于ThinkPHP5.1MySQL的技术开发。 KYXSCMS,灵活&#xff0c;方便&#xff0c;人性化设计简单易用是最大的特色&#xff0c;是快速架设小说类网站首选…...

Leetcode刷题详解——Pow(x, n)

1. 题目链接&#xff1a;50. Pow(x, n) 2. 题目描述&#xff1a; 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000示例 2&#xff1a;…...

计算机毕业设计选题推荐-校园失物招领微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

人工智能基础_机器学习011_梯度下降概念_梯度下降步骤_函数与导函数求解最优解---人工智能工作笔记0051

然后我们来看一下梯度下降,这里先看一个叫 无约束最优化问题,,值得是从一个问题的所有可能的备选方案中选最优的方案, 我们的知道,我们的正态分布这里,正规的一个正态分布,还有我们的正规方程,他的这个x,是正规的,比如上面画的这个曲线,他的这个x,就是大于0的对吧,而现实生活…...

开放式耳机能保护听力吗,开放式耳机跟骨传导耳机哪个更好?

如果从严格意义上来讲的话&#xff0c;开放式耳机中的骨传导耳机是能保护听力&#xff0c;现如今的开放式耳机是一个统称&#xff0c;将所有不入耳的类目全部规划到一块。因此在开放式耳机中存在着一些耳机是只能够保持周边环境音&#xff0c;而不是保护听力的。 下面让我来给…...

【Qt之QLocale】使用

描述 QLocale类可以在多种语言之间进行数字和字符串的转换。 QLocale类在构造函数中使用语言/国家对进行初始化&#xff0c;并提供类似于QString中的数字转字符串和字符串转数字的转换函数。 示例&#xff1a; QLocale egyptian(QLocale::Arabic, QLocale::Egypt);QString s1 …...

维修服务预约小程序的效果如何

生活服务中维修项目绝对是需求量很高的&#xff0c;如常见的保洁、管道疏通、数码维修、安装、便民服务等&#xff0c;可以说每天都有生意&#xff0c;而对相关维修店企业来说&#xff0c;如何获得更多生意很重要。 接下来让我们看看通过【雨科】平台制作维修服务预约小程序能…...

前端架构体系调研整理汇总

1.公司研发人数与前端体系 小型创业公司 前端人数&#xff1a; < 3 人 产品类型&#xff1a; 产品不是非常成熟&#xff0c;比较新颖。 项目流程&#xff1a;不完善&#xff0c;快、紧促&#xff0c;没有固定的时间排期。 技术栈&#xff1a; 没有历史包袱&#xff0c;技…...

DrawerLayout的点击事件会穿透到底部,如何拦截?

DrawerLayout实现侧后&#xff0c;发现了一个问题。点击DrawerLayout的画面&#xff0c;会触发覆盖的底层页面的控件。由此说明点击事件穿透到了底部。但是我只需要触发抽屉布局里的控件&#xff0c;不想触发底层被覆盖的看不见的按钮&#xff0c;由此我想到的时让抽屉页面拦截…...

在Spring boot中 使用JWT和过滤器实现登录认证

在Spring boot中 使用JWT和过滤器实现登录认证 一、登录获得JWT 在navicat中运行如下sql,准备一张user表 -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS t_user; CREATE TABLE t_user (id int(11) …...

天堂2如何对版本里面的内容进行修改

天堂2写装备属性的问题 早一点的版本属性都是写在armor文件夹 xml档里&#xff0c;不再写armor里了 armor文件夹里只有防御 HP MP增加量&#xff0c;套装的属性都用一个技能形式写在 skills里了 在配合数据库里一个叫armorsets实现套装属性&#xff0c;拿皇家套做说明。 id 43…...

代码随想录Day33 LeetCode T62不同路径 LeetCode T63 不同路径II

前言 动规五部曲 1.确定dp数组含义 2.确定递推公式 3.初始化数组 4.确定遍历方式 5.打印dp数组查看分析问题 LeetCode T62 不同路径 题目链接:62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 题目思路: 注:n行m列而不是m行n列 1.确定dp数组含义 代表到达此下标有多少条…...

【计算机网络】分层模型和应用协议

网络分层模型和应用协议 1. 分层模型 1.1 五层网络模型 网络要解决的问题是&#xff1a;两个程序之间如何交换数据。 四层&#xff1f;五层&#xff1f;七层&#xff1f; 2. 应用层协议 2.1 URL URL&#xff08;uniform resource locator&#xff0c;统一资源定位符&#…...

Python框架之Flask入门和视图

一、Flask入门和视图 需要安装Pycharm专业版 1. Flask简介 Python后端的2个主流框架 Flask 轻量级框架Django 重型框架 Flask是一个基于Python实现的web开发微框架 官方文档&#xff1a;https://flask.palletsprojects.com/ 中文文档&#xff1a;https://dormousehole.readthe…...

streamWriter.WriteLine

streamWriter.WriteLine写入文件有回车行 using (System.IO.StreamWriter streamWriter new System.IO.StreamWriter("D:\123.txt", false, System.Text.Encoding.Default)) { streamWriter.Write(str.Replace("…...

一键添加色彩变幻效果,视频剪辑从未如此简单!

在视频制作过程中&#xff0c;给视频添加特效是必不可少的环节。而其中&#xff0c;色彩变幻效果作为一种常用的特效&#xff0c;能够为视频增添独特的氛围和视觉冲击力。然而&#xff0c;对于许多初学者来说&#xff0c;如何批量给视频添加色彩变幻效果特效功能却是一个难题。…...

Linux的简介和环境搭建

简介 Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想&#xff0c;是一个…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...