核心方法:常见的SEO优化和关键词挖掘工具

优采云 发布时间: 2022-11-15 11:57

  核心方法:常见的SEO优化和关键词挖掘工具

  搜索引擎优化常用工具:

  网站站长网络 - 网站站长工具:

  百度统计:

  

  谷歌关键词工具:

  爱站网络工具:

  百度指数:

  关键词目的:通过关键词的优化来提高关键词排名,最终为网站带来流量。

  

  关键词流量分类:主页

  关键词流量:首页权重高,可能很容易排名;内页关键词流量:同样可以带来流量,查看您的内页优化。

  也就是说,您的网站流量主要来自主页和内部页面。有的网站放弃首页关键词,主要以首页为网站名,通过内页做流量,比如:Erge Society,有的要靠首页做流量。一般来说,如果你网站广泛的内容,你可以选择前者,如果你网站专业,你可以选择后者。当然,有些网站首页和内页都关键词来吸引流量,比如“手机”。在这里,您应该知道要选择哪一个关键词,这涉及优化您的网站标题。

  声明:本网站的所有文章,如无特殊说明或标记,均由本站原创发布。未经本网站同意,任何个人或组织不得将本网站的内容复制、盗用、采集或发布到任何网站、书籍和其他媒体平台。如果本站内容侵犯了原作者的合法权益,您可以联系我们进行处理。

  解决方案:【Java】Spring boot快速上手(三)前后端分离实现小程序登录(接口篇

  系列 文章 目录

  大家好,这一系列的快速上手学习到此结束。如果看不懂注解和整个springboot架构,建议看视频继续补。有些事你今天不明白,明天你就会明白。可能这跟学习能力有关,文中能表达的意思有限,关键还是看解释。后面会出一个综合性的springboot实战项目。但是,由于时间和精力有限,这个快速入门系列无法继续。

  【Java】Spring boot快速入门(一):向日葵合集

  【Java】Spring boot快速入门(二):参数传递

  视频推荐:

  Springboot极简教程,5分钟写一个http接口

  文章目录

  前言

  例如:

  1.新建一个spring项目

  创建一个springboot项目

  安装一些依赖

  等待安装

  2.建立设计数据库

  由于本地没有mysql服务,所以我用服务器ip作为演示。可以下载一个phpstudy,配置完成后运行mysql。

  创建一个新的用户表

  创建字段

  CREATE TABLE `qianxun`.`User` ( `id` INT NOT NULL AUTO_INCREMENT , `username` VARCHAR(20) NOT NULL , `password` VARCHAR(20) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

  创建后输入账号密码

  3.配置环境,编写界面

  

spring.application.name=demo

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.name=user

spring.datasource.url=jdbc:mysql://localhost:3306/qianxun?serverTimezone=UTC

spring.datasource.username=qianxun

spring.datasource.password=123123

server.port=8080

mybatis.mapper-locations=classpath:mappers/*xml

mybatis.type-aliases-package=com.example.demo.mybatis.entity

  配置好后运行测试,如果没有报错,说明数据库已经连接上了

  配置mybatis框架(扫描mapper文件)

  代码

  package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan("com.example.demo.mapper")

@SpringBootApplication

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

}

  创建 3 个新包

  创建实体类,在实体文件夹下新建User.java完成字段映射,如下图

  上一篇文章提到构造函数使用alt+ins弹出快捷键

  完成构造函数的编辑,可以用刚才的lomb函数省略

  所以(注意需要匹配数据库字段)

  用户.java

  package com.example.demo.entity;

import lombok.Data;

@Data

public class User {

private int id;

private String username;

private String password;

}

  在mapper文件夹下新建UserMapper.java

  package com.example.demo.mapper;

import org.apache.ibatis.annotations.Select;

public interface UserMapper {

@Select("select id from User where username = #{username}")

String findById(String username);

}

  在controller文件夹下新建UserController.java

  package com.example.demo.controller;

import com.example.demo.entity.User;

import com.example.demo.mapper.UserMapper;

import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

import java.util.List;

@RestController

@RequestMapping("/user")

public class UserController {

@Resource

UserMapper userMapper;

// 引用spring容器资源

@GetMapping("/{username}")

public String findById(@PathVariable("username") String username) {

return userMapper.findById(username);

}

}

  用户访问controller的api路径,例如

  :8080/用户/123

  通过get查询用户名是否存在,存在则返回id值

  但是我们登录需要两个参数账号和密码

  所以需要改参数才能接收

  UserController.java 部分

  @RequestMapping(value="/login")

public String logins(@RequestParam("username") String username,

@RequestParam("password") String password) {

System.out.println("username is:" + username);

System.out.println("password is:" + password);

}

  使用权

  :8080/用户/登录?用户名=123&密码=123

  通过接口返回

  UserController.java 部分

  

  @RequestMapping(value="/login")

public String logins(@RequestParam("username") String username,

@RequestParam("password") String password) {

System.out.println("username is:" + username);

System.out.println("password is:" + password);

String id=userMapper.findById(username,password);

System.out.println(id);

if (id!=null){

return "{\"code\": 200, \"msg\": \"登陆成功\", \"data\": \"登陆成功\"}";

}else{

return "{\"code\": 202, \"msg\": \"登陆失败\", \"data\": \"登陆失败\"}";

}

}

  因为查到的数据需要放在data中,所以我们要改代码,通过之前构造的映射返回查到的数据

  所以

  @RequestMapping(value="/login")

public String logins(@RequestParam("username") String username,

@RequestParam("password") String password) {

System.out.println("username is:" + username);

System.out.println("password is:" + password);

String id=userMapper.findById(username,password);

System.out.println(id);

if (id!=null){

List result=userMapper.login(username,password);

return "{\"code\": 200, \"msg\": \"登陆成功\", \"data\": "+result+"}";

}else{

return "{\"code\": 202, \"msg\": \"登陆失败\", \"data\": \"\"}";

}

}

  完整代码

  用户控制器.java

  package com.example.demo.controller;

import com.example.demo.entity.User;

import com.example.demo.mapper.UserMapper;

import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

import java.util.List;

@RestController

//将下面的返回类型都改为json

@RequestMapping("/user")

public class UserController {

@Resource

UserMapper userMapper;

// 引用spring容器资源

@RequestMapping(value="/login")

public String logins(@RequestParam("username") String username,

@RequestParam("password") String password) {

System.out.println("username is:" + username);

System.out.println("password is:" + password);

String id=userMapper.findById(username,password);

System.out.println(id);

if (id!=null){

List result=userMapper.login(username,password);

return "{\"code\": 200, \"msg\": \"登陆成功\", \"data\": \""+result+"\"}";

}else{

return "{\"code\": 202, \"msg\": \"登陆失败\", \"data\": \"\"}";

}

}

//

}

  用户.java

  package com.example.demo.entity;

import lombok.Data;

@Data

public class User {

private int id;

private String username;

private String password;

}

  UserMapper.java

  package com.example.demo.mapper;

import com.example.demo.entity.User;

import org.apache.ibatis.annotations.Param;

import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper {

@Select("select id from User where username = #{username} and password = #{password}")

String findById(@Param(value = "username")String username,@Param(value = "password")String password);

@Select("select * from User where username = #{username} and password = #{password}")

List login(@Param(value = "username")String username,@Param(value = "password")String password);

}

  4. 4包说明

  mapper- - - - - - - 增删改查

  controller- - - - - -controller(提供对api数据的外部访问)

  entity- - - - - - - - 实体类(定义数据类型,与数据库一一对应)

  5.一些注意事项

  @RestController - - - - - 将下方返回类型转换为json

@RequestMapping()- - - - - 接口、方法路径,使方法通过接口去访问

@Resource- - - - - - - - - 资源引用

  六、小程序实现api登录

  新建一个小程序项目,这里就不多说了,不知道的可以看我的文章

  登录.wxml

  

帐号

密码

登录

  登录.wss

  .login-form {

flex: 1;

display: flex;

flex-direction: column;

align-items: stretch;

justify-content: center;

}

.input-group {

display: flex;

align-items: center;

padding: 25rpx 10rpx;

margin: 40rpx 3%;

background: #fff;

border-radius: 5px;

border: 2px solid #f4f4f4;

transition: all .25s ease-in-out;

}

.input-group.active {

<p>

border: 2px solid #7acfa6;

}

.input-label {

color: #888;

font-size: 13pt;

height: 25rpx;

line-height: 25rpx;

padding: 0 25rpx;

border-right: 1px solid #d8d8d8;

}

.input-group input,

.input-group picker {

flex: 1;

font-size: 13pt;

min-height: 52rpx;

height: 52rpx;

line-height: 52rpx;

padding: 0 25rpx;

}

</p>

  登录.js

  // pages/login/login.js

Page({

/**

* 页面的初始数据

*/

data: {

username:&#39;&#39;,

password:&#39;&#39;

},

getpw(e){

console.log(e.detail.value)

this.setData({

password:e.detail.value

})

},

getusername(e){

console.log(e.detail.value)

this.setData({

username:e.detail.value

})

},

/**

* 生命周期函数--*敏*感*词*页面加载

*/

onLoad(options) {

},

login:function(){

let that=this;

console.log("登录");

wx.request({

url: &#39;http://192.168.1.126:8080/user/login&#39;,

data:{

username:that.data.username,

password:that.data.password,

},

header: {

&#39;content-type&#39;: &#39;application/json&#39; // 默认值

},

success (res) {

console.log(res.data)

if (res.data.code==200) {

wx.showToast({

title: &#39;登陆成功&#39;,

})

} else {

wx.showToast({

title: &#39;登陆失败&#39;,

icon:&#39;none&#39;

})

}

}

})

},

/**

* 生命周期函数--*敏*感*词*页面初次渲染完成

*/

onReady() {

},

/**

* 生命周期函数--*敏*感*词*页面显示

*/

onShow() {

},

/**

* 生命周期函数--*敏*感*词*页面隐藏

*/

onHide() {

},

/**

* 生命周期函数--*敏*感*词*页面卸载

*/

onUnload() {

},

/**

* 页面相关事件处理函数--*敏*感*词*用户下拉动作

*/

onPullDownRefresh() {

},

/**

* 页面上拉触底事件的处理函数

*/

onReachBottom() {

},

/**

* 用户点击右上角分享

*/

onShareAppMessage() {

}

})

  5.七种引用

  1.将请求参数直接写在Controller相应方法的形参中。该场景适用于请求参数较少的情况。

    /**

   * 1.

    直接把请求参数写在

    Controller

    相应的方法的形参中

    * @param username

    * @param password

    * @return

  */

  @RequestMapping("/addUser1")

  public String addUser1(String username,String password) {

    System.out.println("username is:"+username);

    System.out.println("password is:"+password);

    return "success";

  }

  这里RequestMapping中的请求方式没有限制,所以get和post请求方式都可以。get请求方式我们可以直接在浏览器输入地址,

  端口可以​​自己在application.properties中配置,然后用postman工具测试

  2.封装一个bean,直接接收。这里我们使用前面案例中封装的User类来接收。也适用

  获取、发布方法。

  UserController中的代码如下:

  @RequestMapping("/addUser2")

  public String addUser2(User user) {

    System.out.println("id is:"+user.getId());

    System.out.println("username is:"+user.getUsername());

    System.out.println("password is:"+user.getPassword());

    return "success";

  }

  此时,我们可以继续使用postman进行测试。注意这里传入的参数名必须和User中的属性名一致(首字母大小写必须一致,已测试),否则无法接收,对应值为null

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线