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

电商网站怎样优化网站开发 项目介绍

电商网站怎样优化,网站开发 项目介绍,杭州室内设计公司有哪些,企业管理培训视频免费作者主页#xff1a;源码空间codegym 简介#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 1.介绍 垃圾分类查询管理系统#xff0c;对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。 让用户自己分类垃圾#xff0c; 按国家标准自己分类… 作者主页源码空间codegym 简介Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 1.介绍 垃圾分类查询管理系统对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。 让用户自己分类垃圾 按国家标准自己分类 然后在网上提交订单 专门有人负责回收 统一回收到垃圾处理站 然后工人开始再次分类 将可再次循环使用的贩卖给工厂以后有钱自己开。 订单处理完一般7天内 将一部分钱返还给用户。 让垃圾变成钱 1.1 功能点 序号功能点1用户管理2页面管理3角色管理4首页5贡献管理6垃圾管理7全国统计8搜索记录9分类管理10分类列表11垃圾列表12修改奖励13我的收益14随机数据15分类统计16投放统计17公告管理18公告列表19发布公告21每日垃圾22贡献记录23预约管理 2.软件架构 JDK 1.8 SpringBoot 2.2.6.RELEASE freemarker 2.3.28 mybatis-plus 3.2.0 shiro 1.3.2 运行指导 idea导入源码空间站顶目教程说明(Vindows版)-ssm篇 http://mtw.so/5MHvZq 源码地址http://codegym.top。 3.安装启动 启动后访问地址http://127.0.0.1:8083/ 用户名admin、密码123456 4.运行截图 代码 CustomRealm package com.gcms.shiro;import com.gcms.mapper.UserMapper; import com.gcms.mapper.UserRoleMapper; import com.gcms.pojo.User; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.*; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.session.Session; import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.Subject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;import java.util.*;Component public class CustomRealm extends AuthorizingRealm {/** 用户信息service */private final UserMapper userMapper;/** 用户权限service */private final UserRoleMapper userRoleMapper;/** logback日志记录 */private final Logger logger LoggerFactory.getLogger(CustomRealm.class);private static MapString, Session sessionMap new HashMap();Autowiredpublic CustomRealm(UserMapper userMapper, UserRoleMapper userRoleMapper) {this.userMapper userMapper;this.userRoleMapper userRoleMapper;}/*** Override* see org.apache.shiro.realm.AuthenticatingRealm#doGetAuthenticationInfo(AuthenticationToken)* BR* Method name: doGetAuthenticationInfo BR* 获取身份验证信息 Description: Shiro中最终是通过 Realm 来获取应用程序中的用户、角色及权限信息的。 BR* param authenticationToken 用户身份信息 token* return 返回封装了用户信息的 AuthenticationInfo 实例* throws AuthenticationException BR*/Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)throws AuthenticationException {// 获取token令牌UsernamePasswordToken token (UsernamePasswordToken) authenticationToken;// 从数据库获取对应用户名密码的用户User user userMapper.getByName(token.getUsername());if (null user) {logger.warn({}---用户不存在, token.getUsername());// 向前台抛出用户不存在json对象throw new AccountException(USERNAME_NOT_EXIST);}String password user.getPassword();if (null password) {logger.warn({}---用户不存在, token.getUsername());// 向前台抛出用户不存在json对象throw new AccountException(USERNAME_NOT_EXIST);} else if (!password.equals(new String((char[]) token.getCredentials()))) {logger.warn({}---输入密码错误, token.getUsername());// 向前台抛出输入密码错误json对象throw new AccountException(PASSWORD_ERR);}logger.info({}---身份认证成功, user.getName());Subject subject SecurityUtils.getSubject();// 设置shiro session过期时间(单位是毫秒!)subject.getSession().setTimeout(7_200_000);Session s subject.getSession();String uid user.getId();try {Session s2 sessionMap.get(uid);if (s2 ! null) {s2.setTimeout(0);sessionMap.remove(s2);}} catch (Exception e) {// 已经退出但是还是有他。sessionMap.remove(s);}// 把这个人登录的信息给放进全局变量sessionMap.put(uid, s);return new SimpleAuthenticationInfo(user, password, getName());}/*** Override* see AuthorizingRealm#doGetAuthorizationInfo(PrincipalCollection)* BR* Method name: doGetAuthorizationInfo BR* Description: 获取授权信息 BR* param principalCollection* return BR*/Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {// 从shro里面获取用户对象User user (User) SecurityUtils.getSubject().getPrincipal();SimpleAuthorizationInfo info new SimpleAuthorizationInfo();// 角色列表ListString roles null;// 获得该用户角色if (null ! user) {roles userRoleMapper.getRoles(user.getId());} else {logger.warn(用户session失效!);}SetString set new HashSet();// 需要将 role 封装到 Set 作为 info.setRoles() 的参数for (String role : roles) {set.add(role);}// 设置该用户拥有的角色info.setRoles(set);return info;} }MyUtils package com.gcms.utils;import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.io.*; import java.text.Format; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** class name:MyUtils BR*/ public class MyUtils {private MyUtils() {throw new IllegalStateException(Utility class);}/** logback日志记录 */private static final Logger logger LoggerFactory.getLogger(MyUtils.class);/*** Method name: isEmail BR* Description: 判断是不是邮箱,是就返回true BR* Remark: BR* * param email* return booleanBR*/public static boolean isEmail(String email) {String regex ^[a-zA-Z0-9_-][a-zA-Z0-9_-](\\.[a-zA-Z0-9_-])$;if (email.matches(regex)) {return true;} else {return false;}}/*** Method name: isPhoneNum BR* Description: 判断手机号是不是正确,是就返回true BR* Remark: BR* * param phoneNume* return booleanBR*/public static boolean isPhoneNum(String phoneNume) {String pattern ^((1[3,5,8][0-9])|(14[5,7])|(17[0,6,7,8])|(19[7]))\\d{8}$;if (phoneNume.matches(pattern)) {return true;} else {return false;}}/*** Method name: nowDate BR* Description: 返回当前日期和时间yyyy-MM-dd HH:mm:ss BR* Remark: BR* * return StringBR*/public static String getNowDateTime() {String dateTime ;String pattern yyyy-MM-dd HH:mm:ss;Date date new Date();SimpleDateFormat sdf new SimpleDateFormat(pattern);dateTime sdf.format(date);return dateTime;}/*** Method name: getNowDateYMD BR* Description: 返回当前日期和时间 yyyy-MM-dd BR* Remark: BR* * return StringBR*/public static String getNowDateYMD() {String dateTime ;String pattern yyyy-MM-dd;Date date new Date();SimpleDateFormat sdf new SimpleDateFormat(pattern);dateTime sdf.format(date);return dateTime;}/*** Method name: getNowDateCHYMD BR* Description: 返回当前日期和时间 yyyy年MM月dd日BR* Remark: BR* * return StringBR*/public static String getNowDateCHYMD() {String dateTime ;String pattern yyyy年MM月dd日;Date date new Date();SimpleDateFormat sdf new SimpleDateFormat(pattern);dateTime sdf.format(date);return dateTime;}/*** Method name: getAutoNumber BR* Description: 根据时间获取编号:年月日4位数字 BR* Remark: 格式:201809200001 BR* * return StringBR*/public static synchronized String getAutoNumber() {String autoNumber ;int number 0;String oldDate ;SimpleDateFormat sdf new SimpleDateFormat(yyyyMMdd);String nowDate sdf.format(new Date());File f2 new File(MyUtils.class.getResource().getPath());String path f2.getAbsolutePath();File f new File(path /date.txt);try {BufferedReader br new BufferedReader(new FileReader(f));String line ;try {line br.readLine();String[] sb line.split(,);oldDate sb[0];if (oldDate.equals(nowDate)) {number Integer.parseInt(sb[1]);} else {number 0;}br.close();} catch (IOException e) {logger.error(根据时间获取编号出现异常, e);}autoNumber nowDate;number;int i 1;int n number;while ((n n / 10) ! 0) {i;}for (int j 0; j 4 - i; j) {autoNumber 0;}autoNumber number;try {BufferedWriter bw new BufferedWriter(new FileWriter(f));bw.write(nowDate , number);bw.close();} catch (IOException e) {logger.error(根据时间获取编号出现异常, e);}} catch (FileNotFoundException e) {logger.error(根据时间获取编号出现异常, e);}return autoNumber;}/*** Method name: get2DateDay BR* Description: 获取两个日期之间的天数 BR* Remark: 如2018-09-01 和 2018-09-017 返回就是17天BR* * param startDate* param endDate* return intBR*/public static int get2DateDay(String startDate, String endDate) {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);Date date1 null;Date date2 null;long days 0;try {date1 sdf.parse(startDate);date2 sdf.parse(endDate);days (date2.getTime() - date1.getTime()) / (24 * 3600 * 1000);} catch (ParseException e) {logger.error(获取两个日期之间的天数出现异常, e);}return (int) days 1;}/*** Method name: toLowCase BR* Description: 第一个字母小写 BR* Remark: BR* * param s* return StringBR*/public static String toLowCase(String s) {return s.substring(0, 1).toLowerCase() s.substring(1, s.length());}/*** Method name: setStartUP BR* Description: 第一个字母大写 BR* Remark: BR* * param s* return StringBR*/public static String setStartUP(String s) {return s.substring(0, 1).toUpperCase() s.substring(1, s.length());}/*** Method name: getUp_ClassName BR* Description: 根据表名获取类名不带后缀Bean BR* Remark: BR* * param s* return StringBR*/public static String getUp_ClassName(String s) {String cName ;// 首字母大写cName s.substring(1, 2).toUpperCase() s.substring(2, s.length());String[] tem cName.split(_);int len tem.length;cName tem[0];for (int i 1; i len; i) {cName setStartUP(tem[i]);}// tables.add(cName);//把所有的表添加到这里return cName;}/*** Method name: getFiled2Pro BR* Description: 根据字段名获取属性 BR* Remark: BR* * return StringBR*/public static String getFiled2Pro(String s) {String pName ;String[] tem s.split(_);int len tem.length;pName tem[0];for (int i 1; i len; i) {pName setStartUP(tem[i]);}return pName;}/*** Method name: getStringDate BR* Description: 根据字符串转成日期类型yyyt-MM-dd BR* * param time* return DateBR*/public static Date getStringDate(String time) {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);Date date null;try {date sdf.parse(time);} catch (ParseException e) {logger.error(日期转换出错, e);}return date;}/*** Method name: getStringDate BR* Description: 根据字符串转成日期类型yyyt-MM-dd HH:mm:ssBR* * param time* return DateBR*/public static Date getStringDateTime(String time) {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);Date date null;try {date sdf.parse(time);} catch (ParseException e) {logger.error(日期转换出错, e);}return date;}/*** Method name: getNowDateFirstDay BR* Description: 根据系统时间获取当月第一天 BR* * return StringBR*/public static String getNowDateFirstDay() {Format format new SimpleDateFormat(yyyy-MM-dd);// 获取当前月第一天Calendar c Calendar.getInstance();c.add(Calendar.MONTH, 0);c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天return format.format(c.getTime());}/*** Method name: getNowDateLastDay BR* Description: 根据系统时间获取当月最后一天 BR* * return StringBR*/public static String getNowDateLastDay() {Format format new SimpleDateFormat(yyyy-MM-dd);// 获取当前月最后一天Calendar ca Calendar.getInstance();ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));return format.format(ca.getTime());}/*** 根据日期对象获取yyyy年MM月dd字符串* param date* return*/public static String getDate2String(Date date) {Format format new SimpleDateFormat(yyyy年MM月dd日 HH时mm分ss秒);return format.format(date);}}
http://www.ho-use.cn/article/10823518.html

相关文章:

  • 哈尔滨专业官网建站企业中国半导体设备
  • pathon能做网站开发吗学it需要什么学历基础
  • 免费视频网站怎么赚钱wordpress移动版主题
  • 杭州市网站建设企业歌曲制作
  • 响应式网站建站工具建立网站站点
  • 网站综合建设笔记商洛市住房和城乡建设局网站
  • 南通网站建设知识网站推广 2015谷歌
  • 任丘网站制作公司视频不可添加橱窗入口
  • 杭州知名建设网站设计设计网站 问题
  • 潍坊市住房和城乡建设局官方网站国内建筑设计公司排名
  • 做视频的素材网站制作图片模板
  • 哪个网站可以建设网站影视广告宣传片制作公司
  • 中文网站建设模板下载wordpress邮件发送功能无法开启
  • 兰溪建设网站蝉知cms
  • 浙江建设信息港网站考试成绩查询河南网站建设价格大全
  • 制作网站联系方式吃什么补肾快
  • 免费网站制作软件的app东营建设信息网网
  • 网站栏目设计模板网站制作是怎么做的
  • 开发网站需求设计重庆好玩还是成都好玩
  • 南昌做网站费用小公司怎么做网站
  • 网站模板的使用微信 网站提成方案点做
  • 怎样建一个自己的网站莱芜搬家公司电话
  • AAP网站开发需要多少钱芜湖注册公司流程和费用
  • 网站建设项目的摘要怎么搭建自己公司网站
  • 福州seo顾问网站优化 价格查询
  • 免费网站优化软件成都网站制作汕头
  • 中天建设集团坑人吗搜狗搜索引擎优化论文
  • 网络公司网站建设费入什么科目手机网站什么意思
  • 网站美工难做吗成功网站管理系统
  • 义乌外贸网站建设来啦品牌设计开题报告