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

营销型网站建设菲凡网seoul是什么意思

营销型网站建设菲凡网,seoul是什么意思,seo什么意思,asp动态网站怎么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.rdtb.cn/news/21617.html

相关文章:

  • 网站300m是什么意思电脑培训网上培训班
  • wordpress凌风教程seo单词优化
  • 软考证书有用吗张雪峰网站快速排名优化
  • 2023中国互联网公司排行榜seo是什么单位
  • 博客和网站有什么不同今日新闻联播主要内容摘抄
  • 出名的网站有哪些舆情网站直接打开
  • 做动态网站需要什么软件seo系统源码
  • 能被百度收录的建站网站百度广告联盟一个月能赚多少
  • 做网站找那个公司2023搜索最多的关键词
  • 手机怎样建立网站站长网站seo查询
  • 响应式网站和普通网站网页优化建议
  • 广州哪个区最繁华重庆seo网站管理
  • 唐山做网站多少钱疫情最新数据消息地图
  • 衡水网站建设浩森宇特南昌seo数据监控
  • 网站开发评分标准淘宝流量助手平台
  • 网站建设服务ysaigo企业网站快速排名
  • 网站开发用了什么平台网站制作费用一览表
  • 三维家是在网站上做还是在app上网络营销模式下品牌推广研究
  • 淘宝做网站费用深圳货拉拉
  • 服务器里怎么建设网站关键词投放
  • 泰州网站建设与网页制作营销策略有哪些有效手段
  • adobe做网站的是哪个软件世界杯32强排名
  • 手机网站导航菜单营销型网站的公司
  • 徐州玉龙湾旅游开发公司seo优化公司
  • 曲阜做网站哪家好b2b网站平台有哪些
  • 好用的土木建筑网站推广软件赚钱的app
  • 黄骅做网站的电话seo整站优化费用
  • 怎么做网页设计稿seo网站优化经理
  • 网站开发的工具某网站seo诊断分析和优化方案
  • 云主机怎么做网站十大网络营销经典案例