04_使用域名访问后台管理系统(Nginx)

04_使用域名访问后台管理系统(Nginx)

1.现在的方式存在的问题

  • 现在的访问路径:http://127.0.0.1:8080 (localhost:8080)
  • 存在的问题
    • 开发环境和测试环境ip不一样,每次环境变化时,都要修改访问地址
    • 页面加载资源文件,有可能会使用url的全路径。一旦更换环境(ip),资源文件就无法加载了
    • ip地址在访问的时候是没有意义的(只是用来定位服务器的地址,但是书写麻烦,而且在开发和测试上线时会变化),用户不会通过ip访问,一般通过域名访问

2.修改hosts配置,使用域名访问

2.1 可以通过修改hosts文件的方式,增加ip地址和域名的映射
  • hosts文件的地址:C:\Windows\System32\drivers\etc\hosts
    04_使用域名访问后台管理系统(Nginx)_第1张图片

  • 添加自定义规则
    04_使用域名访问后台管理系统(Nginx)_第2张图片

  • 浏览器使用域名访问测试
    04_使用域名访问后台管理系统(Nginx)_第3张图片

2.2 使用SwitchHosts管理
  • 经常做域名映射的话,每次都去c盘中更改太麻烦了,使用SwitchHosts工具来管理
    04_使用域名访问后台管理系统(Nginx)_第4张图片
    04_使用域名访问后台管理系统(Nginx)_第5张图片
2.3 问题
  • 实现通过域名访问后,还存在端口号的问题,用户是直接输入域名的,不会填写端口号
  • nginx反向代理服务器

3.Nginx

3.1 Nginx介绍

04_使用域名访问后台管理系统(Nginx)_第6张图片

  • 我们可以使用Nginx反向代理,虚拟主机,负载均衡
4.2 反向代理
  • 指代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端。此时代理服务器对外就表现为一个反向代理服务器。
    04_使用域名访问后台管理系统(Nginx)_第7张图片
    04_使用域名访问后台管理系统(Nginx)_第8张图片

  • 编辑配置文件,配置反向代理的地址:conf/nginx.conf
    04_使用域名访问后台管理系统(Nginx)_第9张图片

  • 添加127.0.0.1:8080的代理

04_使用域名访问后台管理系统(Nginx)_第10张图片

4.3 Nginx三个命令
  • 启动:start nginx.exe

  • 停止:nginx.exe -s stop

  • 重载:nginx.exe -s reload

  • 进入到nginx目录,输入cmd来启动nginx

    • 任务管理器的详细信息中有这里线程
      在这里插入图片描述
4.4 浏览器测试
  • 把swtichhosts和nginx中的域名前www.去掉
    04_使用域名访问后台管理系统(Nginx)_第11张图片
4.5 Nginx的访问流程

04_使用域名访问后台管理系统(Nginx)_第12张图片


4.商品管理的删除

4.1 查看前端删除的操作

04_使用域名访问后台管理系统(Nginx)_第13张图片

4.2 分析设计
  • url:/item/delete
  • 参数:params:{“ids”:ids} ids是一个id组成的数组
  • 返回:自定义的结果对象,封装了含有status状态的属性
4.3 自定义响应结果
  • 后面所有的ajax响应都是json对象并且含有status属性,我们就自定义个本项目的相应结果对象,专门处理增,删,改之后的响应结果

  • 在common中创建一个pojo–DreamResult

    package com.dream.common.pojo;
    
    public class DreamResult implements Serializable{
        //状态码  定义为跟http响应的状态码的含义一样 200代表成功
        private Integer status;
        //响应之后的提示
        private String msg;
        //响应如果需要带数据,封装到data
        private Object data;
    
        /*
        * 提供几个静态工厂方法,用来返回结果对象同时设置响应结果
        * */
        //3、如果成功了 需要返回对象
        public static DreamResult ok(Object data){
            return new DreamResult(data);
        }
        //2、如果失败了,则自定义DreamResult对象
        public static DreamResult build(Integer status,String name,Object data){
           return new DreamResult(status,name,data);
        }
        //1、如果成功了但是没有数据要返回,直接调用ok方法代表成功
        public static DreamResult ok(){
            return new DreamResult(null);
        }
    
    
        //一旦返回有数据了,则代表肯定成功
        public DreamResult(Object data) {
            this.data = data;
            this.status=200;
            this.msg="ok";
        }
    
        public DreamResult() {
        }
    
        public DreamResult(Integer status, String msg, Object data) {
            this.status = status;
            this.msg = msg;
            this.data = data;
        }
    
        public Integer getStatus() {
            return status;
        }
    
        public void setStatus(Integer status) {
            this.status = status;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public Object getData() {
            return data;
        }
    
        public void setData(Object data) {
            this.data = data;
        }
    }
    
4.4 完成controller
  • Controller接收的参数不要是数组类型,要是集合类型才行
    • 跨项目传输对象需要是集合,不能是数组,集合实现了序列化
      04_使用域名访问后台管理系统(Nginx)_第14张图片
4.4 完成业务层

04_使用域名访问后台管理系统(Nginx)_第15张图片

你可能感兴趣的:(分布式商城系统项目实战)