09、搭建门户网站子模块、运营商广告列表的实现、广告CRUD、广告状态修改、门户网站轮播图广告、实现广告排序,状态等条件的设定、Linux安装redis、广告列表保存到redis、广告数据同步问题

news/2024/5/16 22:24:49/文章来源:https://blog.csdn.net/weixin_43421537/article/details/88412459

搭建门户网站子模块

在父工程下新建门户子模块protal—web

注意springmvc.xml文件中需要对dubbo进行设置

在这里插入图片描述
导入静态原型,controller实现类等文件。

搭建广告service模块

1、在父工程下引入两个子模块,分别是广告content的service接口,一个是广告content的service的Impl实现类。

注意:在实现类的pom文件中,添加一个Tomcat的配置,

在这里插入图片描述
2、导入对应的content广告的接口和实现类。

运营商(manager-web)广告列表的展示

一、前端部分
1、在content.html页面中引入js文件,这里需要分页的配置

<script src="../plugins/angularjs/angular.min.js"></script><script type="text/javascript" src="../plugins/angularjs/pagination.js"></script><link rel="stylesheet" href="../plugins/angularjs/pagination.css"><script src="../js/base_pagination.js"></script><script src="../js/service/contentService.js"></script><script src="../js/service/uploadService.js"></script><script src="../js/service/contentCategoryService.js"></script><script src="../js/controller/baseController.js"></script><script src="../js/controller/contentController.js"></script>

2、在页面进行模型绑定和init方法的绑定

注意:由于使用了分页的配置,所以不需要在init中写默认方法就可以实现自动搜索所有的列表信息。

在这里插入图片描述
在页面下方添加分页的配置
在这里插入图片描述
3、在js的controller和service中添加对应的方法

注意:我们要显示所有的广告信息,需要在页面加载时查询所有的广告信息,并将对象放入list的模型对象中。

流程分析:当页面改变时,baseController.js分页配置中的onchange方法执行。调用reloadList方法,reloadList方法调用search方法,执行contentController.js文件中的search方法
在这里插入图片描述
在这里插入图片描述
二、后端部分
常规操作。

广告新增商品分类下拉列表的显示

在点击新增上商品后,会弹出窗口,有一个下拉菜单可以选择广告所属的分类
在这里插入图片描述
一、前端部分
1、页面的模型绑定,需要使用ng-options标签
在这里插入图片描述
2、init中添加默认方法findCategoryList在这里插入图片描述
3、在js文件contentController.js中引入contentCategoryService
在这里插入图片描述
4、调用contentCategoryService中的findAll方法
在这里插入图片描述

二、后端部分
引入对应的controller类后常规操作。

广告新增的实现

1、页面模型绑定

仅需注意是否生效的状态勾选。在页面中勾选是true,没勾选是false。
但是数据库中设置的输入长度为1。所有在前端需要进行值判断。勾选是1,没勾选是0;

在这里插入图片描述
2、保存按钮绑定方法

广告修改

页面的修改按钮调用findOne方法即可,传入id。
在这里插入图片描述
修改保存和新建保存使用的是同一个save方法,在controller会做id时候存在的判断,如 果存在代表是修改,不存在代表是新增。代码如下:

	//保存 $scope.save=function(){				var serviceObject;//服务层对象  				if($scope.entity.id!=null){//如果有IDserviceObject=contentService.update( $scope.entity ); //修改  }else{serviceObject=contentService.add( $scope.entity  );//增加 }				serviceObject.success(function(response){if(response.success){//重新查询 $scope.reloadList();//重新加载}else{alert(response.message);}}		);				}

广告删除

一、前端部分
1、在页面按钮绑定删除方法
在这里插入图片描述
2、在复选框添加项selectIds数组添加id的方法
在这里插入图片描述
3、在js文件controller定义删除方法
在这里插入图片描述
二、后端部分
1、在impl层遍历数组删除所有广告对象
在这里插入图片描述

门户网站根据分类id获取分类下的所有广告

一、前端部分
1、页面模型绑定
在这里插入图片描述
注意图片中的其中一张的标签要添加active,表示默认第一张。
使用了前端页面的三元运算符
在这里插入图片描述
2、由于不使用分页,所以在init中添加方法findByParentId,由于是轮播广告,所以传入固定值1。
在这里插入图片描述
3、在js文件中添加对应方法
controller

app.controller('contentController',function ($scope, contentService) {//根据分类id获取该分类下的所有列表数据$scope.findByCategoryId =function (id) {contentService.findByCategoryId(id).success(function (response) {$scope.list = response;//alert(JSON.stringify($scope.list)); //json对象转字符串})}
})

service

app.service('contentService',function ($http) {//查询该分类下的所有广告数据this.findByCategoryId = function (id) {return $http.get('content/findByCategoryId.do?id='+id);}
})

二、后端部分
在模块中新建controller类,添加对应方法
注意:为了使用ContentService,需要引入content-service模块

package com.pinyougou.protal.controller;import com.alibaba.dubbo.config.annotation.Reference;
import com.pinyougou.content.service.ContentService;
import com.pinyougou.pojo.TbContent;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/content")
public class ContentController {@Referenceprivate ContentService contentService;/*** 根据分类id获取该分类下的所有广告数据* @param id* @return*/@RequestMapping("/findByCategoryId")public List<TbContent> findByCategoryId(Long id){return contentService.findByCategoryId(id);}}

实现广告排序,状态等条件的设定

在content的serviceImpl实现类中添加条件实现筛选
在这里插入图片描述

Linux安装redis

1、将linux版的安装包赋值到soft目录下,解压到当前soft目录。
2、进入解压后的文件夹中,执行安装指令,指令和指定的目录是:
make install PREFIX=/usr/local/redis-cluster/redis
3、打开安装好的文件目录,将解压出来的文件夹中的redis-conf文件复制进来。
4、在安装好的目录下,打开bin文件夹,执行命令redis-server运行,出现如下图示,即代表开启完成。在这里插入图片描述

广告列表保存到redis

1、将redis-config.properties配置文件放入common模块中,引入common模块
在这里插入图片描述
redis-config.properties配置文件全文如下:(密码空指的是没有空格,不能加空格)

# Redis settings 
# server IP
redis.host=192.168.25.128
# server port
redis.port=6379
# server pass 
redis.pass=
# use dbIndex 
redis.database=0
# \u63A7\u5236\u4E00\u4E2Apool\u6700\u591A\u6709\u591A\u5C11\u4E2A\u72B6\u6001\u4E3Aidle(\u7A7A\u95F2\u7684)\u7684jedis\u5B9E\u4F8B 
redis.maxIdle=300
# \u8868\u793A\u5F53borrow(\u5F15\u5165)\u4E00\u4E2Ajedis\u5B9E\u4F8B\u65F6\uFF0C\u6700\u5927\u7684\u7B49\u5F85\u65F6\u95F4\uFF0C\u5982\u679C\u8D85\u8FC7\u7B49\u5F85\u65F6\u95F4(\u6BEB\u79D2)\uFF0C\u5219\u76F4\u63A5\u629B\u51FAJedisConnectionException\uFF1B  
redis.maxWait=3000
# \u5728borrow\u4E00\u4E2Ajedis\u5B9E\u4F8B\u65F6\uFF0C\u662F\u5426\u63D0\u524D\u8FDB\u884Cvalidate\u64CD\u4F5C\uFF1B\u5982\u679C\u4E3Atrue\uFF0C\u5219\u5F97\u5230\u7684jedis\u5B9E\u4F8B\u5747\u662F\u53EF\u7528\u7684  
redis.testOnBorrow=true

2、在需要使用redis的contentServiceImpl中添加applicationContext-redis.xml配置文件
在这里插入图片描述
applicationContext-redis.xml配置文件全文如下:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:cache="http://www.springframework.org/schema/cache"xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd   http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context.xsd   http://www.springframework.org/schema/mvc   http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/cache  http://www.springframework.org/schema/cache/spring-cache.xsd">  <context:property-placeholder location="classpath*:properties/*.properties" />   <!-- redis 相关配置 --> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">  <property name="maxIdle" value="${redis.maxIdle}" />   <property name="maxWaitMillis" value="${redis.maxWait}" />  <property name="testOnBorrow" value="${redis.testOnBorrow}" />  </bean>  <bean id="JedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}" p:pool-config-ref="poolConfig"/>  <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">  <property name="connectionFactory" ref="JedisConnectionFactory" />  </bean>  </beans>  

applicationContext-service.xml配置文件全文如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><dubbo:protocol name="dubbo" port="20882"></dubbo:protocol><dubbo:application name="myApplication-content-service"/>  <dubbo:registry address="zookeeper://192.168.25.128:2181"/><dubbo:annotation package="com.myApplication.content.service.impl"/></beans>

3、在contentServiceImpl实现类中引入RedisTemplate对象。
在这里插入图片描述
4、在查找广告全部分类时,先从redis中判断,如果没有再去数据库中查找,将查到的结果再放到redis数据库中。
在这里插入图片描述

广告数据同步问题

分析:当后台对广告进行了增删改,先放在redis中的数据不会改变,造成了数据不同步的现象。解决办法:在对应方法上,添加使数据同步的代码。

增加:
在这里插入图片描述
删除:
注意:需要先查找,再删除,否则都删除了,查不到了。
在这里插入图片描述
修改更新:
注意:最为特殊

注意:在修改时,可能会修改分类,当我们清空缓存时,清空的是新分类下的缓存。新分类下是正确的。但是原先分类中没有删除,相当于原来分类中多了一个
解决办法:在更新之前先查找出这个分类,在完成更新后将两个分类id进行比对,如果不相同,需要将原来分类的id缓存也请清空

在这里插入图片描述

Redis常用命令集

1)连接操作命令
quit:关闭连接(connection)
auth:简单密码认证
help cmd: 查看cmd帮助,例如:help quit
2)持久化
save:将数据同步保存到磁盘
bgsave:将数据异步保存到磁盘
lastsave:返回上次成功将数据保存到磁盘的Unix时戳
shundown:将数据同步保存到磁盘,然后关闭服务
3)远程服务控制
info:提供服务器的信息和统计
monitor:实时转储收到的请求
slaveof:改变复制策略设置
config:在运行时配置Redis服务器
4)对value操作的命令
exists(key):确认一个key是否存在
del(key):删除一个key
type(key):返回值的类型
keys(pattern):返回满足给定pattern的所有key
randomkey:随机返回key空间的一个
keyrename(oldname, newname):重命名key
dbsize:返回当前数据库中key的数目
expire:设定一个key的活动/生存时间(s)
ttl:获得一个key的活动/生存时间
select(index):按索引查询
move(key, dbindex):移动当前数据库中的key到dbindex数据库
flushdb:删除当前选择数据库中的所有key
flushall:删除所有数据库中的所有key
5)String
set(key, value):给数据库中名称为key的string赋予值value
get(key):返回数据库中名称为key的string的value
getset(key, value):给名称为key的string赋予上一次的value
mget(key1, key2,…, key N):返回库中多个string的value
setnx(key, value):添加string,名称为key,值为value
setex(key, time, value):向库中添加string,设定过期时间time
mset(key N, value N):批量设置多个string的值
msetnx(key N, value N):如果所有名称为key i的string都不存在
incr(key):名称为key的string增1操作
incrby(key, integer):名称为key的string增加integer
decr(key):名称为key的string减1操作
decrby(key, integer):名称为key的string减少integer
append(key, value):名称为key的string的值附加value
substr(key, start, end):返回名称为key的string的value的子串
6)List
rpush(key, value):在名称为key的list尾添加一个值为value的元素
lpush(key, value):在名称为key的list头添加一个值为value的 元素
llen(key):返回名称为key的list的长度
lrange(key, start, end):返回名称为key的list中start至end之间的元素
ltrim(key, start, end):截取名称为key的list
lindex(key, index):返回名称为key的list中index位置的元素
lset(key, index, value):给名称为key的list中index位置的元素赋值
lrem(key, count, value):删除count个key的list中值为value的元素
lpop(key):返回并删除名称为key的list中的首元素
rpop(key):返回并删除名称为key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
brpop(key1, key2,… key N, timeout):rpop的block版本。
rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
7)Set
sadd(key, member):向名称为key的set中添加元素member
srem(key, member) :删除名称为key的set中的元素member
spop(key) :随机返回并删除名称为key的set中一个元素
smove(srckey, dstkey, member) :移到集合元素
scard(key) :返回名称为key的set的基数
sismember(key, member) :member是否是名称为key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
sunion(key1, (keys)) :求并集
sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
sdiff(key1, (keys)) :求差集
sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
smembers(key) :返回名称为key的set的所有元素
srandmember(key) :随机返回名称为key的set的一个元素
8)Hash
hset(key, field, value):向名称为key的hash中添加元素field
hget(key, field):返回名称为key的hash中field对应的value
hmget(key, (fields)):返回名称为key的hash中field i对应的value
hmset(key, (fields)):向名称为key的hash中添加元素field
hincrby(key, field, integer):将名称为key的hash中field的value增加integer
hexists(key, field):名称为key的hash中是否存在键为field的域
hdel(key, field):删除名称为key的hash中键为field的域
hlen(key):返回名称为key的hash中元素个数
hkeys(key):返回名称为key的hash中所有键
hvals(key):返回名称为key的hash中所有键对应的value
hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_736855.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现基于LNMP的电子商务网站的搭建

一 环境准备&#xff1a;centos系统 yum源&#xff08;安装mysql&#xff0c;nginx,和php-fpm)二&#xff1a;安装步骤&#xff1a;用yum的方式安装mariadb,mariadb-server,php-mysql,php-fpm,nginx下载需要搭建网站的源码&#xff0c;我搭建的是基于小米网站的搭建&#xff0…

如何从word中复制内容到网站后台编辑器中

很多时候我们用一些管理系统的时候&#xff0c;发布新闻、公告等文字类信息时&#xff0c;希望能很快的将word里面的内容直接粘贴到富文本编辑器里面&#xff0c;然后发布出来。减少排版复杂的工作量。 下面是借用百度doc 来快速实现这个word 粘贴到 富文本编辑器里面 方法一&…

16个时髦的扁平化设计的 HTML5 CSS3 网站模板

创建网站最好办法之一是使用现成的网站模板或使用开源 CMS 应用程序。所以&#xff0c;今天这篇文章给大家带来的是16款基于 HTML5 & CSS3 的精美的扁平风格网站模板&#xff0c;大家可以借助这些优秀的网站模板创建自己的优秀网站。这些网站模板虽然是收费&#xff0c;但是…

多域名同一个IP在IIS环境下架设多个网站 主机头

由于各种原因&#xff0c;我们有时候需要在一个IP地址上建立多个web站点&#xff0c;在IIS5中&#xff0c;我们可能通过简单的设置达到这个目标。在IIS中&#xff0c;每个 Web 站点都具有唯一的、由三个部分组成的标识&#xff0c;用来接收和响应请求:(1) IP地址(2) 端口号(3) …

一步步学习SPD2010--第十章节--SP网站品牌化(11)--使用CSS报表

一步步学习SPD2010--第十章节--SP网站品牌化&#xff08;11&#xff09;--使用CSS报表 和使用其他自定义技术一样&#xff0c;你可能很容易在开发样式时犯错误或创建难以维护的解决方案。这是SPD CSS报表能帮到你的地方。CSS报表在你网站中核查一个或更多页面&#xff0c;产生使…

转:大型网站架构演变和知识体系

理论不懂就实践&#xff0c;实践不会就学理论&#xff01; 转载&#xff1a;大型网站架构演变和知识体系 之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&am…

烽火18台之五--如何拯救你我的网站

欧洲杯在历时1个月后&#xff0c;终在11日落下帷幕。作为第三方球迷&#xff0c;首先恭喜葡萄牙&#xff0c;也祝贺C罗&#xff0c;老天夺走了他的下半场&#xff0c;却还给了这个队长整个葡萄牙的胜利。他下场时的泪水没有白流。法国虽然没能第三次捧杯&#xff0c;但也让我们…

Java 开发牛人必备的网站

以下是我收集的 Java 开发牛人必备的网站。这些网站可以提供信息&#xff0c;以及一些很棒的讲座&#xff0c; 还能解答一般问题、面试问题等。质量是衡量一个网站的关键因素&#xff0c;我个人认为这些网站质 量都很好。接下来&#xff0c;我会跟大家分享我是如何使用这些网站…

VS发布网站详细步骤

1、打开你的VS2012网站项目&#xff0c;右键点击项目》菜单中 重新生成一下网站项目&#xff1b;再次点击右键》发布&#xff1a; 2、弹出网站发布设置面板&#xff0c;点击<新建..>,创建新的发布配置文件&#xff1a; 输入你自己定义的配置文件名&#xff1a; 3、点击下…

Linux Centos服务器宝塔一键安装配置LNMP/LAMP网站环境——宝塔建站可视化(无需敲命令)...

Linux网站环境LAMP/LNMP环境配置宝塔面板的安装流程本文提供全图文流程&#xff0c;中文翻译。 Chinar 坚持将简单的生活方式&#xff0c;带给世人&#xff01;&#xff08;拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例&#xff09; Chinar —— 心分享、心…

某运营商网站漏洞挖掘-任意文件上传

在头像上传位置&#xff0c;可能会出现任意文件上传。 截图如下&#xff1a; 转载于:https://www.cnblogs.com/MiWhite/p/7154141.html

一步一步SharePoint 2007之八:允许所有域用户访问网站

摘要  上一篇文章让我在同事们面前丢尽了脸&#xff0c;真是郁闷啊&#xff0c;到现在还是红红的:)没办法啊&#xff0c;咱脸皮儿薄呀&#xff01;&#xff08;呵呵&#xff0c;没人扔臭鸡蛋过来吧&#xff1f;&#xff09;  为了测试添加域用户后的效果&#xff0c;今天我…

数据网站

收藏好的有意思的数据网站http://www.databaseanswers.org/index.htm不错,500免费的数据库设计图,这个Barry一看就晓得是个爱好者,给他发邮件要ACCESS文件,绝对要给哈...耿直TO BE CONTINUED....转载于:https://www.cnblogs.com/josephshi/articles/1136584.html

鬼吹灯-漫谈大型网站的架构

看到很多社区的小组里头有人在讨论大型网站的架构问题&#xff0c;发觉这几年虽然没搞出个新浪百度出来&#xff0c;但是在大型系统的架构上还是有点心得&#xff0c;遂鬼吹一把&#xff0c;来谈谈大型网站的架构设计。 首先我们要明白什么算是大型网站&#xff0c;大型的网站有…

www.javaei.com网站建设手记——(9)增加快捷阅读

Javaei网站除了每周的更新外&#xff0c;我逐步把以前的想法一点一点加到网站上去。现在考虑的是增加快捷阅读方式&#xff0c;并提供网站内容的整理下载。 我个人特别喜欢chm格式的电子文档和有目录的pdf文档&#xff0c;这类文档在左边都有一个树形目录&#xff0c;想看那一个…

动态网站架构案例

1》动态网站架构&#xff1a; LAMP(LinuxApacheMysqlPHP/Python/perl)架构是一套强大的网站解决方案&#xff0c;LAMP是多个开源项目的首字母缩写&#xff0c;LAMP网站架构主要应用于动态网站的WEB架构&#xff0c; 这种WEB框架具有通用&#xff0c;跨平台&#xff0c…

免费虚拟主机测试(手动滑稽),终于可以把自己的辣鸡网站挂上服务器了~

好的&#xff0c;废话不多说&#xff0c;先贴出自己的辣鸡网页的地址移通苑。 前言 其实这个网页做得十分糟糕&#xff0c;因为水平不佳的缘故&#xff0c;我们选择开发一个Web APP作为练习&#xff0c;而非直接开发app应用。我在写这篇评测的时候&#xff0c;还用的HTML5CSS的…

超人气网站集合,快来pick你中意的吧!

网站相对于软件来说&#xff0c;它不用安装就能使用&#xff0c;而且是随时随的就可以打开。那么接下来&#xff0c;就为各位分享几个我觉得很“奶思”的网站&#xff0c;快来pick你中意的吧&#xff01;http://www.atool88.com/域名查询、链接查询&#xff0c;所有关于互联网方…

45个优秀的国外电子商务网站设计实例

这篇文章与大家分享45个国外优秀的电子商务网站设计案例&#xff0c;希望能带给你灵感。对于电子商务网站来说&#xff0c;也许销售更多产品比漂亮的外观设计更重要&#xff0c;不过漂亮的东西总是能给用户留下深刻的印象&#xff0c;一起欣赏。 TALBOTS Free People Armani Ex…

注册界面设计(01)——精美电子商务网站赏析

【出处】http://www.globalzoo.de/globalzoo/registrieren.php 一、效果 二、HTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.…