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

襄阳网站建设python爬数据做网站

襄阳网站建设,python爬数据做网站,宣传页模板图,dede怎么做商城网站目录一、nginx动静分离二、服务调用1、创建配置zmall-cart购物车模块2、创建配置zmall-order订单模块3、服务调用三、spring session实战1、什么是Spring Session2、为什么要使用Spring Session3、错误案例展示4、配置spring-session四、二级域名问题五、用户登录一、nginx动静… 目录一、nginx动静分离二、服务调用1、创建配置zmall-cart购物车模块2、创建配置zmall-order订单模块3、服务调用三、spring session实战1、什么是Spring Session2、为什么要使用Spring Session3、错误案例展示4、配置spring-session四、二级域名问题五、用户登录一、nginx动静分离 第1步通过SwitchHosts新增二级域名images.zmall.com 第2步将本次项目的易买网所有静态资源js/css/images复制到nginx中的html目录下 第3步在nginx的核心配置文件nginx.conf中新增二级域名images.zmall.com访问映射用于实现nginx动静分离 注意修改成功之后重启nginx服务使其配置生效 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main $remote_addr - $remote_user [$time_local] $request # $status $body_bytes_sent $http_referer # $http_user_agent $http_x_forwarded_for;#access_log logs/access.log main;sendfile on; #tcp_nopush on;#keepalive_timeout 0; keepalive_timeout 65;#gzip on;server {listen 80;server_name zmall.com;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;location / {proxy_pass http://127.0.0.1:8000/;} }server{listen 80;server_name images.zmall.com;location / {root html;index index.html;} }server {listen 80;server_name user.zmall.com;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 0; chunked_transfer_encoding on;location / {proxy_pass http://127.0.0.1:8000/user-serv/;} }server {listen 80;server_name product.zmall.com;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 0; chunked_transfer_encoding on;location / {proxy_pass http://127.0.0.1:8000/product-serv/;} }server {listen 80;server_name cart.zmall.com;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 0; chunked_transfer_encoding on;location / {proxy_pass http://127.0.0.1:8000/cart-serv/;} }server {listen 80;server_name order.zmall.com;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 0; chunked_transfer_encoding on;location / {proxy_pass http://127.0.0.1:8000/order-serv/;} }server {listen 80;server_name play.zmall.com;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 0; chunked_transfer_encoding on;location / {proxy_pass http://127.0.0.1:8000/play-serv/;} }server {listen 80;server_name kill.zmall.com;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 0; chunked_transfer_encoding on;location / {proxy_pass http://127.0.0.1:8000/kill-serv/;} }# another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias;# location / { # root html; # index index.html index.htm; # } #}# HTTPS server # #server { # listen 443 ssl; # server_name localhost;# ssl_certificate cert.pem; # ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on;# location / { # root html; # index index.html index.htm; # } #} }检测静态资源服务器配置成功 http://images.zmall.com/css/style.css 第4步删除zmall-product商品服务和zmall-gateway网关服务下的static静态资源改用nginx中配置的静态资源 第5步修改zmall-product商品服务中的templates/common/head.html #assign ctx#--域名动态请求时需加入该前缀--http://product.zmall.com /#assign #--采用H5方式的base标签在整个页面的url地址前加入用于访问nginx中的静态资源-- base hrefhttp://images.zmall.com//第6步分别重启zmall-product、zmall-gateway以及nginx后输入请求地址zmall.com/product-serv/index.html访问商品服务首页如下所示 如果出现IIS7那么cmd窗口中执行下列指令 net stop w3svc 二、服务调用 1、创建配置zmall-cart购物车模块 第1步基于Spring initializr创建zmall-cart购物车模块 第2步将zmall-order订单模块配置到主模块中 modules...modulezmall-cart/module... /modules第3步修改pom.xml parentgroupIdcom.zking.zmall/groupIdartifactIdzmall/artifactIdversion1.0-SNAPSHOT/version /parent artifactIdzmall-cart/artifactIddependenciesdependencygroupIdcom.zking.zmall/groupIdartifactIdzmall-common/artifactIdversion1.0-SNAPSHOT/version/dependency /dependencies第4步配置application.yml端口8030 server:port: 8030 spring:application:name: zmall-cartdatasource:#type连接池类型 DBCP,C3P0,Hikari,Druid,默认为Hikaritype: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/zmall?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrueusername: rootpassword: 1234freemarker:suffix: .htmltemplate-loader-path: classpath:/templates/cloud:nacos:config:server-addr: localhost:8848 #mybatis-plus配置 mybatis-plus:#所对应的 XML 文件位置mapper-locations: classpath*:/mapper/*Mapper.xml#别名包扫描路径type-aliases-package: com.zking.zmall.modelconfiguration:#驼峰命名规则map-underscore-to-camel-case: true #日志配置 logging:level:com.zking.zmall.mapper: debug第5步在启动类上加入EnableDiscoveryClient 第6步分别将购物车页面和common/head.html导入到templates目录并修改head.html中的ctx局部变量 #assign ctx#--一级域名动态请求时需加入该前缀--http://cart.zmall.com /#assign #--采用H5方式的base标签在整个页面的url地址前加入用于访问nginx中的静态资源-- base hrefhttp://images.zmall.com//第7步在zmall-gateway网关服务中配置购物车的路由转发规则重启gateway网关服务 spring:application:name: zmall-gatewaycloud:nacos:discovery:server-addr: localhost:8848gateway:routes:...- id: cart_routeuri: lb://zmall-cart # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略predicates:- Path/cart-serv/**filters:- StripPrefix1#此过滤器设置路由过滤器检查的请求属性以确定是否应发送原始主机头而不是由 HTTP 客户端确定的主机头- PreserveHostHeader注意这里要配置过滤器PreserveHostHeader用于处理重定向时依然已原始主机头发送请求。 第8步创建CartController并定义请求方法 Controller public class CartController {RequestMapping(/cart.html)public String toCart(){return buyCar;}RequestMapping(/addCart)public String addCart(Integer pid,Integer num){return redirect:/cart.html;} }注意这里使用redirect重定向方式跳转页面在SpringCloud gateway路由转发过程中会导致域名跳转变成了http请求方式所以必须在Gateway网关服务中进行相关的配置。具体请参考第8步的gateway网关路由配置。 第9步在zmall-product模块中修改加入购物车的请求方法定向到购物车 tda hrefhttp://cart.zmall.com/addCart?pid${(product.id)!}num3 classb_sure去购物车结算/aa href# classb_buy继续购物/a/td2、创建配置zmall-order订单模块 第1步基于Spring initializr创建zmall-order订单模块 第2步将zmall-order订单模块配置到主模块中 modules...modulezmall-order/module... /modules第3步修改pom.xml parentgroupIdcom.zking.zmall/groupIdartifactIdzmall/artifactIdversion1.0-SNAPSHOT/version /parent artifactIdzmall-order/artifactIddependenciesdependencygroupIdcom.zking.zmall/groupIdartifactIdzmall-common/artifactIdversion1.0-SNAPSHOT/version/dependency /dependencies第4步配置application.yml端口8040 server:port: 8040 spring:application:name: zmall-orderdatasource:#type连接池类型 DBCP,C3P0,Hikari,Druid,默认为Hikaritype: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/zmall?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrueusername: rootpassword: 1234freemarker:suffix: .htmltemplate-loader-path: classpath:/templates/cloud:nacos:config:server-addr: localhost:8848 #mybatis-plus配置 mybatis-plus:#所对应的 XML 文件位置mapper-locations: classpath*:/mapper/*Mapper.xml#别名包扫描路径type-aliases-package: com.zking.zmall.modelconfiguration:#驼峰命名规则map-underscore-to-camel-case: true #日志配置 logging:level:com.zking.zmall.mapper: debug第5步在启动类上加入EnableDiscoveryClient和MapperScan({com.zking.zmall.mapper}) 第6步定义订单接口可从公共模块zmall-common中直接复制过来 第7步创建OrderController并定义请求接口 Controller public class OrderController {Autowiredprivate IOrderService orderService;RequestMapping(/orderUserList)ResponseBodypublic ListOrder orderUserList(){return orderService.list(new QueryWrapperOrder().eq(userId,18));} }第8步在zmall-gateway网关服务中配置购物车的路由转发规则重启gateway网关服务 spring:application:name: zmall-gatewaycloud:nacos:discovery:server-addr: localhost:8848gateway:routes:...- id: order_routeuri: lb://zmall-order # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略predicates:- Path/order-serv/**filters:- StripPrefix1- PreserveHostHeader3、服务调用 在zmall-user中通过openfeign方式访问order服务接口 定义openfeign接口 FeignClient(zmall-order) public interface IOrderFeignService {RequestMapping(/orderUserList)ListOrder orderUserList(); }启动类上设置EnableDiscoveryClient和EnableFeignClients调用接口并测试接口 Controller public class UserController {Autowiredprivate IOrderFeignService orderFeignService;RequestMapping(/login.html)public String toLogin(){return login;}RequestMapping(/order.html)ResponseBodypublic ListOrder orderUserList(){return orderFeignService.orderUserList();} }测试链路 http://product.zmall.com/index.html http://product.zmall.com/product.html?pid733 http://cart.zmall.com/cart.html 界面能够从 商品微服务 直接跳转到 购物车微服务中 http://localhost:8010/order.html 调用 用户微服务接口 能访问 订单微服务的数据 三、spring session实战 1、什么是Spring Session SpringBoot整合Spring-Session的自动配置可谓是开箱即用极其简洁和方便。这篇文章即介绍SpringBoot整合Spring-Session这里只介绍基于RedisSession的实战。 Spring Session 是Spring家族中的一个子项目Spring Session提供了用于管理用户会话信息的API和实现。它把servlet容器实现的httpSession替换为spring-session专注于解决 session管理问题默认Session信息存储在Redis中可简单快速且无缝的集成到我们的应用中 spring session官网地址https://spring.io/projects/spring-session Spring Session的特性 提供用户session管理的API和实现提供HttpSession以中立的方式取代web容器的session比如tomcat中的session支持集群的session处理不必绑定到具体的web容器去解决集群下的session共享问题 2、为什么要使用Spring Session SpringCloud微服务将一个完整的单体应用拆解成了一个个独立的子服务而每一个独立的微服务子模块都将部署到不同的服务器中而服务与服务之间是独立隔离的这个时候使用要实现服务与服务之间的session会话共享则需要借助于spring-session框架来解决分布式session管理与共享问题。 3、错误案例展示 在用户服务zmall-user中编写登录控制器登录时创建session并将当前登录用户存储sesion中。 Controller public class UserController {RequestMapping(/login.html)public String toLogin(HttpSession session){session.setAttribute(username,admin);return login;} }在Gateway网关服务中添加用户服务的路由转发规则 spring:application:name: zmall-gatewaycloud:nacos:discovery:server-addr: localhost:8848gateway:routes:...- id: user_routeuri: lb://zmall-user # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略predicates:- Path/user-serv/**filters:- StripPrefix1- PreserveHostHeader在商品服务zmall-product中编写查询控制器在登录创建session后使用将sessionId置于cookie中访问。如果没有session将返回错误。 Controller public class ProductController {RequestMapping(/index.html)public String index(Model model, HttpSession session){Object username session.getAttribute(username);System.out.println(**********username);return index;} }测试链路 #1.session信息存储 http://localhost:8010/login.html #2.session信息获取 http://product.zmall.com/index.html 4、配置spring-session 在公共模块zmall-common中引入spring-session的pom配置由于spring-boot包含spring-session的starter模块所以pom中依赖 注意公共模块作为所有微服务子模块的依赖支持如果不在各服务模块中配置redis支持会导致启动其他微服务时出现报错情况。 !--redis-- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency !--spring session-- dependencygroupIdorg.springframework.session/groupIdartifactIdspring-session-data-redis/artifactId /dependency !--commons-pool2-- dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId /dependency分别在商品服务zmall-product和用户服务zmall-user中配置application.yml spring:session:redis:flush-mode: on_savenamespace: session.zmallcleanup-cron: 0 * * * * *store-type: redistimeout: 1800redis:host: localhostport: 6379password: 123456jedis:pool:max-active: 100max-wait: 10max-idle: 10min-idle: 10database: 0重新启动zmall-user和zmall-product服务先访问http://zmall.com/user-serv/login.html然后在访问http://zmall.com/product-serv/index.html回到zmall-product模块控制台查看session获取情况。 注意借助网关微服务内部可以访问不同二级域名之间不可以访问 四、二级域名问题 测试在用户模块中保存用户信息然后在产品模块中读取,但是使用二级域名方式访问读取失败 请分别在用户服务和商品服务中该配置类解决二级域名访问session无效问题。 Configuration public class SessionConfig {Beanpublic CookieSerializer cookieSerializer(){DefaultCookieSerializer cookieSerializer new DefaultCookieSerializer();cookieSerializer.setDomainName(zmall.com);cookieSerializer.setCookieName(ZMALLSESSION);return cookieSerializer;}Beanpublic RedisSerializerObject springSessionDefaultRedisSerializer(){return new GenericJackson2JsonRedisSerializer();} }测试链路 #1.先访问 http://user.zmall.com/login.html #2.后访问 http://product.zmall.com/index.html 五、用户登录 第1步在zmall-common公共模块中创建全局异常处理、响应封装类 第2步在zmall-user模块中定义IUserService及UserServiceImpl IUserService public interface IUserService extends IServiceUser {JsonResponseBody? userLogin(UserVo user, HttpServletRequest req, HttpServletResponse resp); }UserServiceImpl Service public class UserServiceImpl extends ServiceImplUserMapper, User implements IUserService {Overridepublic JsonResponseBody? userLogin(UserVo user,HttpServletRequest req,HttpServletResponse resp) {//1.判断用户账号和密码是否为空if(StringUtils.isEmpty(user.getLoginName())||StringUtils.isEmpty(user.getPassword()))return new JsonResponseBody(JsonResponseStatus.USERNAME_OR_PWD_EMPTY);//2.根据用户名查询数据对应的用户信息User us this.getOne(new QueryWrapperUser().eq(loginName, user.getLoginName()));//3.判断us用户对象是否为空if(nullus)return new JsonResponseBody(JsonResponseStatus.USERNAME_ERROR);try {//MD5加密转换处理String pwdMD5Utils.md5Hex(user.getPassword().getBytes());//4.判断输入密码与数据库表存储密码是否一致if(!us.getPassword().equals(pwd)){return new JsonResponseBody(JsonResponseStatus.PASSWORD_ERROR);}} catch (Exception e) {e.printStackTrace();return new JsonResponseBody(JsonResponseStatus.ERROR);}//5.通过UUID生成token令牌并保存到cookie中String token UUID.randomUUID().toString().replace(-,);//将随机生成的Token令牌保存到Cookie中并设置1800秒超时时间CookieUtils.setCookie(req,resp,token,token,7200);//6.将token令牌与spring session进行绑定并存入redis中HttpSession session req.getSession();session.setAttribute(token,us);return new JsonResponseBody(token);} }第3步创建UserVo类 Data public class UserVo {private String loginName;private String password; }第4步在UserController中定义用户登录方法 /** * 用户登陆功能实现 * return */ RequestMapping(/userLogin) ResponseBody public JsonResponseBody? userLogin(UserVo user,HttpServletRequest req,HttpServletResponse resp){return userService.userLogin(user,req,resp); }第5步在前端login.html页面中定义登录js方法 script$(function(){$(.log_btn).click(function(){let loginName$(.l_user).val();let password$(.l_pwd).val();if(loginName){alert(请输入用户名);return false;}if(password){alert(请输入密码);return false;}console.log({loginName:loginName,password:password});$.post(http://zmall.com/user-serv/userLogin,{loginName:loginName,password:password},function(rs){console.log(rs);if(rs.code200){location.hrefhttp://zmall.com/product-serv/index.html;}else{alert(rs.msg);}},json);});}); /script登录成功后跳转到商品首页 http://zmall.com/user-serv/login.html 如果用二级域名进行测试那么需要解决跨域问题 url: jdbc:mysql://localhost:3306/zmall?useUnicodetruecharacterEncodingUTF-8useSSLfalseserverTimezoneUTC
http://www.hkea.cn/news/14348403/

相关文章:

  • 怎么区别网站开发语言招聘网站建设人员的要求
  • 做马来西亚生意的网站汽车网站
  • 网站主题和建设C 网站开发招聘
  • 哪里有好的网站合肥做网站公司
  • 小说网站开发流程专业做网站推广的公司
  • 校园网站如何建立招商加盟网站模板程序
  • 上海网站开发哪家好薇导购类网站怎么做
  • 建设网站公司专业榆次建设局网站
  • 网站开发需要多少钱新闻辽宁省建设工程信息网招标规定
  • 男女插孔做暖暖试看网站大全网站建设实训个人总结1000字
  • 分析企业网站建设流程做音乐网站没有版权
  • 深圳在哪些网站找什么好处17做网店官网
  • 黑龙江省网站备案公司品牌推广方案
  • wordpress建站吧关键词是网站seo的核心工作
  • 黄山找人做网站保定制作网站软件
  • 网站建设设计 网络服务网页设计学校官网
  • 网站建设技术工具做网站流量怎么卖
  • 怎么样做网站卖东西织梦图片瀑布流网站模板
  • 给别人做网站挣钱it运维工程师需要掌握什么技能
  • 网站怎么做dns解析免费网络短剧
  • 沈阳论坛建站模板cve wordpress
  • 淄博网站建设-中国互联wordpress加文章顶部全局广告图片
  • 网站群建设 效果个人网站名可以和别人一样吗
  • 网站怎么用PS做做木工的网站
  • 网站设计常州做外贸的如何上国外网站
  • 做网站外包价格天翼云服务器
  • 黑龙江电商网站建设wordpress升级主题
  • 股票网站怎么做动态表格有没有专门做蛋糕的网站
  • 冠县网站建设费用dz论坛识别手机网站自动跳转
  • 润商网站建设西安百度框架户