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

重庆网站平台如何推广优化分析

重庆网站平台如何推广,优化分析,现在较为常用的网站开发技术,网络小程序开发公司1.概要 前一章节完成了用户信息的注册、登录、详细信息查询,以及线程池与拦截器技术。 这一章完善了用户信息更新/更改功能,包括昵称、邮箱、头像、密码等... 而后接触到了本地上传和云上传,其二者区别: 选择本地上传还是云上…

1.概要

前一章节完成了用户信息的注册、登录、详细信息查询,以及线程池与拦截器技术。

这一章完善了用户信息更新/更改功能,包括昵称、邮箱、头像、密码等...

而后接触到了本地上传和云上传,其二者区别:

选择本地上传还是云上传取决于具体的业务需求、预算、数据量、以及对速度和可靠性的要求。对于需要高可靠性和可扩展性的大规模数据存储,云上传通常是更好的选择。而对于小型项目或对成本敏感的场景,本地上传可能更加合适。

借助阿里云的OSS对象存储服务,更方便的使网站,去进行静态内容托管、备份和归档。

2.更新用户信息

2.1 映射类UserMapper

文件地址:org/example/mapper/UserMapper.java

now():获得数据库的系统时间

package org.example.mapper;
import ...
@Mapper
public interface UserMapper {......//更新用户表,设计昵称邮箱等数值@Update("update user set nickname=#{nickname},email=#{email},update_time=#{updateTime} where id=#{id}")void update(User user);//更新用户头像@Update("update user set user_pic=#{avatarUrl},update_time=now() where id=#{id}")//创建updateAvatar接口,Integer规范数据为整型void updateAvatar(String avatarUrl,Integer id);//更新用户密码@Update("update user set password=#{rePassword},update_time=now() where id=#{id}")void updatePassword(String rePassword,Integer id);
}

2.2 业务层UserService

2.2.1 创建接口

文件地址:org/example/service/UserService.java

//更新用户信息
void update(User user);
//更新用户头像
void updateAvatar(String avatarUrl);
//更新用户密码
void updatePassword(String rePassword);

2.2.2 实现接口

文件地址:org/example/service/impl/UserServiceImpl.java

package org.example.service.impl;
import ...
@Service
public class UserServiceImpl implements UserService {............//实现用户信息更新@Overridepublic void update(User user) {//设置用户更新时间为当前系统时间//LocalDateTime.now()获得系统时间user.setUpdateTime(LocalDateTime.now());userMapper.update(user);}//实现用户头像更新@Overridepublic void updateAvatar(String avatarUrl) {//由于请求后,线程池中将会存放该用户的信息,包含ID值Map<String,Object> map = ThreadLocalUtil.get();Integer id = (Integer) map.get("id");userMapper.updateAvatar(avatarUrl, id);}//实现用户密码更新@Overridepublic void updatePassword(String rePassword) {Map<String,Object> map = ThreadLocalUtil.get();Integer id = (Integer) map.get("id");String md5String = Md5Util.getMD5String(rePassword);userMapper.updatePassword(md5String, id);}
}

2.3 控制层UserController

文件地址:org/example/controller/UserController.java

@RequestBody:将前端传来的数据自动转换成JSON格式的字符串,并且为对象User赋值

@Validate:开启参数校验

    //更新用户信息@PutMapping("/update")public Result update(@RequestBody @Validated User user){//调用业务层的更新用户方法userService.update(user);return Result.success();}@PutMapping("/updateavatar")//更新用户头像信息public Result updateAvatar(@RequestParam String avatarUrl){userService.updateAvatar(avatarUrl);return Result.success();}//更新用户密码信息@PostMapping("/updatePwd")public Result updatePwd(@RequestBody Map<String,String> params){// 获得前端传来的旧密码,新密码,确认密码// 校验数据String oldPwd = params.get("old_Pwd");String newPwd = params.get("new_Pwd");String rePwd = params.get("re_Pwd");// 各密码不能为null// StringUtils.hasLength(oldPwd)判断字符中的个数,返回Boolean,// 如果变量中没有值则返回falseif (!StringUtils.hasLength(oldPwd)||!StringUtils.hasLength(newPwd)||!StringUtils.hasLength(rePwd)){return Result.error("缺少必要の参数");}//验证原密码是否正确Map<String,Object> map = ThreadLocalUtil.get();String username = (String)map.get("username");User user = userService.findUserByUsername(username);//判断输入的旧密码,与数据库的密码是否一致if (!user.getPassword().equals(Md5Util.getMD5String(oldPwd))){return Result.error("旧密码输入错误");}//判断新密码和确认密码是否一致if (!rePwd.equals(newPwd)){return Result.error("新密码和确认密码不一致");}//更新数据中的密码userService.updatePassword(newPwd);return Result.success();}

2.4 校检数据格式

@JsonIgnore:配置springmvc把当前对象转换成json字符串的时候忽略password

@Email:校验数据为邮箱格式

@NotEmpty:校验不能为空

@Pattern(regexp = "^\\S{1,10}$"):校验内容为字符型,且在1-10位之间

package org.example.entity;
import ...
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String username;@JsonIgnoreprivate String password;@NotEmpty@Emailprivate String email;@NotEmpty@Pattern(regexp = "^\\S{1,10}$")private String nickname;private String userPic;private LocalDateTime createTime;private LocalDateTime updateTime;
}

2.5 实验效果

2.5.1 更新用户信息

2.5.2 更新用户头像

2.5.3 更改用户密码

3.文件上传&本地储存FileUploadController

文件地址:org/example/controller/FileUploadController.java

使用 @PostMapping 注解来映射 POST 请求到 /upload 路径。

这个方法接收一个 MultipartFile 类型的参数 file,用于处理上传的文件。

MultipartFile:用于传输二进制文件,如图片、视频等

originalFilename.lastIndexOf("."):获取上传文件的扩展名,如jpg、png

UUID.randomUUID().toString():随机获得一个唯一id值作为名字

package org.example.controller;
import org.example.entity.Result;
import org.example.utils.AliOssUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RestController
public class FileUploadController {@PostMapping("/upload")public Result<String> upload(MultipartFile file) throws IOException {//把文件内容存储到本地磁盘上String originalFilename = file.getOriginalFilename();System.out.println(originalFilename);//保证文件名唯一性String filename = UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));//向目标传递图片的二进制值file.transferTo(new File("D:\\workspace\\images\\"+filename));return Result.success("url访问地址");}
}

4.文件上传&阿里云OSS

步骤:

注册登录-开通对象储存服务-创建bucket-获取AccessKey-参照SDK编写程序-集成OSS

Bucket:是一种用于存储数据的基本容器

AccessKey:用于身份验证和访问控制的一种机制

SDK(Software Development Kit,软件开发工具包):是一套工具、库、文档和代码样本的集合,用于帮助开发者为特定的软件包、软件框架、硬件平台、操作系统等创建应用程序或库。

4.1 注册登录

4.2 开通对象储存服务

释放数据激情,云存储新纪元!极速、安全、经济,一切尽在掌控!

立即加入,快来领取吧!让数据飞起来!

4.3 创建bucket

开通过后,回到主页,拉至最下方。有权益中心-免费试用按键。

进入免费试用后,可查看我的试用

费用与成本中进入管理关联实例,抵达OSS管理控制台。

其中可查看与创建自己的"bucket"

自定义创建-填写bucket名称-其余默认(所属资源组:空)-完成创建

设置bucket使用权限:

1.进入bucket    2.权限控制-阻止公共访问:关闭    3.权限控制-读写权限:公共读写

4.4 获取AccessKey 

在此地可创建属于自己的密钥

4.5 参照SDK编写程序pom.xml

安装SDK:在MAVEN项目pom.xml中加入SDK依赖

<!--阿里云OSS服务-->
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version>
</dependency>
<dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version>
</dependency>
<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>2.3.3</version>
</dependency>

4.6 测试OSS-uploadTest

文件地址:src/test/java/uploadTest.java

执行文件测试文件后,可在阿里云bucket列表中,

访问到个人电脑中D:\\workspace\\images\\1.jpg(为例)地址上的图片。

云上的图片名为:"wagaga.jpg"(String objectName的值)。

点击wagaga.jpg处可复制到图片的下载地址,在浏览器中打开可直接下载到本地。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
public class uploadTest {//测试上传文件至阿里云的OSSpublic static void main(String[] args) throws Exception {// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。String endpoint = "https://oss-cn-beijing.aliyuncs.com";// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。// EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();// 填写Bucket名称,例如examplebucket。String bucketName = "new-system-622";// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。String objectName = "wagaga.jpg";// 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou。String region = "cn-beijing";//填写AccesskeyString ACCESS_KEY_ID="LTAI5t798Q7kyDGjn3emtKUy";String ACCESS_KEY_SECRET="Pn4LIt2AQw04jIvorcdF62dJSVqO67";// 创建OSSClient实例。ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);OSS ossClient = new OSSClientBuilder().build(endpoint,ACCESS_KEY_ID,ACCESS_KEY_SECRET);try {// 填写字符串。String content = "Hello OSS,你好世界";// 创建PutObjectRequest对象。PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new FileInputStream("D:\\workspace\\images\\1.jpg"));// 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。// ObjectMetadata metadata = new ObjectMetadata();// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());// metadata.setObjectAcl(CannedAccessControlList.Private);// putObjectRequest.setMetadata(metadata);// 上传字符串。PutObjectResult result = ossClient.putObject(putObjectRequest);} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}}
}

4.7 联系自身代码集成OSS-AliOssUtils

新建文件:org/example/utils/AliOssUtils.java

private static final String ENDPOINT = "https://oss-cn-beijing.aliyuncs.com":

  • private 私有的
  • static 静态的,只加载一次
  • final 不允许被修改
  • String 声明数据类型
  • ENDPOINT 常量名,通常大写
package org.example.utils;
import com.aliyun.oss.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.FileInputStream;
import java.io.InputStream;
public class AliOssUtils {//常量是在程序中固定不会变的数据private static final String ENDPOINT = "https://oss-cn-beijing.aliyuncs.com";private static final String ACCESS_KEY_ID="LTAI5t798Q7kyDGjn3emtKUy";private static final String ACCESS_KEY_SECRET="Pn4LIt2AQw04jIvorcdF62dJSVqO67";private static final String BUCKET_NAME = "new-system-622";private static final String REGION = "cn-beijing";public static String uploadFile(String objectName, InputStream in){// 创建OSSClient实例。ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);OSS ossClient = new OSSClientBuilder().build(ENDPOINT,ACCESS_KEY_ID,ACCESS_KEY_SECRET);String url = ""; //创建变量作用域在try体外try {// 填写字符串。String content = "Hello OSS,你好世界";// 创建PutObjectRequest对象。PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, objectName, in);// 上传字符串。PutObjectResult result = ossClient.putObject(putObjectRequest);//获得上传文件的地址url = "http://"+BUCKET_NAME+"."+ENDPOINT.substring(ENDPOINT.lastIndexOf("/")+1)+"/"+objectName;} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}return url;}
}

4.8 返回FileUploadController

文件地址:org/example/controller/FileUploadController.java

更改当初自定义的固态图片地址,换成云上的链接:

package org.example.controller;
import org.example.entity.Result;
import org.example.utils.AliOssUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RestController
public class FileUploadController {@PostMapping("/upload")public Result<String> upload(MultipartFile file) throws IOException {String originalFilename = file.getOriginalFilename();System.out.println(originalFilename);String filename = UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));//向目标传递图片的二进制值👇// file.transferTo(new File("D:\\workspace\\images\\"+filename));👆String url = AliOssUtils.uploadFile(filename, file.getInputStream());👇return Result.success(url);👆}
}

http://www.hkea.cn/news/740113/

相关文章:

  • 专业b2c电商网站制作网站推广要点
  • 现在的网站用什么程序做百度云官网登录入口
  • vs做网站怎样加数据库新闻小学生摘抄
  • 广州做网站mxszpt小说排行榜
  • 有什么网站是python做的网站营销策划公司
  • 长春有什么好的网站制作公司链接购买
  • 毕设网站佛山网站建设十年乐云seo
  • 北京做网站建设的公司哪家好手机怎么创建网站
  • winforms做网站注册百度账号
  • 玉泉路网站建设营销培训课程有哪些
  • 渭南做网站费用搜索引擎排名优化是什么意思
  • 做网站开发需要学什么软件微信公众平台开发
  • 网站整体营销方案网络营销的特点是什么?
  • 国内知名的网站建设公司有哪些百度指数专业版app
  • 画画外包网站如何推广一个网站
  • 互联网公司响应式网站深圳google推广
  • 深圳网站设计哪好什么推广平台比较好
  • 打开英文网站字体不对教程seo推广排名网站
  • 昭通市建设局网站太原百度关键词优化
  • 个人建网站允许吗seo职位要求
  • 环保网站设计网络营销优化推广
  • 网页设计网站制作公司冯耀宗seo视频教程
  • 怎么用路由器做网站百度指数平台官网
  • 济南做网站互联网公司有哪些seo是什么公司
  • 辛集seo网站优化价格许昌网站seo
  • 网站建设后期维护百度快速收录技术
  • 网站建设中的推广工作seo学校培训
  • 上海专业网站建设网百度搜索推广开户
  • 做学校网站素材图片合肥seo代理商
  • 真题真做报名网站淘宝搜索关键词排名