【】Spring概念

Spring是基于JavaEE的企业级应用各层对象的管理框架。

【】Spring功能

管理各层对象的创建,销毁和依赖。能与各个流行框架集成,完成系统功能。

 

【】Spring组成

1. IoC核心模块(Core Container容器): 管理SpringBean对象。

(1) IoC Core容器:管理Bean的机构。(2) IoC Bean:被管理的对象。

(3) Context:  IoC容器的API:接口,类。(4) Spring EL语言:访问Bean的机制。

 

2.切面模块: 将各个层对象的各个

方法方法中的共同代码封装为切面类,再织入到代码原来的位置。

(1)切面类(Aspect)

(2)切面实现机制:Spring内置机制,AspectJ实现机制。

 

3.数据访问模块:与各种持久层框架集成

集中管理各个持久层对象的创建。

(1)ORM模块:与HibernateJPA, Toplink等集成。(2)JDBC模块:封装JDBC操作。

(3)OXM模块:实现JavaBeanXML映射。(4)事务处理模块:管理业务层事务处理。

 

4.Web模块:实现VC层的模块。

(1) Spring MVC模块(Pull模式)

(2) Spring REST API模块(pull模式) 开发SPA(Single Page Application)应用

(3) Spring WebSocket模块(push模式)

 

【】Spring框架的引入

1.Builder方式-----将需要的模块的jarcopy/WEB-INF/lib

 

2.Maven模式-----将模块的依赖配置信息,copypom.xml

 

【】Spring IoC容器

1.概念:IoC容器是管理Bean的机制。2.功能:管理Bean对象:创建,注入,销毁。

【】Spring IoC管理类的配置方式

1. XML方式2.Java编程方式

 

【】Spring IoC管理BeanXML方式

1.创建XML文件(classpath)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd">

   <bean id="departmentService" class="com.city.oa.service.impl.DepartmentServiceImpl">  

         </bean>

 

2.使用<bean>完成Bean的配置

 <bean id="beanid"  class="类全名" />

 

【】取得Spring IoC管理Bean对象

1.连接到SpringIoC容器

 ApplicationContext ac=new ClassPathXmlApplicationContext("context.xml");

 

2.取得管理的Bean对象

IDepartmentService ds02=ac.getBean("departmentService". IDepartmentService.class);

 

3.调用对象的方法

ds.add(xxx);

 

02Spring Bean管理和依赖注入

【】Java对象的取得方式

1.直接主动创建式-------IA a=new A1();IA a=new A2();

2.间接主动创建式-------IA a=Factory.createA();

3.间接主动查找式-------IA a=(IA)ctx.lookup("jndiA");

4.间接被动注入式 -IoC(*)

protected void doGet(HttpServletRequest request,

HttpServletResponse response)

 {

}

 

【】IoC概念

IoCInversion of Control)反向控制

对象的取得由其他机构创建并送给需要的对象。

 

【】DI概念

DI- Dependency Injection 依赖注入

一个对象使用另一个对象,通过方法参数的取得,由其他对象负责注入。

DIIoC的实现方式。

Spring的核心是IoC容器。

Spring 使用DI完成对象的注入。

 

【】Spring完成对象的取得和配置方式

1.使用new方式取得指定的对象。

(1) XML方式

<bean id="对象的ID"

           class="包名.类名" />

案例:

<bean id="departmentService"

class="com.city.oa.service.impl.DepartmentServiceImpl">  </bean>

(2)Java注解方式配置(*

Spring提供多个注解类用于配置Bean的创建

@Component:一般类前面            @Service:用于业务层类的前面

@Repository:用于持久层类的前面     @Controller:用于控制层类的前面

@RestController:用于REST API

控制层类的前面(用于开发SPA

案例:

@Service("departmentService")

public class DepartmentServiceImpl

{}

使用注解模式配置Spring Bean,需要设置Spring扫描的路径。

<context:component-scan

base-package="com.city.oa"/>

 

2.使用静态工厂类取得对象

(1) XML方式

A a=Factory.createA();

配置语法:

<bean id="idxxx" class="工厂类全名"

   factory-method="工厂方法"

/>

案例:

SessionFactory sf=HibernateSessionFactory

.createSessionFactory();

XML配置代码:

<!-- 通过静态工厂方法取得对对象 -->

<bean id="sessionFactory"

      class="com.city.oa.factory.HibernateSessionFactory"

      factory-method="createSessionFactory"    

 />

(2)注解方式

 

3.动态工厂取得对象配置

(1) XML

<bean id="工厂id" class="工厂类全名" />

 

<bean id="对象Id" factory-bean="工厂id"

    factory-method="非静态的工厂方法" />

 

(2)注解方式

 

4.JNDI查找对象的配置

XML方式

(1)通过Spring提供的JNDI工厂类查找指定

的对象。

<bean id="对象ID"

   class="...JndiObjectFactoryBean">

   <property name="jndiName" >

       <value>java:comp/env/cityoa</value>

   </property>

</bean>

 

5.DI注入模式:

Spring支持2种方式实现DI注入。

(1) Set方法注入

(2)构造方法注入

 

【】Spring Set方法实现DI注入

1.定义依赖的类的对象属性变量。

private SessionFactory sf=null;

2.为依赖的属性变量创建set方法

public void setSf(SessionFactory sf) {

this.sf = sf;

}

3.实现Set方法的依赖注入配置:

(1)XML方式

<bean id="id" class="类全名">

    <property name="属性名"

    ref="依赖BeanID" />

</bean>

(2)注解方式

(2)

Spring03DI的实现与配置

【】练习题

1.根据要求写出完成如下任务的代码

(1)XML方式配置取得类A的对象。(2)Java注解方式取得A的对象

(3)XML方式取得工厂Factory静态 方法create创建的对象

(4)XML方法取得工厂Factory动态方法create得到的对象

(5)提高查找命名空间对象"cityoa"

答:

(1) <bean id="a" class="A" />

(2)

    @Component

    public class A{}

(3)<bean id="a" class="Factory"

      factory-method="create" />

(4)<bean id="factory" class="Factory" />

     <bean id="a" factory-bean="factory"

       factory-method="create" />

(5) <bean id="a" class="JndiObjectFactoryBean">

        <property name="jndiName">

              <value>cityoa</value>

        </property>

      </bean>

 

【】Spring DI的实现方式

1.属性注入方式    2.构造方法注入方式

 

【】Spring属性(Property)注入实现DI

1.属性条件:

(1)类变量       (2)提供getset方法

 

2.XML方式:

(1)语法:

   <bean id="id" class="类全名" >

       <property name="属性名" >

            注入的值

       </propery>

   </bean>

 

(2).注入简单类型:

<property name="属性">

   <value></value>

</property>

(3).注入对象类型:

<1> 标准语法:

<property name="ssf">

    <bean ref="sqlSessionFactory" />

</property>

<2>简化语法

<property name="ssf"

 ref="sqlSessionFactory" />

(4)注入集合对象

 

3.Java注解方式实现属性注入

(1)语法:使用@Autowiredset方法前。

 @Autowired

 public void setXxx(){}

 

【】Spring使用构造方法实现DI

1.前提条件:(1)定义注入的类变量    (2)定义构造方法传入注入变量

 

2.XML方式注入DI对象

语法:

<bean id="" class="" >

    <constructor-arg ref="" />

</bean>  

 

3.Java注解方式实现构造方法DI注入

@Autowired

public 构造方法(DI参数){

 

}

Spring0405AOP编程

【】AOP概念----------AOP=Aspect Oriented Programming

面向切面编程。

Aspect(切面)概念:就是多个类的多个方法中部分重复的代码。

AOP的实质是指将重复的代码从多个类的多个方法中移动切面类中。

【】AOP的基本元素(*

1.Joinpoint(连接点):

  切面运行的位置。

   Spring AOP只支持普通方法的切入。

   方法前,方法后,方法前后,

   方法抛出异常后。

2.Pointcut(切入点)

   相同位置的连接点的集合。

 切入点1:所有业务类add方法前。

 切入点2:所有业务类所有方法后。

3.Advice(通知)

   切面的执行的代码。

4.Aspect(切面)

   Aspect=Advice+Pointcut

5.Target(目标)

   切面要切入的对象。

6.Proxy(代理)

   Spring创建代理对象实现目标对象和切面对象的整合。

7.Weaving(织入)

   SpringTargetAspect整合为Proxy 的过程称为织入。

【】Spring Adivice的类型

1.Before Advice: 方法前Advice

2.After Returning Advice: 方法返回后Advice方法运行没有异常,正常返回。

3.After Advice:方法后Advice 方法运行正常结束,或抛出异常结束。

4.Around Advice: 方法前和后执行。

5.After Throwing Advice:方法抛出异常后。

 

【】Spring AOP的编程模式

1. Advice接口模式+XML配置Spring 2.0之前使用此模式。

 

2. POJO+XML

POJO=Plain Old Java Object不实现任何接口,不继承任何父类。

 

3.POJO+Annotation模式

使用POJO类编写Advice,同时在Advice类上使用Spring AspectJ的注解类

声明AdvicePointcut

 

【】POJO+Annotation模式编写AOP

1.Spring IoC容器配置中启用注解AspectJ模式

  <aop:aspectj-autoproxy />

2.编写 POJO Advice

3.增加切面注解:

   @Aspect

4.增加Spring 扫描

   @Component

案例:

@Component

@Aspect

public class ServiceMethodAdvice {}

 

【】编写方法前Advice方法

(1)编写普通方法

(2)方法前增加注解: @Before("切入点")

案例:

@Before(value="execution(* com.city.oa.service.impl.*.*(..))")

public void serviceMethodBefore() throws Exception{

  System.out.println("方法前切面方法执行。。。");

}

 

【】编写方法返回后Advice方法:

(1)定义普通方法

(2)方法前增加@AfterReturning

案例:

@AfterReturning(value="execution

(* com.city.oa.service.impl.*.*(..))")

public void serviceMethodAfterReturning() throws Exception{

  System.out.println("方法返回后切面方法执行。。。");

}

【】编写方法后Advice

(1)定义普通方法

(2)方法前增加@After

案例:

@After(value="execution

(* com.city.oa.service.impl.*.*(..))")

public void serviceMethodAfter() throws Exception{

 System.out.println("方法后切面方法执行。。。");

}

05讲授课内容

【】环绕Around Advice

1.功能:对目标对象指定的方法 方法执行前和方法执行后分别切入 Advice代码。

2.编程:在Advice方法前使用@Around

@Around(value="切入点表达式")

public Object  方法名(ProceedingJoinPoint pjp) throws Throwable{

    //方法前代码    

    Object result = pjp.proceed(); //调用目标对象方法

    //方法后代码

    return result;

 

}

案例:

@Around(value="execution(* com.city.oa.service.impl.*.*(..))")

public Object  serviceMethodAround(ProceedingJoinPoint pjp) throws Throwable{

 

System.out.println("环绕Advice方法前....");

Date start=new Date();

Object result=pjp.proceed();

Date end=new Date();

long runtime=end.getTime()-start.getTime();

System.out.println("目标方法执行时间:"+runtime+"毫秒");

 

System.out.println("环绕Advice方法后....");

return result;

 

}

案例:

@Around(value="execution(* com.city.oa.service.impl.*WithAOP.*(..))")

public Object  serviceTransactionAround(ProceedingJoinPoint pjp) throws Throwable{

System.out.println("MyBatis环绕Advice方法前....");

SqlSession session =ssf .openSession();

IDepartmentDao dd=session.getMapper(IDepartmentDao.class);

if(pjp.getTarget() instanceof DepartmentServiceImplWithAOP) {

((DepartmentServiceImplWithAOP)pjp.getTarget()).setDd(dd);

}

Object result=pjp.proceed();

session.commit();

session.close();

System.out.println("MyBatis环绕Advice方法后....");

return result;

}

       

【】方法异常捕获Exception ThrowAdvice

1.功能:用于捕获目标对象方法抛出异常后的处理工作。

2.编程:在Advice方法前使用

@AfterThrowing注解类

语法:

@AfterThrowing(value="切入点"

,throwing="对象名")

public void 方法名(JoinPoint jp,异常类型 对象名) throws Exception

{

   处理代码

 

}

 

【】Advice方法参数

1.JoinPoint::所有的Advice方法

1个参数都可以是JoinPoint类型对象。

该对象如下方法:

getTarget(): 取得目标的对象。getSignature() 取得拦截的方法名。

getArgs(): Object[]: 取得参数。getArgs()[getArgs().length-1]

2.ProceedingJoinPoint:   环绕Advice方法必须使用此参数。

【】Pointcut定义

1.Pointcut的定义类型:

(1)内嵌式定义

@Around(value="execution(* com.city.oa.service.impl.*WithAOP.*(..))")

(2)独立式定义

单独定义切入点,在切面类中使用@Pointcut定义切入点。

推荐:创建单独的切面类,只定义切入点方法。

package com.city.oa.advice;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Pointcut;

import org.springframework.stereotype.Component;

//切入点类

@Component

@Aspect

public class ServicePointcut {

@Pointcut("execution(* com.city.oa.service.impl.*.*(..))")// the pointcut expression

private void anyServiceMethon() {}

@Pointcut("execution(* com.city.oa.service.impl.*AOP.*(..))")// the pointcut expression

private void anyAOPServiceMethon() {}}

引用定义好的切入点

@Before(value="com.city.oa.advice.ServicePointcut.anyServiceMethon()")

public void serviceMethodBefore() throws Exception{

 

System.out.println("方法前切面方法执行。。。");

}

2.

【】XML方式实现AOP配置

Spring06Spring集成Hibernate

【】Hibernate 编程

1.读取配置信息://取得hibernate.properties

Configuration cfg=new Configuration();

//取得默认的XML配置文件:hibernate.cfg.xml

cfg.configure();

2.创建SessionFactory

SessionFactory sf=cfg.buildSessionFactory();

3.打开一个Session

Session session=sf.openSession();

4.开始一个事务

Transaction tx=session.beginTransaction();

5.这些CUDR操作

   session.save(pm);

   session.update(pm);

   session.delete(pm);

   ProductModel pm=session.get(id,ProductModel.class);

6.提交事务

   tx.commit();

7.关闭会话

   session.close();

【】Spring集成Hibernate的管理

1.管理数据库连接池

2.管理SessionFactory创建,Spring内置Hibernate SessionFactory工厂类。

3.Spring内置Hibernate事务管理器

4.Spring内置事务处理配置自动有事务切面,可以配置到业务层。

5.Spring自动打开Session,自动关闭Session 自动事务提交和回滚。

【】Spring管理数据库连接池

1.使用Spring内置的连接池框架(测试使用,生产环境不推荐使用)

<bean id="ds01" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

  <property name="driverClassName">com.mysql.jdbc.Driver</property>

<property name="url">jdbc:mysql://localhost:3306/cityoa</property>

   <property name="username">root</property>

  <property name="password">root</property>

  </bean>

 

2.使用Apache DBCP框架

<bean id="myDataSource"

class="org.apache.commons.dbcp.BasicDataSource"

destroy-method="close">

<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>

<property name="url" value="jdbc:hsqldb:hsql://localhost:9001"/>

<property name="username" value="sa"/>

<property name="password" value=""/>

</bean>

3.使用C3P0框架配置连接池

4.使用JavaEE配置的连接池

<jee:jndi-lookup id="dsjndi"

jndi-name="java:comp/env/cityoa"/>

  1. 使用Proxool连接池框架

 

【】Spring配置HIbernateSessionFactory工厂Bean根据使用Hibernate版本的不同需要选择不同的SessionFactory工厂Bean案例使用HIbernate5的工厂Bean

类型:org.springframework.orm.hibernate5.LocalSessionFactoryBean

案例:

<!-- 配置Hibernate SessionFactory工厂Bean -->

<bean id="ssf" class=

"org.springframework.orm.hibernate5.LocalSessionFactoryBean">

<property name="dataSource" ref="ds01"/>

<property name="packagesToScan">

<list>

<value>com.city.oa.model</value>

</list>

</property>

<property name="hibernateProperties">

<value>

hibernate.dialect=org.hibernate.dialect.MySQLDialect

hibernate.show_sql=true

hibernate.format_sql=true

</value>

</property>

</bean>

 

【】配置Hibernate SessionFactory工厂Bean

的主要属性

1.dataSource: 指定数据源。

<property name="dataSource" ref="ds01"/>

2.mappingResources:指定XML映射文件

<property name="mappingResources"><list>

<value>product.hbm.xml</value></list>

3.mappingDirectoryLocations:指定XML文件的路径

<property name="mappingDirectoryLocations">

   <list>

      <value>com/city/oa/hr/model/xml

      <value>com/city/oa/sales/model/xml

    </list>

</property>

自动扫描 xxx.hbm.xml文件

4.packagesToScan:

 指定注解Model类的扫描包

<property name="packagesToScan">

   <list>

      <value>com.city.oa.model</value>

   </list>

</property>

 

【】配置Spring管理Hibernate事务管理器

针对不同的Hibernate版本

Spring提供了不同版本的事务管理器

<bean id="transactionManager"

class="org.springframework.orm.hibernate5.

HibernateTransactionManager

">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

 

【】Spring声明式事务切面的配置方式

1.XML方式    2.Java Annotation方式

 

【】Java Annotation方式

1.Spring IoC配置文件中启用注解事务方式

<tx:annotation-driven transaction-manager=

"transactionManager"/>

如果事务管理器的IDtransactionManager

可以省略属性transaction-manager

简写模式:<tx:annotation-driven />

 

2.在需要事务管理的类上使用事务注解类

@Transactional

2

Spring07Spring集成MyBatis

【】Spring集成MyBatis的基本原理

Spring管理数据库连接,

Spring管理MyBatis SqlSessionFactory

创建,

Spring负责创建MyBatis DAO接口对象。

Spring负责事务管理器。

Spring负责业务层的事务切面。

Spring负责创建业务对象,并将Dao接口

注入到业务对象。

【】Spring管理数据库连接

Spring配置DataSource

1)使用Spring内置的DataSource框架

<!-- 使用Spring内置的连接池框架配置连接池 -->

<bean id="ds01" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>

    <property name="url" value="jdbc:mysql://localhost:3310/cityoa"></property>

    <property name="username" value="root"></property>

   <property name="password" value="root"></property>

  </bean>

 

【】Spring配置MyBatisSqlSessionFactory

工厂Bean

<!-- 配置MyBatis SqlSessionFactory -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource"/>

<property name="configLocation" value="classpath:mybatis-config-spring.xml"/>

<property name="mapperLocations" value="classpath*:com/city/oa/dao/xml/*.xml" />

<property name="typeAliasesPackage" value="com.city.oa.model" />

</bean>

主要属性:

(1)dataSource:指定数据源

(2)configLocation:指定MyBatis的配置文件

(3)mapperLocations:指定映射文件

(4)typeAliasesPackage

     指定别名的Model的包

 

【】配置MyBatis的事务管理器

Spring没有提供MyBatis的事务管理器。

使用JDBC事务管理器

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource" />

</bean>

 

【】启用Spring事务切面注解

<!-- 启用注解事务声明 -->

<tx:annotation-driven transaction-manager="transactionManager"/>

 

【】配置Spring注册MyBatis DAO接口

1.每次注册一个DAO接口(不推荐使用)

<bean id="departmentDao" class="org.mybatis.spring.mapper.MapperFactoryBean">

  <property name="mapperInterface" value="com.city.oa.dao.IDepartmentDao" />

  <property name="sqlSessionFactory" ref="sqlSessionFactory" />

</bean>

每次只能注册一个Mapper接口。

2.注册多个DAO接口-Bean方式

 

<!-- 批量注册DAO接口 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

   <property name="basePackage" value="com.city.oa.dao" />

   <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

</bean>

 

3.注册多个DAO接口-mybatis命名空间方式

MyBatis-Spring新版提供了专门

的命名空间<mybaits>

Springcontext.xml文件中

增加<mybatis>命名空间:

xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"

 

http://mybatis.org/schema/mybatis-spring

http://mybatis.org/schema/mybatis-spring.xsd

增加命名空间后,使用<mybatis>空间的属性

<mybatis:scan base-package="org.mybatis.spring.sample.mapper" />

Spring08Spring MVC

【】MVC概念和组成部分职责

1.MVCModel -View -Controller

2.Model模型层的职责

(1)表达业务数据: Model

(2)持久化业务数据: DAO

(3)模拟业务处理:Service

3.View层职责

(1)收集用户的输入信息:FORMFORM元素

(2)显示用户需要的业务信息:

    列表模式,详细模式

4.Controller层的职责

(1)取得View收集的数据。

String sage=request.getParameter("age");

(2)验证数据的合法性

使用正则表达式验证。

(3)类型转换:String-int, double, Date

int age=Integer.parseInt(sage);

(4)组装Model对象

EmployeeModel em=new EmployeeModel();

em.setAge(age);

....

(5)调用业务层方法实现业务处理

Servlet取得业务层对象:

ApplicationContext ac=new ClassPathXmlApplicationContext

("context.xml");

IEmployeeService esaop=ac.getBean

("employeeServiceWithAOP",

IEmployeeService.class);

 

es.add(em);

List list=es.getList();

 

(6)传递View需要的数据

request.setAttribute("list",list);

(7)跳转到指定View对象(转发,重定向)。

request.getRequestDispatcher("list.jsp").

forwared(request,response);

 

response.sendRedirect("tomain.do");

【】Spring MVC概念

Spring MVC是基于JavaEE

VC层框架

【】Spring MVC功能

实现VC层的职责。

【】Spring MVC引入

Spring Web模块,Spring WebMVC模块

【】Spring MVC组成

1.前端核心控制器DispatcherServlet

   接收所有HTTP请求

   分配具体的控制器负责请求处理。

   根据结果类型实现结果处理(转发,重定向,

   生成XML,生成PDF,生成JSON)

2.RequestMapping请求地址映射

3.实际控制器Controller

   完成具体的控制功能。

4.结果解析器:

   对控制器方法的返回结果进行解析

   生成结果类型。(重点:返回JSON

   REST API编程)

【】Spring MVC前端控制器Dispatcher

Servlet配置

1./WEB-INF/web.xml配置

   Spring IOC的载入监听器

 <!-- Spring IoC容器XML位置参数 -->

  <context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:context.xml</param-value>

</context-param>

 <!-- Spring IoC容器启动监听器 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

 

2.配置Spring MVC的前端控制器

<!-- Spring MVC的前端控制器 -->

<servlet>

<servlet-name>DispatcherServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:springmvc.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>DispatcherServlet</servlet-name>

<url-pattern>*.mvc</url-pattern>

</servlet-mapping>

 

3.配置Spring MVCXML文件

创建springmvc.xmlclasspath下。

Spring MVC配置XML文件中:

<!-- Spring MVC注解启用 -->

<mvc:annotation-driven />

 

 

 

【】编写Controller

Spring MVC支持POJO模式的控制器类。

1.编写POJO类。

2.声明@Controller

3.编写控制方法。

4.为控制方法映射请求地址

   @RequestMapping("URI")

Spring09Spring MVC控制器编程

【】Controller的类型

1.常规控制器:

   使用@Controller声明

   功能:主要是完成转发和重定向。

              JSPJSTL协作。

2.基于REST API的控制器:

   使用@RestController

   功能:直接向浏览器发送响应。

              主要是JSON类型的响应。

   主要实现SPA应用。

   JSON结果需要引入Jackson框架类库。

   在自己的电脑上安装软件:Postman (64)

Postman-win64-7.1.1-Setup.exe

 

【】控制器方法

Spring MVC的控制器方法没有特定的要求

规范。

方法名任意,方法参数类型众多。

方法返回类型多种。

根据业务需求自己确定参数和返回类型。

【】方法的URI请求地址映射

Spring MVC每个控制方法对应一个唯一的

URI地址。

 

URI:/oassm/department/add.jsp

URL:http://localhost:8080/oassm/

         department/add.jsp

URI地址使用@RequestMapping实现

映射

@RequestMapping语法:

@RequestMapping(属性=,属性=,....)

常用的属性:

(1)value="uri": 指定URI地址,默认属性。

(2)path="uri", value相同。

(3)method={} 指定请求的方法

method= {RequestMethod.POST,

RequestMethod.GET}

(4)params={} 指定包含的请求参数

  params={"userid","username"}

(5)headers={} 指定包含的请求头

headers={"User-Agent"}

(6) consumes={} 指定请求的类型

consumes={"application/json"}

consumes={"multipart/form-data"}

目前流行的Web框架:AngularVue.js

  React 都默认使用JSON请求。

  Bootstrap

 

正常的表单请求:www.form-data

<form action="add.mvc" >

 

</form>

文件上传的请求

<form action="add.mvc" enctype="multipart/form-data" >

 

</form>

 

(7)produces={}指定响应的类型

生成JSON响应:

produces={"application/json"}

produces={"image/jpeg"}

 

【】控制器的方法参数

Spring MVC控制器方法的参数支持多种类型。

1.Model类对象:

   Spring MVC支持粗粒度数据。

   自动将请求参数转换为Model对象。

2.Java常用类型:Stringint, double, Date

使用细粒度方式接收单个数据。

Spring MVC提供2种方式接收单个参数:

(1)请求地址参数:

   <a href="list.mvc?rows=10&page=1" >下页</a>

可以使用注解类:@RequestParam注解

@RequestParam语法:

@RequestParam(属性=,属性=)

主要属性:required=true|false 强制与选项

public List<DepartmentModel>

getListWithPage(

@RequestParam(required=false,

defaultValue="2")  int rows,

@RequestParam(required=false,

defaultValue="1") int page)

throws Exception{

第11讲 Spring MVC处理文件上传与下载

【】文件上传的实现机制

1.表单的定义

<form action="url" method="post"

    enctype="multipart/form-data" >

 

</form>

2.定义文件选择域:

<input type="file" name="photo"  />

3.提交的数据类型:

  请求体包含文本和二进制数据。

4.服务器端接收时需要解析出

   文本和二进制数据。

5.解析一般使用文件上传解析器。

(1)JSPSmartUpload

(2) Apache Common upload

(3) JavaEE Server 内置的文件解析器

     Servlet3.1版本以上)

【】Spring MVC实现文件上传的机制

1.使用外部的文件上传框架

(1)Apache Common upload

(2)Servlet3.1以上的文件解析器

2.Sping  MVC定义了Multipart数据的解析器

  Spring MVC Context配置文件中

   配置使用以上2个文件上传框架的解析器

3.Spring MVC在接收到Mulitpart请求时

   自动交给解析器进行解析。

    解析的文本使用传统的方式接收。

    解析的文件使用MultipartFile接收

4.通过MultipartFile的方法实现

   文件的处理。

【】Spring MVC文件解析器的配置

1.使用Apache Common Upload框架

(1) 引入Common Upload JAR文件。

(2) 引入common IO jAR

(3)Spring MVC Context配置文件中

    配置使用upload的解析器

<!-- 使用Apache Common Upload文件解析器 -->

<bean id="commonUploadmultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<!-- one of the properties available; the maximum file size in bytes -->

<property name="maxUploadSize" value="20000000"/>

</bean>

 

 

2.Servlet3.1文件上传解析器

(1)web.xmlDispatcherServlet中配置

    启用Servlet3.1文件解析器

<multipart-config>

<max-file-size>20848820</max-file-size>

<max-request-size>418018841</max-request-size>

<file-size-threshold>1048576</file-size-threshold>

</multipart-config>

(2)Spring MVCContext配置文件中

配置Servlet3.1文件上传解析器:

 

参见书P391代码。

【】Spring MVC控制器接收上传文件

Spring MVC使用MultipartFile接收文件。

1.单个文件:

<input type="file" name="photo" >

接收:

定义变量:

MultipartFile photo

 

2.多个文件:

<input type="file" name="photo" >

<input type="file" name="photo" >

<input type="file" name="photo" >

接收:

MultipartFile[] photo

 

【】Spring MVC处理文件下载

1.使用Servlet API编程

通过在Controller类中引入Servlet API

Response接口对象实现编程。

 

 

  1. 通过返回ResponseEntity<byte[]>

Spring09_10Spring MVC控制器编程

【】Controller的类型

1.常规控制器:

   使用@Controller声明

   功能:主要是完成转发和重定向。

              JSPJSTL协作。

2.基于REST API的控制器:

   使用@RestController

   功能:直接向浏览器发送响应。

              主要是JSON类型的响应。

   主要实现SPA应用。

   JSON结果需要引入Jackson框架类库。

   在自己的电脑上安装软件:Postman (64)

Postman-win64-7.1.1-Setup.exe

 

【】控制器方法

Spring MVC的控制器方法没有特定的要求

规范。

方法名任意,方法参数类型众多。

方法返回类型多种。

根据业务需求自己确定参数和返回类型。

【】方法的URI请求地址映射

Spring MVC每个控制方法对应一个唯一的

URI地址。

 

URI:/oassm/department/add.jsp

URL:http://localhost:8080/oassm/

         department/add.jsp

URI地址使用@RequestMapping实现

映射

@RequestMapping语法:

@RequestMapping(属性=,属性=,....)

常用的属性:

(1)value="uri": 指定URI地址,默认属性。

(2)path="uri", value相同。

(3)method={} 指定请求的方法

method= {RequestMethod.POST,

RequestMethod.GET}

(4)params={} 指定包含的请求参数

  params={"userid","username"}

(5)headers={} 指定包含的请求头

headers={"User-Agent"}

(6) consumes={} 指定请求的类型

consumes={"application/json"}

consumes={"multipart/form-data"}

目前流行的Web框架:AngularVue.js

  React 都默认使用JSON请求。

  Bootstrap

 

正常的表单请求:www.form-data

<form action="add.mvc" >

 

</form>

文件上传的请求

<form action="add.mvc" enctype="multipart/form-data" >

 

</form>

 

(7)produces={}指定响应的类型

生成JSON响应:

produces={"application/json"}

produces={"image/jpeg"}

 

【】控制器的方法参数

Spring MVC控制器方法的参数支持多种类型。

1.Model类对象:

   Spring MVC支持粗粒度数据。

   自动将请求参数转换为Model对象。

    如果接收JSON请求,

    需要使用注解类@RequestBody

 

 

 

2.Java常用类型:Stringint, double, Date

使用细粒度方式接收单个数据。

Spring MVC提供 种方式接收单个参数:

(1)请求地址参数:

   <a href="list.mvc?rows=10&page=1" >下页</a>

可以使用注解类:@RequestParam注解

@RequestParam语法:

@RequestParam(属性=,属性=)

主要属性:required=true|false 强制与选项

public List<DepartmentModel>

getListWithPage(

@RequestParam(required=false,

defaultValue="2")  int rows,

@RequestParam(required=false,

defaultValue="1") int page)

throws Exception{}

 

(2)URI中变量参数:

语法: <a href="list/{rows}/{page}.mvc" >

list/10/2.mvc

Spring MVC使用注解@PathVariable("name")

(3)请求头的参数:

方法名(@RequestHeader("name") 参数)

案例:

@RequestMapping(value="/checkHeader")

public String checkHeader(@RequestHeader("Content-Length") int length) throws Exception{

System.out.println("长度:"+length);

return "OK";

}

 

@RequestHeader("User-Agent") String browser

 

(4)取得Cookie的值

Spring MVC提供取得指定nameCookie的值

@CookieValue("userid") String user

 

add(@CookieValue("userid") String user) {

 

}

 

3.请求对象:HttpServletRequest

一般情况下很少直接使用Request对象

4.响应对象:HttpServletResponse

当控制器发送图片等,可以使用响应对象。

 

5.会话对象:HttpSession

取得用户登录信息,需要使用会话对象。

login(String id,String password, HttpSession session){

   

}

 

【】控制器方法的返回类型

1.当使用REST Controller时,可以返回

任何能转换为JSON的类型。

普通的Controller使用@ResponseBody

@RestController=@Controller+

                             @ResponseBody

 

 

2.使用传统的Controller时,

   一般返回String, 表示JSP的地址

  或者是控制器的地址。

  return "department/add";

  return "redirect:/department/tomain.mvc";

 

【】SPA模式

SPA-Single Page Application

系统启动主页后,地址栏不改变。

所有的子网页都是通过某种机制

动态嵌入到主页中。

jquery通过load方法。

Angular通过组件组装。

 

【】复习Jquery

1.语法:

(1)  $("选择器").函数(参数,.....);

(2) $.函数(参数,.....);

 

function(){

 

$("div#leftmenu a").on("click",function(event){

var href=$(this).attr("href");

$("div#maincontent").load(href);

event.preventDefault();

});

 

}

 

 

【】定位器

jquey使用CSS定位器

1. 标记定位:

   a { font-size:40px};

   $("a").css("font-size","40px");

 

2.ID定位器: <a  id="xxxx" ></a>

   $("a#xxxx").html("连接01");

 

3.类定位器: <a  class="main" ></a<

   $("a.main").html("aaaa");

 

4.子元素定位器:

<div id="main"> <span></span></div>

  var info=  $("div#main span").html();

 

【】jQuery常用的函数

1.html(), html(参数);取得和设置标记的内容

var info=  $("div#main span").html();

$("div#main span").html("aaaa");

 

2.attr("name"), attr("name","value")

取得标记属性的值,

或设置属性的值。

 

3.on("事件名",function(){处理代码});

 

转载于:https://www.cnblogs.com/dys6/p/11304184.html

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 2019面试问答

    在经历几次的面试中&#xff0c;逐渐的发现自己的基础还是很薄弱&#xff0c;现整理一下面试问的问题&#xff0c;以鞭策自己 1、从技术的角度讲解一下Spring的原理&#xff1f; 答&#xff1a; IOC控制反转&#xff0c;不是一种技术&#xff0c;而是一种思想&#xff0c;对…...

    2024/4/21 13:31:16
  2. 真牛!1200页文档笔记,已拿offer入职

    前言 作为一个典型的分布式项目&#xff0c;Kubernetes 的部署一直以来都是挡在初学者前面的一只“拦路虎”。尤其是在 Kubernetes 项目发布初期&#xff0c;它的部署完全要依靠一堆由社区维护的脚本。 其实&#xff0c;Kubernetes 作为一个 Golang 项目&#xff0c;已经免去…...

    2024/4/21 13:31:16
  3. 玩转四旋翼无人机(GPS基础)

    本文主要介绍关于GPS及其相关数据计算方法&#xff0c;GPS经常用于移动机器人及其他移动过程中的定位和地图显示。本文先介绍一些关于GPS参考坐标等相关知识。 GPS 数据简介 实际的GPS系统会以一定格式输出很多数据&#xff0c;如时间&#xff0c;精度因子&#xff0c;卫星编…...

    2024/5/1 21:35:53
  4. 一文读懂 @Decorator 装饰器——理解 VS Code 源码的基础

    作者&#xff1a;easonruan&#xff0c;腾讯 CSIG 前端开发工程师1. 装饰器的样子我们先来看看 Decorator 装饰器长什么样子&#xff0c;大家可能没在项目中用过 Decorator 装饰器&#xff0c;但多多少少会看过下面装饰器的写法&#xff1a;/* Nest.Js cats.controller.ts */ i…...

    2024/4/21 13:31:13
  5. 被低估的.net(中) - 广州.net俱乐部2019年纲领

    这是被低估的.net系列的中篇。上篇在这里&#xff1a;被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾 中篇本来不是这样的&#xff0c;中篇的草稿大纲其实在写上篇之前就写好了&#xff0c;嗯&#xff0c;当时给张队长看过了。然而却因为被.net 粉丝的热情震惊和感…...

    2024/4/21 13:31:13
  6. 全栈前端学习路线

    全栈前端学习路线 第一阶段&#xff1a; HTMLCSS&#xff1a; HTML进阶、CSS进阶、divcss布局、HTMLcss整站开发。 JavaScript基础&#xff1a; Js基础教程、js内置对象常用方法、常见DOM树操作大全、ECMAscript、DOM、BOM、定时器和焦点图。 JS基本特效&#xff1a; 常见特…...

    2024/4/21 13:31:11
  7. 山东大学软件开发解决方案复习提纲

    写在前面&#xff1a; 期末又到了&#xff0c;这是一份新鲜的软件开发解决方案复习提纲&#xff0c;所有问题均来自于老师最后一节课划重点时使用的ppt&#xff0c;请大家放心使用~ 另外&#xff0c;由于这门课程教的知识与企业中真正用的东西严重脱节&#xff0c;所以针对部…...

    2024/4/27 2:11:13
  8. Docker快速搭建Taiga敏捷开发项目管理平台

    Taiga.io , Open Source, full featured project management platform for startups and agile developers &... Created by Taiga Agile, LLCDocker快速搭建Taiga敏捷开发项目管理平台PS:根据转载来源没有快速搭建起来,不过给出下面代码可以成功搭建,单前提您得先安装va…...

    2024/4/21 3:48:59
  9. 地球椭球体(Ellipsoid)、大地基准面(Datum)及地图投影(Projection)三者的基本概念

    地球椭球体(Ellipsoid) 众所周知我们的地球表面是一个凸凹不平的表面&#xff0c;而对于地球测量而言&#xff0c;地表是一个无法用数学公式表达的曲面&#xff0c;这样的曲面不能作为测量和制图的基准面。假想一个扁率极小的椭圆&#xff0c;绕大地球体短轴旋转所形成的规则椭…...

    2024/4/20 5:04:32
  10. 第二眼——AngularJS方法扩展之依赖注入

    依赖注入 DI&#xff08;Dependency Injection&#xff09; 依赖注入主要是将一个功能注入到另一个不想跟的模块里面去&#xff0c; 让这个功能变成这个模块的一部分&#xff0c;叫做依赖注入&#xff0c;类似在一个功能模块中调用另一个模块&#xff08;模块化&#xff09; 只…...

    2024/4/25 16:53:28
  11. 为什么要用AngularJS

    在学习一门技术之前&#xff0c;总得清楚这个技术解决了什么问题&#xff0c;也即它产生的背景和应用的市场。就像Spring这么火的框架&#xff0c;我觉得它的IOC和AOP是一个非常不错的理念&#xff0c;提出了依赖注入&#xff08;解决对象依赖关系的管理&#xff09;和面向切面…...

    2024/4/20 15:55:58
  12. erdas中怎样给无坐标系统的数据定义坐标系统

    转自&#xff1a;http://hi.baidu.com/hello3s/item/fcefb827c0084957c28d59d5 坐标系统与投影变换及在桌面产品中的应用 本文共可分为如下几个部分组成&#xff1a; 地球椭球体(Ellipsoid) 大地基准面&#xff08;Geodetic datum&#xff09; 投影坐标系统&#xff08;Project…...

    2024/4/19 20:30:08
  13. 上海市最好的双眼皮医院哪家最好的医院

    ...

    2024/4/21 13:31:09
  14. 汕头割双眼皮哪个好问曙光

    ...

    2024/4/21 13:31:08
  15. Angular 禁用按钮 2s后启用按钮

    html文件按钮的设置&#xff08;按钮的初始状态为禁用&#xff09; <button [disabled]"!allow">测试按钮</button>ts文件下类的定义 export class MyownComponent{allowfalse;constructor(){setTimeout(()>{this.allowtrue},2000)} }两秒后按钮改为…...

    2024/4/21 13:31:07
  16. Windows10下VirtualBox中安装Ubuntu只有32bit的解决方法

    新电脑想安装个Linux的虚拟机,然后选择了在virtualbox中Ubuntu,但却一直只有32bit的,无法安装64bit的。这样查了一下网上的说法,一般有以下几种:1,未开始虚拟化技术,需要到BIOS中打开。这个可以在任务管理器的CPU中查看。我的电脑本来就已经打开虚拟化技术了,所以不是这…...

    2024/4/21 13:31:05
  17. Angular2 AsyncPipe

    今天我们来介绍一下 Angular 2 中 AsyncPipe (异步管道) &#xff0c;使用 AsyncPipe 我们可以直接在模板中使用 Promise 和Observable 对象&#xff0c;而不用通过定义一个类的成员属性来存储返回的结果。使用async管道不需要再执行 可观察对象的 订阅 或是 promise的then来获…...

    2024/4/21 13:31:05
  18. 做双眼皮能用多少钱啊

    ...

    2024/4/21 13:31:03
  19. 双眼皮埋线哪好询广州紫 馨

    ...

    2024/4/21 13:31:02
  20. 封装vue.js 组件库

    组件化开发 开源组件库&#xff1a;element-yi&#xff0c;iview CDD CDD(component-Driven Development)自下而上从组建级别开始&#xff0c;到页面级别结束 好处&#xff1a; 组建在最大程度被重用并行开发可视化测试 处理组件的边界情况 root−−通过root -- 通过root−…...

    2024/4/21 13:31:01

最新文章

  1. PHP定时任务框架taskPHP3.0学习记录7宝塔面板手动可以执行自动无法执行问题排查及解决方案(sh脚本、删除超过特定天数的日志文件、kill -9)

    PHP定时任务框架taskPHP3.0学习记录 PHP定时任务框架taskPHP3.0学习记录1&#xff08;TaskPHP、执行任务类的实操代码实例&#xff09;PHP定时任务框架taskPHP3.0学习记录2&#xff08;环境要求、配置Redis、crontab执行时间语法、命令操作以及Screen全屏窗口管理器&#xff0…...

    2024/5/2 5:02:27
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【JavaScript】如何在npm中切换源以及使用指定源安装依赖

    忘不掉的是什么我也不知道 想不起当年模样 看也看不到 去也去不了的地方 也许那老街的腔调是属于我的忧伤 嘴角那点微笑越来越勉强 忘不掉的是什么我也不知道 放不下熟悉片段 回头望一眼 已经很多年的时间 透过手指间看着天 我又回到那老街 靠在你们身边渐行渐远 …...

    2024/4/29 11:15:47
  4. 动态规划刷题(算法竞赛、蓝桥杯)--饥饿的奶牛(线性DP)

    1、题目链接&#xff1a;饥饿的奶牛 - 洛谷 #include <bits/stdc.h> using namespace std; const int N3000010; vector<int> a[N];//可变数组vector存区间 int n,mx,f[N]; int main(){scanf("%d",&n);for(int i1;i<n;i){int x,y;scanf("%…...

    2024/5/1 13:50:31
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57