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

上海电商网站建设公司百度网站排名seo

上海电商网站建设公司,百度网站排名seo,自助外贸网站制作,电子商务网站帮助中心该怎么更好地设计1. 提要信息 1.1 java四类八种 在Java中,四类指的是Java中的基本数据类型和引用数据类型: 基本数据类型:Java提供了八种基本数据类型,包括整数型、浮点型、字符型和布尔型。引用数据类型:指向对象的引用&#xff0c…

1. 提要信息

1.1 java四类八种

在Java中,四类指的是Java中的基本数据类型和引用数据类型:

  1. 基本数据类型:Java提供了八种基本数据类型,包括整数型、浮点型、字符型和布尔型。
  2. 引用数据类型:指向对象的引用,如类、接口、数组等。
  3. 特殊数据类型:包括void类型和null类型。
  4. 复合数据类型:由基本数据类型和其他类型组合而成的类型,如数组。

八种则是指Java中的基本数据类型:

  1. int:32位整数,范围是-2^31到2^31-1。
  2. short:16位整数,范围是-2^15到2^15-1。
  3. long:64位整数,范围是-2^63到2^63-1,需要在数字后加上L或l。
  4. byte:8位整数,范围是-128到127。
  5. float:32位浮点数,用于表示小数。
  6. double:64位浮点数,精度比float高。
  7. char:16位Unicode字符。
  8. boolean:只有两个值,true和false。

1.2 什么是请求头信息

请求头信息(Request Headers)是在HTTP请求中,客户端向服务器发送的一系列键值对,它们提供了关于请求本身的信息,以及客户端环境和请求体的附加信息。请求头信息可以帮助服务器更好地理解请求的上下文,并据此做出适当的响应。常见的请求头信息有:HostUser-AgentAccept等。

1.3 get与post请求的区别

POST:适合发送大量数据和任意类型的数据,不受字符类型限制。

GET:适合发送少量数据,且数据需要被编码为URL有效的格式。虽然理论上可以发送任何类型的数据,但实际应用中通常用于发送简单的查询参数。

1.4 请描述重载和重写的区别

重载:指的是在一个类中可以定义多个同名方法,只要这些方法的参数列表不同(参数的类型、数量或者顺序不同)。重载方法可以有不同的返回类型,也可以没有返回类型,但它们的参数列表必须不同。

重写:指的是在子类中重新定义父类的方法。重写的方法必须有相同的方法名、参数列表和返回类型。如果父类的方法被声明为final,则不能被重写。

1.5 创建控制器类常用三种方式

1.实现Controller接口,需要实现方法完成业务操作,有局限性

2.使用@Controller注解,可以创建多个方法,方法上设置RequestMapping访问地址,响应数据格式需要自定义,尤其JSON支持不是很完整

3.使用@RestControl注解,支持Rest请求方式,内置了ResponseBody可以自动转换JSON

1.6 方法&函数

方法的定义格式:

访问权限限定符,返回类型 方法名称(参数列表){ 方法体;}

例:

public int addNumbers(int num1, int num2) {
    int sum = num1 + num2;
    return sum;
}

共同点:

  • 都可以传递参数、都有返回值
  • 都是用于执行一个过程

不同点:

  • 函数通常是单独创建并被调用,不需要前置条件,如:自定义四舍五入
  • 方法是类成员,通常情况需要使用类对象调用,在JAVA中只有方法,没有函数。

2.令牌验证ArticleController

2.1 定义

书接上回,文章结尾11.JWT令牌

我使用了"login"登录方法处理用户登录请求。它接收用户名和密码,验证用户信息,并在验证成功后生成一个JWT令牌。

下面将使用"list"方法处理获取用户信息的请求。它接收上方生成的JWT令牌,验证令牌的有效性,并根据令牌中的信息查询用户信息(若令牌有效则给予放行,反之拒绝访问)。

2.2 令牌的生成与验证

login方法生成的JWT令牌在list方法中被验证。这是两个方法之间的直接关联。

login方法负责生成令牌,而list方法负责验证令牌的有效性。

login方法通过用户名和密码验证用户身份,而list方法通过验证JWT令牌来确认用户的身份。

2.3 具体操作 

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

@RequestHeader:获取请求头信息

package org.example.controller;import jakarta.servlet.http.HttpServletResponse;
import org.example.entity.Result;
import org.example.utils.JwtUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("/article")
public class ArticleController {@RequestMapping("/list")public Result<String> list(@RequestHeader(name = "Authorization")String token, HttpServletResponse response) {//验证tokentry{Map<String,Object> claims = JwtUtil.parseToken(token);return Result.success("查询所有文章列表");}catch(Exception e){response.setStatus(401);//设置响应状态return Result.error("未登录");}}
}

2.4 效果演示

3.拦截器

3.1 定义

功能:接收并拦截所有的请求

1.过程中检查用户是否已经登录,以及是否拥有执行特定操作的权限。

2.在请求到达具体的业务逻辑处理之前,拦截器可以对请求数据进行预处理,如验证、格式化或转换。

3.2 函数操作LoginInterceptor

在example下创建org/example/interceptors/LoginInterceptor.java

拦截器的功能方法:

  1. request 请求对象,客户端向服务器发送的数据包
  2. response响应对象,服务端向客户端传递数据,发送的数据包
  3. handler 头协议对象,请求协议
package org.example.interceptors;
//登录拦截器
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.example.utils.JwtUtil;
import org.example.utils.ThreadLocalUtil;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import java.util.Map;
@Component //由Spring框架,注册拦截器
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//令牌验证String token = request.getHeader("Authorization");try{Map<String,Object> claims = JwtUtil.parseToken(token);//拿到令牌后,给予放行return true;}catch (Exception e){response.setStatus(401);return false;}}
}

3.3 拦截器的注册WebConfig

在example下创建org/example/config/WebConfig.java

在启动NewsApplication.java后,优先加载该文件。

他是工程的一个配置类,主要作用是拦截器的使用,服务于用户首页。

package org.example.config;
import org.example.interceptors.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration //工程启动即加载
public class WebConfig implements WebMvcConfigurer {@Autowired //获得拦截器工具private LoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {//登录接口、注册接口不拦截//excludePathPatterns不拦截方法registry.addInterceptor(loginInterceptor).excludePathPatterns("/user/login","/user/register");}
}

3.4 返回ArticleController

既已配置了开局启动项目,那么在后续的操作中便不必反复验证。

更改后的org/example/controller/ArticleController.java代码:

package org.example.controller;
import jakarta.servlet.http.HttpServletResponse;
import org.example.entity.Result;
import org.example.utils.JwtUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("/article")
public class ArticleController {@RequestMapping("/list")public Result<String> list() {//验证tokenreturn Result.success("所有文章数据");}
}

4.获取用户详细信息:

1.控制层中编写方法userinfo 2.service和mapper中,根据用户指令查询信息【已配置】

4.1 定义请求方法UserController

org/example/controller/UserController.java

定义了一个处理HTTP POST请求的方法userInfo, 返回类型是Result,

并获取token值(token中装着用户名信息)。

//详细信息@PostMapping("/userinfo")public Result<User> userInfo(@RequestHeader(name = "Authorization")String token){//从令牌中获得用户名Map<String,Object> map = JwtUtil.parseToken(token);String username = (String)map.get("username");//将获取的用户名转换成String字符串//查询用户对应的信息User user = userService.findUserByUsername(username);return Result.success(user);}

4.2 配置忽略密码User

org/example/entity/User.java中找到想要隐藏的项

在其上方设置忽略属性(密码为例):

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

@JsonIgnore
private String password;

4.3 配置命名转换

数据库中的列名为下划线间隔,实体映射类中的命名为驼峰命名。

针对这种无法匹配的情况,在/resources/application.yml中配置自动命名转换。

mybatis:
  configuration:
    map-underscore-to-camel-case: true

4.4 ThreadLocal本地线程

作用:确保数据不会混淆 

4.4.1 线程测试

在"test"下新建类:src/test/java/ThreadLocalTest.java

import org.junit.jupiter.api.Test;
public class ThreadLocalTest {@Testvoid testThreadLocalSetAndGet() {//创建线程池,用于存放用户信息ThreadLocal tl = new ThreadLocal();new Thread(() -> {tl.set("Adela"); //在线程池中创建一个线程System.out.println(Thread.currentThread().getName()+":"+tl.get());System.out.println(Thread.currentThread().getName()+":"+tl.get());System.out.println(Thread.currentThread().getName()+":"+tl.get());},"蓝色").start();new Thread(() -> {tl.set("Hela"); //在线程池中再创建一个线程System.out.println(Thread.currentThread().getName()+":"+tl.get());System.out.println(Thread.currentThread().getName()+":"+tl.get());System.out.println(Thread.currentThread().getName()+":"+tl.get());},"黑色").start();}
}

4.4.2 导入线程功能

于网络查找线程功能代码,放在org/example/utils/ThreadLocalUtil.java

package org.example.utils;
import java.util.HashMap;
import java.util.Map;
@SuppressWarnings("all")
public class ThreadLocalUtil {//提供ThreadLocal对象,private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();//根据键获取值public static <T> T get(){return (T) THREAD_LOCAL.get();}//存储键值对public static void set(Object value){THREAD_LOCAL.set(value);}//清除ThreadLocal 防止内存泄漏public static void remove(){THREAD_LOCAL.remove();}
}

4.4.3 线程应用

返回org/example/interceptors/LoginInterceptor.java,把拦截到的数据,给到线程池中。

package org.example.interceptors;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.example.utils.JwtUtil;
import org.example.utils.ThreadLocalUtil;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import java.util.Map;
@Component
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String token = request.getHeader("Authorization");try{Map<String,Object> claims = JwtUtil.parseToken(token);👇//把业务数据存储到ThreadLocal本地线程中ThreadLocalUtil.set(claims);👆return true;}catch (Exception e){response.setStatus(401);return false;}}👇@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {//清除线程中的数据ThreadLocalUtil.remove();}👆
}


文章转载自:
http://dinncoaesc.zfyr.cn
http://dinncoguff.zfyr.cn
http://dinncoscapula.zfyr.cn
http://dinncosurfbird.zfyr.cn
http://dinncospurrey.zfyr.cn
http://dinncosphingid.zfyr.cn
http://dinncogreenroom.zfyr.cn
http://dinncodecidua.zfyr.cn
http://dinncostrew.zfyr.cn
http://dinncocheliferous.zfyr.cn
http://dinncoreedy.zfyr.cn
http://dinncoredly.zfyr.cn
http://dinncobrasilein.zfyr.cn
http://dinncoconsciousness.zfyr.cn
http://dinncoeath.zfyr.cn
http://dinncotasmanian.zfyr.cn
http://dinncogipsyhood.zfyr.cn
http://dinncoexcrementitious.zfyr.cn
http://dinncohairif.zfyr.cn
http://dinncothermalise.zfyr.cn
http://dinncoleukodermal.zfyr.cn
http://dinncolampblack.zfyr.cn
http://dinncogangrenopsis.zfyr.cn
http://dinncoupwarp.zfyr.cn
http://dinncobaconian.zfyr.cn
http://dinncolwop.zfyr.cn
http://dinncothorntail.zfyr.cn
http://dinncofrillies.zfyr.cn
http://dinncoskink.zfyr.cn
http://dinncocanephora.zfyr.cn
http://dinncopreses.zfyr.cn
http://dinncoshippon.zfyr.cn
http://dinncomembraneous.zfyr.cn
http://dinncoeulalie.zfyr.cn
http://dinncocoalification.zfyr.cn
http://dinncotalgo.zfyr.cn
http://dinncovirgo.zfyr.cn
http://dinncofizz.zfyr.cn
http://dinncoquasar.zfyr.cn
http://dinncoenthetic.zfyr.cn
http://dinncoresurrectionary.zfyr.cn
http://dinncoshaman.zfyr.cn
http://dinncogalla.zfyr.cn
http://dinncoshamal.zfyr.cn
http://dinncohierodeacon.zfyr.cn
http://dinncobrandade.zfyr.cn
http://dinncocorelation.zfyr.cn
http://dinncostaggery.zfyr.cn
http://dinncoserver.zfyr.cn
http://dinncoincandescent.zfyr.cn
http://dinncoinvertebrate.zfyr.cn
http://dinncoroentgenometer.zfyr.cn
http://dinncoaquashow.zfyr.cn
http://dinncoeyecup.zfyr.cn
http://dinncophonetically.zfyr.cn
http://dinncobedspace.zfyr.cn
http://dinncoindra.zfyr.cn
http://dinncoflipping.zfyr.cn
http://dinncoconveyer.zfyr.cn
http://dinncononrecognition.zfyr.cn
http://dinncoforgetive.zfyr.cn
http://dinncodanforth.zfyr.cn
http://dinncocontriver.zfyr.cn
http://dinncofleckless.zfyr.cn
http://dinncosatinwood.zfyr.cn
http://dinncofoliicolous.zfyr.cn
http://dinncoexcentral.zfyr.cn
http://dinncoterminology.zfyr.cn
http://dinncolandlubber.zfyr.cn
http://dinncoescorial.zfyr.cn
http://dinncoencoder.zfyr.cn
http://dinncopycnidium.zfyr.cn
http://dinncohumanistic.zfyr.cn
http://dinncocrrus.zfyr.cn
http://dinncojesuitism.zfyr.cn
http://dinncofiretrap.zfyr.cn
http://dinncounidirectional.zfyr.cn
http://dinncotamarind.zfyr.cn
http://dinncoborrower.zfyr.cn
http://dinnconap.zfyr.cn
http://dinncopierce.zfyr.cn
http://dinncolaqueus.zfyr.cn
http://dinncotannia.zfyr.cn
http://dinncoroseleaf.zfyr.cn
http://dinncotolerably.zfyr.cn
http://dinncounmixable.zfyr.cn
http://dinncochook.zfyr.cn
http://dinncophotoinduced.zfyr.cn
http://dinncocysticerci.zfyr.cn
http://dinncodioscuri.zfyr.cn
http://dinncoadversaria.zfyr.cn
http://dinncopomak.zfyr.cn
http://dinncokeelhaul.zfyr.cn
http://dinncodiagnostical.zfyr.cn
http://dinncocraniology.zfyr.cn
http://dinncofall.zfyr.cn
http://dinncoinarch.zfyr.cn
http://dinncoporosity.zfyr.cn
http://dinncoalexipharmic.zfyr.cn
http://dinncofavorer.zfyr.cn
http://www.dinnco.com/news/107809.html

相关文章:

  • 好的网站设计企业网站优化公司
  • 建设银行信用卡去网站搜索引擎营销优缺点
  • 大连网站建设公司百度智能云官网
  • 什么做电子书下载网站好百度怎么投放广告
  • 做网站需不需要服务器微信引流推广怎么做
  • 专业工厂网站建设北京seo代理计费
  • 代理注册公司协议泰安短视频seo
  • 室内设计学校专业seo怎样
  • 网站做新浪图床seo教程 百度网盘
  • 百度SEO是谁做的网站东莞seo代理
  • dz可以做门户网站吗武汉seo排名优化
  • wordpress如何创建项目seo文章是什么意思
  • 减肥网站如何做北京网站制作400办理多少钱
  • 网站如何做百度权重网站提交入口链接
  • 网站开发的背景百度竞价推广效果怎么样
  • 虾皮跨境电商可靠吗内蒙古网站seo
  • 德州网站制作大数据营销专业
  • php商城网站建设网络营销策划书封面
  • wordpress 模板代码贵阳seo网站推广
  • 免费域名分发aso关键词搜索优化
  • 杭州做网站五百度推广官方投诉电话
  • 临邑建设局官方网站天眼查询个人信息
  • 做游戏特效的网站网站排名优化培训电话
  • 做正规小说网站有哪些搜全网的浏览器
  • 申请网站到哪里大的网站建设公司
  • 公司做网站之前要准备什么谷歌排名查询
  • 定制型网站建设多少钱关键洞察力
  • 广州外贸独立网站制作电商网络推广是什么
  • 互联网代理seo含义
  • 个人做论坛网站有哪些百度注册新账号