JSP:MVC

Web应用

一个好的Web应用:

  功能完善

  易于实现和维护

  易于扩展等

的体系结构

一个Web应用通常分为两个部分

m 1. 由界面设计人员完成的 表示层

(主要做网页界面设计)

m 2. 由程序设计人员实现的 行为层

(主要完成本Web应用的各种功能)

m

Web开发的两种常用模式

Web开发的两种常用模式

Model1 纯JSP或JSP+javabean

适用于小型的Web应用

m 模型 1 可以分为两种方式
m 1. 完全使用JSP页面

优点:简单,所见即所得,容易实现

缺点:访问数据库的代码需要写在JSP页面中,如果数据库发生变化JSP页面需要重写

2.使用JSP+JavaBean

优点数据访问代码和JSP页面分离,数据访问代码重用性好

缺点系统复杂时,JSP页面中仍会包含大量脚本代码,代码开发和维护困难

Model2 MVC模式

   模型2其实就是一种MVC体系结构,也称为MVC模型2该模型是一种将应用分解成三个独立部分的通用模型。

m 这三个部分分别是:
m 模型 (Model) 描述系统的数据
m 视图 (view) 数据的显示,包括图形、文本和文件输出等;
m 控制器 (Controller) 获取系统的输入,控制系统的执行;
m
m MVC Model-View-Controller 的缩写
m Model 代表的是应用程序的商业逻辑 (通过 JavaBean EJB 等组件实现)
m View 提供可交互的客户界面 ,向客户显示模型数据(使用 JSP 来输出 HTML );
m Controller 响应客户的请求 ,根据客户的请求操纵模型,并把模型的响应结果由视图展现给客户 通常是 Servlet ;

MVC好处

m 各司其职,互不干涉
m MVC 模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
m 有利于开发中的分工
m MVC 模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的 JSP ,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。
m 有利于组件的重用
m 分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。
MVC 有助于把应用分离成合理的组件,以方便开发
  MVC(Servlet、JSP、JavaBean相结合)
m Servlet 扮演控制者的角色,接受客户请求 ,创建 JavaBean JavaBean 执行业务逻辑 ,向 Servlet 返回结果。 Servlet 将结果交给 JSP 页面 ,由 JSP 页面生成 HTML 向客户返回结果
m

MVC模式来实现用户注册

1.模型(JavaBean) -

   useBe.Register.class

package useBe;

public class Register

{   String logname="",password="",email="";

    String backNews;

    public void setLogname(String name)

    {  logname=name;

    }

   public String getLogname()

    { return logname;

    }

   public void setPassword(String pw)

    {  password=pw;

    }

 

 public String getPassword()

    { return password;

    }

   public void setEmail(String em)

    {  email=em;

    }

   public String getEmail()

    {  return email;

    }

   public String getBackNews()

    { return backNews;

    }

   public void setBackNews(String s)

    { backNews=s;

    }

}

2.控制器(servlet) -

   useSe.HandleRegister.class

package useSe;

import  useBe.Register;

import java.sql.*;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class HandleRegister extends HttpServlet

{   public void init(ServletConfig config) throws ServletException

    { super.init(config);

      try {  Class.forName("com.mysql.jdbc.Driver");

          }

       catch(Exception e){}

    }

   public String handleString(String s)

   {   try{ byte bb[]=s.getBytes("iso-8859-1");

            s=new String(bb);

          }

       catch(Exception ee){}

       return s; 

   }

 void  doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

    {   Connection con;

        Statement sql;

Register reg=new Register();   //创建Javabean对象

        request.setAttribute("register",reg);//将dataBean存储到request对象中

        String logname=request.getParameter("logname").trim(),

        password=request.getParameter("password").trim(),

        email=request.getParameter("email").trim();

        String uri="jdbc:mysql://127.0.0.1:3306/test1";

        if(logname==null)

           logname="";

        if(password==null)

           password="";

        boolean isLD=true;    

       for(int i=0;i<logname.length();i++)

        {  char c=logname.charAt(i);

           if(!((c<='z'&&c>='a')||(c<='Z'&&c>='A')||(c<='9'&&c>='0')))

             isLD=false;

        }

        boolean boo=logname.length()>0&&password.length()>0&&isLD;

        String backNews="";

        try{ con=DriverManager.getConnection(uri,"root","123456");

             String insertCondition="INSERT INTO member VALUES ('"+logname+"','"+password+"','"+email+"')";

             sql=con.createStatement();

             if(boo)

             { int m=sql.executeUpdate(insertCondition);

               if(m!=0)

                 {  backNews="注册成功";

                    reg.setBackNews(backNews);

                    reg.setLogname(logname);

                    reg.setPassword(handleString(password));

                    reg.setEmail(handleString(email));

                  }

              }

             else

              {  backNews="信息填写不完整或名字中有非法字符";

                 reg.setBackNews(backNews); 

              }

             con.close();

           }

        catch(SQLException exp)

          {  backNews="该会员名已被使用,请您更换名字"+exp;

             reg.setBackNews(backNews);

          }

        RequestDispatcher dispatcher=request.getRequestDispatcher("show.jsp");//请求show.jsp显示信息

        dispatcher.forward(request, response);

    }

   public  void  doGet(HttpServletRequest request,HttpServletResponse response)

                        throws ServletException,IOException

    {   doPost(request,response);

    }

}

MVC模式来实现用户注册

3.视图(jsp)

register.jsp

<%@ page contentType="text/html;charset=GB2312" %>

<head>

<table>

 <td><A href="register.jsp"><font size=5>用户注册</font></A></td>

</table>

</head>

<HTML><BODY bgcolor=cyan><Font size=5><CENTER>

<FORM action="helpRegister" name=form>

<table>

    输入您的信息,用户名称必须由字母和数字组成,带*号项必须填写。

   <tr><td>用户名称:</td><td><Input type=text name="logname" >*</td></tr>

   <tr><td>设置密码:</td><td><Input type=password name="password">*</td></tr>

   <tr><td>电子邮件:</td><td><Input type=text name="email"></td></tr>

   <tr><td><Input type=submit name="g" value="提交"></td></tr>

</table>

</Form></CENTER>

</Body></HTML>

show.jsp

<%@ page contentType="text/html;charset=GB2312" %>

<%@ page import="useBe.Register"%>

<jsp:useBean id="register" type="useBe.Register" scope="request"/>

<head>

<table>

 <td><A href="register.jsp"><font size=5>用户注册</font></A></td>

</table>

</head>

<HTML><BODY bgcolor=yellow>

<CENTER>

  <Font size=5 color=blue >

    <BR><jsp:getProperty name="register"  property="backNews"/>

  </Font>

<table>

 <tr><td>注册的名称:</td>

     <td><jsp:getProperty name="register" property="logname"/></td>

 </tr>

 <tr><td>注册的电子邮件:</td>

     <td><jsp:getProperty name="register" property="email"/></td>

 </tr>

</table>

</CENTER></BODY></HTML>

    MVC模式的核心思想是有效地组合“视图”、“模型”和“控制器”。

      本章将介绍MVC模式,掌握该模式对于设计合理的Web应用以及学习使用某些流行的Web框架,如HibernateSpringStruts等,都有着十分重要的意义。

    MVC是一种通过三个不同部分构造一个软件或组件的理想办法:

模型(Model——用于存储数据的对象。

视图(View——为模型提供数据显示的对象。

控制器(Controller——负责具体的业务逻辑操作,即控制器根据视图提出的要求对数据做出处理,并将有关结果存储到模型中,同时负责让模型和视图进行必要的交互,当模型中的数据变化时,让视图更新显示。

    JSP技术中,“视图”、“模型”和“控制器”的具体实现如下:

模型(Model):

   一个或多个JavaBean对象,用于存储数据,JavaBean主要提供简单的setXXX()方法和getXXX()方法,在这些方法中不涉及对数据的具体处理细节。

视图(View):

    一个或多个JSP页面,为模型提供数据显示,JSP页面主要使用 HTML标记和JavaBean标记来显示数据。

控制器(Controller

    一个或多个Servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到JavaBean中,然后Servlet使用重定向方式请求视图中的某个JSP页面更新显示。

 JSP+Javabean模式中,由JSP页面通过使用useBean标记:

<jsp:useBean id="名字" class="创建bean的类" scope="生命周期"/>创建Javabean

    JSP中的MVC模式中,也可以由控制器servet创建Javabean,并将有关数据存储到所创建的Javabean中,然后servlet请求某个JSP页面使用JavabeangetProperty动作标记:

<jsp:getProperty name= "名字" property="bean的属性"/>

显示Javabean的中的数据。

    在JSP中的MVC模式中,非常重要的手段是由servlet负责用构造方法创建Javabean,因此允许创建Javabean的类可以有带参数的构造方法。

     在JSP中的MVC模式中,servet创建的Javabean也涉及到生命周期(有效期限),生命周期分为requestsessionapplication。以下假设创建Javabean的类的名字是BeanClass,该类的包名为user.yourbean

 request周期的Javabean

   1Javabean的创建

   servlet负责创建bean。那么创建生命周期为requestbean的步骤如下:

1)用BeanClass类的某个构造方法创建bean对象,例如:

         BeanClass bean=new BeanClass();

2)将所创建的bean对象存放到HttpSerletRequest对象request中,并指定查找该bean的关键字,该步骤决定了bean的生命周期为request。例如:

        request.setAttribute("keyWord",bean);

执行上述操作,就会把bean存放到Tomcat引擎管理的内置对象pageContext中,该bean被指定的id"keyWord",生命周期是  

       PageContext.REQUEST_SCOPErequest。  

2   视图更新

    servlet请求一个JSP页面,比如show.jsp的代码如下:

RequestDispatcher dispatcher= request.getRequestDispatcher("show.jsp");

dispatcher.forward(request,response);

    servlet所请求的JSP页面可以使用如下标记获得servlet所创建的bean的引用(type属性使得该JSP页面不负责创建bean

<jsp:useBean id="keyWord" type="user.yourbean.BeanClass" scope="request"/>

该标记中的idservlet所创建的bean索引关键字。然后JSP页面使用<jsp:getProperty name="keyWord" property="bean的变量"/>标记显示bean中的数据。如果上述代码执行成功,用户就看到了show.jsp页面的执行效果。

    特别注意: 如果servlet所请求的JSP页面,使用如下标记获得servlet所创建的bean的引用(注意没有用type属性而是用class属性)

  <jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope="request"/>

该标记中的idservlet所创建的bean索引关键字。那么即使servlet所请求的JSP页面事先已经有了id"keyWord"scope"request"bean,那么这个bean也会被servlet所创建的bean替换。

     原因是servlet所请求的JSP页面会被刷新,就会根据当前页面使用的<jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope="request"/> 标记到Tomcat引擎管理的内置对象PageContext中寻找id"keyWord",生命周期是request,而该bean已经被servlet更新了。

   session周期的Javabean

    1Javabean的创建

   servet创建生命周期为sessionbean的步骤如下:

1)用BeanClass类的某个构造方法创建bean对象,例如:

    BeanClass bean=new BeanClass();

2)将所创建的bean对象存放到HttpSerletSession对象:session中,并指定查找该bean的关键字,该步骤决定了bean的生命周期为session。例如:

     HttpSession session=request.getSession(true);

     session.setAttribute("keyWord",bean);

   内置对象执行上述操作,就会把bean存放到Tomcat引擎管理的内置对象pageContext中,该bean被指定的id"keyWord",生命周期是PageContext.SESSION_SCOPEsession)。  

   2   视图更新

    servelt创建bean, bean的生命周期为session只要用户的session没有消失,该bean就一直存在,一个用户在访问Web服务目录的各个JSP中都可以使用<jsp:useBean id="keyWord" type="usern.yourbean.BeanClass" scope="session"/> 标记获得servlet所创建的bean的引用,然后使用<jsp:getProperty name="keyWord" property="bean的变量"/>标记显示该bean中的数据,该标记中的idservlet所创建的bean索引关键字。

    对于生命周期为sessionbean,如果servlet希望某个JSP显示其中的数据,可以使用RequestDispatcher对象向该JSP页面发出请求,也可以使用HttpServletResponse类中的重定向方法(sendRedirect)。

    show.jsp页面使用如下标记获得servlet所创建的bean的引用(注意没有用type属性而是用class属性)<jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope="session"/>该标记中的idservlet所创建的bean索引关键字。那么即使servlet所请求的JSP页面或其他页面事先已经有了id"keyWord"scope" session "bean,那么这个bean也会被servlet所创建的bean替换。

     原因是,servlet所请求的JSP页面或其他页面被刷新时,就会根据当前页面使用的<jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope=" session "/>标记到Tomcat引擎管理的内置对象PageContext中寻找id"keyWord",生命周期是session,而该bean已经被servlet更新了。

 application周期的Javabean

   1Javabean的创建

    servet创建生命周期为applicationbean的步骤如下:

1BeanClass类的某个构造方法创建bean对象,例如:

         BeanClass bean=new BeanClass();

2servlet使用getServletContext()方法返回服务器的ServletContext内置对象的引用,将所创建的bean对象存放到服务器这个ServletContext内置对象中,并指定查找该bean的关键字,该步骤决定了bean的生命周期为application,例如:

      getServletContext().setAttribute("keyWord",bean);

上述操作,就会把bean存放到Tomcat引擎管理的内置对象pageContext中,该bean被指定的id"keyWord",有效期限是(生命周期)PageContext.APPLICATION_SCOPEapplication 

2   视图更新

    servlet创建创建生命周期为applicationbean后,只要Web应用程序不结束,该bean就一直存在。一个用户在访问Web服务目录的各个JSP中都可以使用<jsp:useBean id="keyWord" type="user.yourbean.BeanClass" scope="application"/>  标记获得servlet所创建的bean的引用,然后使用

<jsp:getProperty name="keyWord" property="bean的变量"/>标记显示该Javabean中的数据,该标记中的idservlet所创建的bean索引关键字。

    对于生命周期为applicationbean,如果servlet希望某个JSP显示其中的数据,可以使用RequestDispatcher对象向该JSP页面发出请求,也可以使用HttpServletResponse类中的重定向方法(sendRedirect)。

    注意:所有用户在同一个Web服务目录中的application生命周期的bean是相同的,即占有相同的内存空间。另外,如果servlet所请求的JSP页面,比如show.jsp页面,使用如下标记获得servlet所创建的bean的引用(注意没有用type属性而是用class属性)<jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope="application"/>该标记中的idservlet所创建的bean索引关键字。那么即使servlet所请求的JSP页面或其他事先已经有了id"keyWord"scope"application"bean,那么这个bean也会被servlet所创建的bean替换。

   原因是,servlet所请求的JSP页面或其他页面被刷新时,就会根据当前页面使用的:<jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope="application"/>标记到Tomcat引擎管理的内置对象PageContext中寻找id"keyWord",生命周期是application,而该bean已经被servlet更新了。

 JavabeanServlet与配置文件

   Javabean类的包名均为mybean.dataServlet类的包名均为myservlet.control

1.保存Javabean类和Servlet类的源文件

    D:\ mybean\data  和  D:\myservlet\control

2.编译Javabean

    D:\javac mybean\data\Javabean的源文件

3.编译Servlet

    D:\ javac myservlet\control\servlet的源文件

4.将类的字节码文件保存到服务器

     ch9\WEB-INF\classes\mybean\data

     ch9\WEB-INF\classes\myservlet\control

5web.xml文件

   编写web.xml文件,并保存到Web服务目录的WEB-INF子目录中,即ch9\WEB-INF中 。  

MVC模式与注册登录    大部分Web应用都会涉及到注册与登录模块。本节使用MVC模式讲述怎样设计注册、登录模块。为ch9\WEB-INF中的web.xml文件添加如下子标记

    JavabeanServlet管理

    本节的Javabean类的包名均为mybean.dataServlet类的包名均为myservlet.control

1.保存Javabean类和Servlet类的源文件

   D:\ mybean\data D:\myservlet\control

2.编译Javabean

     D:> javac mybean\data\Javabean的源文件

3.编译Servlet

      D:> javac myservlet\control\servlet的源文件

4.将类的字节码文件保存到服务器

     ch9\WEB-INF\classes\mybean\data  

     ch9\WEB-INF\classes\myservlet\control  

配置文件管理

    本节的Servlet类的包名均为myservlet.control,需要配置Web服务目录的web.xml文件,即将下面的web.xml文件保存到Tomcat安装目录的Web服务目录ch9中。根据本书使用的Tomcat安装目录及Web服务目录,需要将web.xml文件保存到

D:\apache-tomcat-8.0.3\webapps\ch9\WEB-INF

目录中。    

web.xml

<servlet>

    <servlet-name>register</servlet-name>

    <servlet-class>myservlet.control.HandleRegister</servlet-class>

</servlet>

<servlet-mapping>

   <servlet-name>register</servlet-name>

   <url-pattern>/helpRegister</url-pattern>

</servlet-mapping>

<servlet>

    <servlet-name>login</servlet-name>

    <servlet-class>myservlet.control.HandleLogin</servlet-class>

</servlet>

<servlet-mapping>

   <servlet-name>login</servlet-name>

   <url-pattern>/helpLogin</url-pattern>

</servlet-mapping>

  数据库设计与连接

   1  创建一个数据库 、表  

使用MySQL建立一个数据库student,该库共有一个user表 。

    user表的用途:存储用户的注册信息。即会员的注册信息存入user表中,user表的主键是logname,各个字段值的说明如下:

logname 存储注册的用户名(属性是字符型,主键)。

password 存储密码(属性是字符型)。

email 存储email(属性是字符型)。     

2  数据库连接

    避免操作数据库出现中文乱码,需要使用

      Connection getConnection(java.lang.String) 方法建立连接,连接中的代码是(用户是root,其密码是空)

 String url = "jdbc:mysql://127.0.0.1/student?"+

             "user=root&password=&characterEncoding=gb2312";

Connection con = DriverManager.getConnection(uri);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/184114.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

利用企业被执行人信息查询API保障商业交易安全

前言 在当今竞争激烈的商业环境中&#xff0c;企业为了保障商业交易的安全性不断寻求新的手段。随着技术的发展&#xff0c;利用企业被执行人信息查询API已经成为了一种强有力的工具&#xff0c;能够帮助企业在商业交易中降低风险&#xff0c;提高合作的信任度。 企业被执行人…

ArcMap针对正射影像图生成切片操作

1.导入图层jpg文件 2.添加地图坐标系 右键点击地图 --》数据框属性 坐标系选项设置地图的坐标系 地图应该有对应的坐标文件 3.地理配准选项 --》去除自动校正&#xff0c; 4.选择参考坐标 在图中选三个定位坐标保存 5.地理配准选项 --》更新地理位置配准 6.管理工具下 --》…

2023仿聚合搜索程序源码/轻量级搜狗泛站群程序源码/PHP整站源码+完美SEO优化+符合搜狗算法

源码简介&#xff1a; 2023仿聚合搜索/轻量级搜狗泛站群程序整站源码&#xff0c;作为PHP源码&#xff0c;可以完美SEO优化&#xff0c;符合搜狗搜索引擎算法。 轻量级的PHP搜狗泛站群程序源码&#xff0c;完美SEO优化符合搜狗搜索引擎算法&#xff0c;无需任何采集&#xff…

如何有效减少 AI 模型的数据中心能源消耗?

在让人工智能变得更好的竞赛中&#xff0c;麻省理工学院&#xff08;MIT&#xff09;林肯实验室正在开发降低功耗、高效训练和透明能源使用的方法。 在 Google 上搜索航班时&#xff0c;您可能已经注意到&#xff0c;现在每个航班的碳排放量估算值都显示在其成本旁边。这是一种…

AI:87-基于深度学习的街景图像地理位置识别

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

GWAS结果批量整理:升级版算法TidyGWAS

TidyGWAS GWAS分析关键结果之一是显著性SNP位点的P值&#xff0c;通常多年份多地点多模型的GWAS分析将会产生很多结果文件&#xff0c;如何对这些数据进行整理&#xff1f; 汇总这些结果&#xff0c;并将显著性的位点或区域找出来&#xff0c;更加清晰的展示关键信息。 今天介…

揭秘!SpireCV如何实现低延时推流、视频保存!

引言 视频推流是指将实时的音视频数据通过网络传输到服务器或其他终端设备的过程。 在无人机上则是通过搭载摄像头或录像设备&#xff0c;通过无线网络将实时拍摄到的视频数据传输到地面站或其他终端设备&#xff0c;使操作人员能够实时监视无人机所处位置的环境&#xff0c;…

Find My鼠标|苹果Find My技术与鼠标结合,智能防丢,全球定位

随着折叠屏、多屏幕、OLED 等新兴技术在个人计算机上的应用&#xff0c;产品更新换代大大加速&#xff0c;进一步推动了个人计算机需求的增长。根据 IDC 统计&#xff0c;2021 年全球 PC 市场出货量达到 3.49 亿台&#xff0c;同比增长 14.80%&#xff0c;随着个人计算机市场发…

qt实现播放视屏的时候,加载外挂字幕(.srt文件解析)

之前用qt写了一个在windows下播放视频的软件&#xff0c;具体介绍参见qt编写的视频播放器&#xff0c;windows下使用&#xff0c;精致小巧_GreenHandBruce的博客-CSDN博客 后来发现有些视频没有内嵌字幕&#xff0c;需要外挂字幕&#xff0c;这时候&#xff0c;我就想着把加载…

「首届广州百家新锐企业」名单出炉!数说故事遴选入围

11月20日&#xff0c;由中共广州市委统战部、市工商联、市工信局、市国资委、市科技局联合主办的首届广州百家新锐企业融通创新交流会在广州成功举办。 为推动广州市中小民营企业的创新发展&#xff0c;践行新发展理念&#xff0c;厚植广州产业根基&#xff0c;现场发布首届广…

云计算时代来临,传统运维怎样做才能不被“杀死”?

据Forrester Research的数据显示&#xff0c;2021年全球公有云基础设施市场将增长35%&#xff0c;达到1200亿美元&#xff0c;云计算将继续在疫情复苏的过程中“占据中心位置”。 全球用于云计算的IT支出占比将持续增长&#xff0c;企业对于云计算开发人才需求紧迫&#xff0c…

面向自然语言处理任务的预训练模型综述

源自&#xff1a;计算机应用 作者&#xff1a;刘睿珩&#xff0c; 叶霞&#xff0c; 岳增营 “人工智能技术与咨询” 发布 摘 要 近年来&#xff0c;深度学习技术得到了快速发展。在自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;随着文本表征技术…

c语言新龟兔赛跑

以下是一个使用C语言编写的新的龟兔赛跑游戏&#xff1a; #include <stdio.h>#include <stdlib.h>#include <time.h>int main() { int distance, turtle_speed, rabbit_speed, turtle_time, rabbit_time, rabbit_lead; srand(time(NULL)); // 随机数种…

2024-NeuDS-数据库题目集

一.判断题 1.在数据库中产生数据不一致的根本原因是冗余。T 解析&#xff1a;数据冗余是数据库中产生数据不一致的根本原因&#xff0c;因为当同一数据存储在多个位置时&#xff0c;如果其中一个位置的数据被修改&#xff0c;其他位置的数据就不一致了。因此&#xff0c;在数据…

Azure Machine Learning - 创建Azure AI搜索服务

目录 准备工作查找 Azure AI 搜索产品/服务选择订阅设置资源组为服务命名选择区域选择层创建服务配置身份验证扩展服务何时添加第二个服务将多个服务添加到订阅 Azure AI 搜索是用于将全文搜索体验添加到自定义应用的 Azure 资源&#xff0c;本文介绍如何创建Azure AI搜索服务 …

Python,FastAPI,mLB网关,无法访问/docs

根源就是js和ccs文件访问路由的问题&#xff0c;首先你要有本地的文件&#xff0c;详情看https://qq742971636.blog.csdn.net/article/details/134587010。 其次&#xff0c;你需要这么写&#xff1a; /unicontorlblip就是我配置的mLB网关路由。 app FastAPI(titleoutpaint…

做外贸的你崩溃过吗

某日&#xff0c;孔先生问我&#xff0c; 前几天的那个单子怎么样了&#xff1f;看你一会找工厂拍照片&#xff0c;一会找办公室录制视频&#xff0c;半夜还在拿着手机和客户打电话&#xff0c;现在怎么也不提这个进展了&#xff0c;我回答道&#xff1a;黄了。 此时孔先生一股…

短剧付费变现小程序源码系统+开通会员+在线充值 附带完整的搭建教程

大家好啊&#xff0c;今天小编来给大家分享一款短剧付费变现小程序源码系统。近年来&#xff0c;随着互联网技术的飞速发展&#xff0c;短剧成为了一个备受瞩目的领域。短剧以其简洁、紧凑的故事情节和制作周期短、传播速度快的特点&#xff0c;成为了越来越多人的选择。然而&a…

全国测绘资质管理信息系统测绘资质申报流程

讲解一期关于测绘资质申请如何操作&#xff0c;在哪操作的问题&#xff0c;想要知道的按以下流程操作即可 &#xff08;注&#xff1a;以下操作为资质系统操作&#xff0c;想要能把资质申请下来&#xff0c;还需满足以下要求&#xff0c;后面会和系统操作一起统一讲解&#xf…