一、新建maven项目

导入所需的pom依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lxy</groupId><artifactId>lxy_SSH</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>lxy_SSH Maven Webapp</name><url>http://maven.apache.org</url><properties><hibernate.version>5.2.12.Final</hibernate.version><mysql.version>8.0.19</mysql.version><spring.version>5.0.1.RELEASE</spring.version><struts2.version>2.5.13</struts2.version><slf4j.version>1.7.7</slf4j.version><log4j2.version>2.9.1</log4j2.version><disruptor.version>3.2.0</disruptor.version><junit.version>4.12</junit.version><javax.servlet.version>4.0.0</javax.servlet.version><jstl.version>1.2</jstl.version><standard.version>1.1.2</standard.version><tomcat-jsp-api.version>8.0.47</tomcat-jsp-api.version></properties><dependencies><!-- 1、导入hibernate依赖 --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>${hibernate.version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-c3p0</artifactId><version>${hibernate.version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-ehcache</artifactId><version>${hibernate.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- 2、导入spring依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><!-- 3、导入struts2依赖 --><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>${struts2.version}</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-spring-plugin</artifactId><version>${struts2.version}</version></dependency><!-- 4、导入日志系统依赖 --><!-- log配置:Log4j2 + Slf4j --><!-- slf4j核心包 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${slf4j.version}</version><scope>runtime</scope></dependency><!--用于与slf4j保持桥接 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>${log4j2.version}</version></dependency><!--核心log4j2jar包 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>${log4j2.version}</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>${log4j2.version}</version></dependency><!--web工程需要包含log4j-web,非web工程不需要 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId><version>${log4j2.version}</version><scope>runtime</scope></dependency><!--需要使用log4j2的AsyncLogger需要包含disruptor --><dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>${disruptor.version}</version></dependency><!-- 5、other --><!-- 5.1、junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><!-- 5.2、servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${javax.servlet.version}</version><scope>provided</scope></dependency><!-- 5.3、jstl、standard --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>${standard.version}</version></dependency><!-- 5.4、tomcat-jsp-api --><dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-jsp-api</artifactId><version>${tomcat-jsp-api.version}</version></dependency></dependencies><build><finalName>lxy_SSH</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.7.0</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build>
</project>

二、几大框架的配置文件

1、导入ehcache

ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"updateCheck="false"><!--磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于Windows系统的虚拟内存--><!--path:指定在硬盘上存储对象的路径--><!--java.io.tmpdir 是默认的临时文件路径。 可以通过如下方式打印出具体的文件路径 System.out.println(System.getProperty("java.io.tmpdir"));--><diskStore path="java.io.tmpdir"/><!--defaultCache:默认的管理策略--><!--eternal:设定缓存的elements是否永远不过期。如果为true,则缓存的数据始终有效,如果为false那么还要根据timeToIdleSeconds,timeToLiveSeconds判断--><!--maxElementsInMemory:在内存中缓存的element的最大数目--><!--overflowToDisk:如果内存中数据超过内存限制,是否要缓存到磁盘上--><!--diskPersistent:是否在磁盘上持久化。指重启jvm后,数据是否有效。默认为false--><!--timeToIdleSeconds:对象空闲时间(单位:秒),指对象在多长时间没有被访问就会失效。只对eternal为false的有效。默认值0,表示一直可以访问--><!--timeToLiveSeconds:对象存活时间(单位:秒),指对象从创建到失效所需要的时间。只对eternal为false的有效。默认值0,表示一直可以访问--><!--memoryStoreEvictionPolicy:缓存的3 种清空策略--><!--FIFO:first in first out (先进先出)--><!--LFU:Less Frequently Used (最少使用).意思是一直以来最少被使用的。缓存的元素有一个hit 属性,hit 值最小的将会被清出缓存--><!--LRU:Least Recently Used(最近最少使用). (ehcache 默认值).缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存--><defaultCache eternal="false" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false"timeToIdleSeconds="0" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU"/><!--name: Cache的名称,必须是唯一的(ehcache会把这个cache放到HashMap里)-->
<!--     <cache name="stuCache" eternal="false" maxElementsInMemory="100" -->
<!--            overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0" -->
<!--            timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU"/> -->
</ehcache>

2、导入日志框架log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- status : 指定log4j本身的打印日志的级别.ALL< Trace < DEBUG < INFO < WARN < ERROR < FATAL < OFF。 monitorInterval : 用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s. -->
<Configuration status="WARN" monitorInterval="30"><Properties><!-- 配置日志文件输出目录 ${sys:user.home} --><Property name="LOG_HOME">/root/workspace/lucenedemo/logs</Property><property name="ERROR_LOG_FILE_NAME">/root/workspace/lucenedemo/logs/error</property><property name="WARN_LOG_FILE_NAME">/root/workspace/lucenedemo/logs/warn</property><property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%n</property></Properties><Appenders><!--这个输出控制台的配置 --><Console name="Console" target="SYSTEM_OUT"><!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="trace" onMatch="ACCEPT"onMismatch="DENY" /><!-- 输出日志的格式 --><!-- %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间 %p : 日志输出格式 %c : logger的名称 %m : 日志内容,即 logger.info("message") %n : 换行符 %C : Java类名 %L : 日志输出所在行数 %M : 日志输出所在方法名 hostName : 本地机器名 hostAddress : 本地ip地址 --><PatternLayout pattern="${PATTERN}" /></Console><!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 --><!--append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true --><File name="log" fileName="logs/test.log" append="false"><PatternLayoutpattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /></File><!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size, 则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --><RollingFile name="RollingFileInfo" fileName="${LOG_HOME}/info.log"filePattern="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="info" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /><Policies><!-- 基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。 modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am. --><!-- 关键点在于 filePattern后的日期格式,以及TimeBasedTriggeringPolicy的interval, 日期格式精确到哪一位,interval也精确到哪一个单位 --><!-- log4j2的按天分日志文件 : info-%d{yyyy-MM-dd}-%i.log --><TimeBasedTriggeringPolicy interval="1"modulate="true" /><!-- SizeBasedTriggeringPolicy:Policies子节点, 基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小. --><!-- <SizeBasedTriggeringPolicy size="2 kB" /> --></Policies></RollingFile><RollingFile name="RollingFileWarn" fileName="${WARN_LOG_FILE_NAME}/warn.log"filePattern="${WARN_LOG_FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="warn" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="2 kB" /></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --><DefaultRolloverStrategy max="20" /></RollingFile><RollingFile name="RollingFileError" fileName="${ERROR_LOG_FILE_NAME}/error.log"filePattern="${ERROR_LOG_FILE_NAME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd-HH-mm}-%i.log"><ThresholdFilter level="error" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /><Policies><!-- log4j2的按分钟 分日志文件 : warn-%d{yyyy-MM-dd-HH-mm}-%i.log --><TimeBasedTriggeringPolicy interval="1"modulate="true" /><!-- <SizeBasedTriggeringPolicy size="10 MB" /> --></Policies></RollingFile></Appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 --><Loggers><!--过滤掉spring和mybatis的一些无用的DEBUG信息 --><logger name="org.springframework" level="INFO"></logger><logger name="org.mybatis" level="INFO"></logger><!-- 第三方日志系统 --><logger name="org.springframework" level="ERROR" /><logger name="org.hibernate" level="ERROR" /><logger name="org.apache.struts2" level="ERROR" /><logger name="com.opensymphony.xwork2" level="ERROR" /><logger name="org.jboss" level="ERROR" /><!-- 配置日志的根节点 --><root level="all"><appender-ref ref="Console" /><appender-ref ref="RollingFileInfo" /><appender-ref ref="RollingFileWarn" /><appender-ref ref="RollingFileError" /></root></Loggers></Configuration>

3、spring-conte.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"><!-- 配置与hibernate整合相关的JavaBean --><import resource="spring-hibernate.xml" /><!-- 关于书籍管理相关的JavaBean --><import resource="spring-book.xml" />
</beans>

4、注册数据库连接文件db.properties

db.username=root
db.password=123456
db.driverClass=com.mysql.cj.jdbc.Driver
db.jdbcUrl=jdbc:mysql://127.0.0.1:3306/mybatis_ssm?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
db.initialPoolSize=10
db.maxPoolSize=20
db.minPoolSize=5
db.maxIdleTime=60
db.acquireIncrement=5
db.maxStatements=0
db.idleConnectionTestPeriod=60
db.acquireRetryAttempts=30
db.breakAfterAcquireFailure=true
db.testConnectionOnCheckout=false

5、spring与hibernate整合文件:spring-hibernate.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"><!-- 1、注册jdbc相关的配置文件 --><context:property-placeholder location="classpath:db.properties" /><!-- 2、配置数据库连接池C3P0 --><!-- 注册数据库连接文件db.properties -->
<!--     <context:property-placeholder location="classpath:db.properties" /> --><!-- 配置c3p0连接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="user" value="${db.username}"></property><property name="password" value="${db.password}"></property><property name="driverClass" value="${db.driverClass}"></property><property name="jdbcUrl" value="${db.jdbcUrl}"></property><!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 --><property name="initialPoolSize" value="${db.initialPoolSize}"></property><!--连接池中保留的最大连接数。Default: 15 --><property name="maxPoolSize" value="${db.maxPoolSize}"></property><!--连接池中保留的最小连接数。 --><property name="minPoolSize" value="${db.minPoolSize}" /><!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --><property name="maxIdleTime" value="${db.maxIdleTime}" /><!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --><property name="acquireIncrement" value="${db.acquireIncrement}" /><!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements 属于单个connection而不是整个连接池。 所以设置这个参数需要考虑到多方面的因素。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 --><property name="maxStatements" value="${db.maxStatements}" /><!--每60秒检查所有连接池中的空闲连接。Default: 0 --><property name="idleConnectionTestPeriod" value="${db.idleConnectionTestPeriod}" /><!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --><property name="acquireRetryAttempts" value="${db.acquireRetryAttempts}" /><!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 保留,并在下次调用getConnection()的时候继续尝试获取连接。 如果设为true,那么在尝试 获取连接失败后该数据源将申明已断开并永久关闭。Default: false --><property name="breakAfterAcquireFailure" value="${db.breakAfterAcquireFailure}" /><!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的 时候都将校验其有效性。建议使用idleConnectionTestPeriod 或automaticTestTable 等方法来提升连接测试的性能。Default: false --><property name="testConnectionOnCheckout" value="${db.breakAfterAcquireFailure}" /></bean><!-- 3、配置sessionfactory相关信息 --><bean id="sessionFactory"class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><!-- 数据源 --><property name="dataSource"><ref bean="dataSource" /></property><!-- hibernate相关属性 --><property name="hibernateProperties"><props><prop key="dialect">org.hibernate.dialect.MySQLDialect</prop><!--spring与Hibernate集成无法显示sql语句问题,请见集成后hibernate无法显示sql语句.txt --><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop></props></property><!-- 实体映射文件 --><property name="mappingResources"><list><value>com/lxy/book/entity/Book.hbm.xml</value></list></property></bean><!-- 4、配置事务 --><!--声明式事务配置开始 --><!-- 静态代理:一个代理对象->一个目标对象BookProxy(BookBizImpl+myMethodBeforeAdvice)->bookBizOrderProxy(OrderBizImpl+myMethodBeforeAdvice2)->    OrderBiz动态代理:一个代理对象->多个目标对象--><!--1) 开启自动代理 --><aop:aspectj-autoproxy /><!--2) 事务管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!--3) 定义事务特性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="add*" propagation="REQUIRED" /><tx:method name="save*" propagation="REQUIRED" /><tx:method name="insert*" propagation="REQUIRED" /><tx:method name="edit*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="del*" propagation="REQUIRED" /><tx:method name="remove*" propagation="REQUIRED" /><tx:method name="load*" propagation="REQUIRED" read-only="true" /><tx:method name="list*" propagation="REQUIRED" read-only="true" /><tx:method name="select*" propagation="REQUIRED" read-only="true" /><tx:method name="query*" propagation="REQUIRED" read-only="true" /><tx:method name="do*" propagation="REQUIRED" /></tx:attributes></tx:advice><!--4) 定义切入点 --><aop:config><!-- pointcut属性用来定义一个切入点,分成四个部分理解 [* ][*..][*Biz][.*(..)] --><!-- A: 返回类型,*表示返回类型不限 --><!-- B: 包名,*..表示包名不限 --><!-- C: 类或接口名,*Biz表示类或接口必须以Biz结尾 --><!-- D: 方法名和参数,*(..)表示方法名不限,参数类型和个数不限 --><aop:advisor advice-ref="txAdvice" pointcut="execution(* *..*Biz.*(..))" /></aop:config><!-- 声明式事务配置结束 --><!-- 5、配置HibernateTemplate 相当于BaseDao--><bean class="org.springframework.orm.hibernate5.HibernateTemplate" id="hibernateTemplate"><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 6、分模块开发(只配置base模块) --><bean class="com.lxy.base.entity.BaseEntity" abstract="true" id="baseEntity"></bean><bean class="com.lxy.base.dao.BaseDao" abstract="true" id="baseDao" ><property name="hibernateTemplate" ref="hibernateTemplate"></property></bean><bean class="com.lxy.base.biz.BaseBiz" abstract="true" id="baseBiz"></bean><bean class="com.lxy.base.web.BaseAction" abstract="true" id="baseAction"></bean>
</beans>

6、Struts配置文件Struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd">
<struts><include file="struts-default.xml"></include><include file="struts-base.xml"></include><include file="struts-sy.xml"></include>
</struts>

7、Struts的基础板块配置:Struts-base.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd">
<struts><constant name="struts.i18n.encoding" value="UTF-8" /><constant name="struts.devMode" value="true" /><constant name="struts.configuration.xml.reload" value="true" /><constant name="struts.i18n.reload" value="true" /><constant name="struts.enable.DynamicMethodInvocation" value="true" /><package name="base" extends="struts-default" abstract="true"><global-allowed-methods>regex:.*</global-allowed-methods></package>
</struts>

8、具体模块的某个功能:Struts-sy.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd">
<struts><package name="sy" extends="base" namespace="/sy"><action name="bookAction_*" class="bookAction" method="{1}"><result name="toAdd">/add.jsp</result><result name="add">/index.jsp</result></action></package>
</struts>

9、web.xml配置

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><display-name>Archetype Created Web Application</display-name><!-- 1、整合spring --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-context.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 2、整合struts2 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern></filter-mapping><!-- 3、添加过滤器 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>

二、演示所需的类

1、基础板块的类BaseEntity

package com.lxy.base.entity;import java.io.Serializable;public class BaseEntity implements Serializable{private static final long serialVersionUID = -5475556860252527343L;}

2、分页pageBean

package com.lxy.base.util;import java.util.HashMap;
import java.util.Map;import javax.servlet.http.HttpServletRequest;/*** 分页工具�?**/
public class PageBean {private int page = 1;// 页码private int rows = 3;// 页大�?private int total = 0;// 总记录数private boolean pagination = true;// 是否分页private String url; //保存上一次请求的URLprivate Map<String,String[]> paramMap = new HashMap<>();// 保存上一次请求的参数/*** 初始化pagebean的,保存上一次请求的重要参数* @param req*/public void setRequest(HttpServletRequest req) {
//        1.1    �?要保存上�?次请求的URLthis.setUrl(req.getRequestURL().toString());
//        1.2    �?要保存上�?次请求的参数    bname、pricethis.setParamMap(req.getParameterMap());
//        1.3    �?要保存上�?次请求的分页设置    paginationthis.setPagination(req.getParameter("pagination"));
//        1.4    �?要保存上�?次请求的展示条目�?this.setRows(req.getParameter("rows"));
//        1.5  初始化请求的页码    pagethis.setPage(req.getParameter("page"));}public void setPage(String page) {if(StringUtils.isNotBlank(page))this.setPage(Integer.valueOf(page));}public void setRows(String rows) {if(StringUtils.isNotBlank(rows))this.setRows(Integer.valueOf(rows));}public void setPagination(String pagination) {
//        只有在前台jsp填写了pagination=false,才代表不分�?if(StringUtils.isNotBlank(pagination))this.setPagination(!"false".equals(pagination));}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public Map<String, String[]> getParamMap() {return paramMap;}public void setParamMap(Map<String, String[]> paramMap) {this.paramMap = paramMap;}public PageBean() {super();}public int getPage() {return page;}public void setPage(int page) {this.page = page;}public int getRows() {return rows;}public void setRows(int rows) {this.rows = rows;}public int getTotal() {return total;}public void setTotal(int total) {this.total = total;}public void setTotal(String total) {this.total = Integer.parseInt(total);}public boolean isPagination() {return pagination;}public void setPagination(boolean pagination) {this.pagination = pagination;}/*** 获得起始记录的下�?* * @return*/public int getStartIndex() {return (this.page - 1) * this.rows;}/*** �?大页* @return*/public int maxPage() {
//        total % rows == 0 ? total / rows : total / rows +1return this.total % this.rows == 0 ? this.total / this.rows : this.total / this.rows + 1;}/*** 下一�?* @return*/public int nextPage() {
//        如果当前页小于最大页,那就下�?页为当前�?+1;如果不小于,说明当前页就是�?大页,那就无�?+1return this.page < this.maxPage() ? this.page + 1 : this.page;}/*** 上一�?* @return*/public int previousPage() {return this.page > 1 ? this.page - 1 : this.page;}@Overridepublic String toString() {return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";}}

3、stringUtils

package com.lxy.base.util;public class StringUtils {// 私有的构造方法,保护此类不能在外部实例化private StringUtils() {}/*** 如果字符串等于null或去空格后等�?"",则返回true,否则返回false* * @param s* @return*/public static boolean isBlank(String s) {boolean b = false;if (null == s || s.trim().equals("")) {b = true;}return b;}/*** 如果字符串不等于null或去空格后不等于"",则返回true,否则返回false* * @param s* @return*/public static boolean isNotBlank(String s) {return !isBlank(s);}}

4、BaseDao

package com.lxy.base.dao;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;import org.hibernate.Session;
import org.hibernate.query.Query;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import com.lxy.base.util.PageBean;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;public class BaseDao extends HibernateDaoSupport implements Serializable{private static final long serialVersionUID = 5427369434249665701L;public void setParam(Query query,Map<String, Object> map) {if(map == null || map.size() < 1) {return;}Object value = null;for(Map.Entry<String, Object> entry:map.entrySet()) {value = entry.getValue();if(value instanceof Collection) {query.setParameterList(entry.getKey(), (Collection) value);}else if(value instanceof Object[]) {query.setParameterList(entry.getKey(), (Object[]) value);}else {query.setParameter(entry.getKey(), value);}}}public String getCountHql(String hql) {int index = hql.toUpperCase().indexOf("FROM");return "select count(*) "+hql.substring(index);}/*** * @param hql    已经拼装好的* @param map* @param pageBean* @return*/public List executeQuery(Session session, String hql,Map<String, Object> map,PageBean pageBean) {if(pageBean !=null && pageBean.isPagination()) {String countHql = getCountHql(hql);Query countQuery = session.createQuery(countHql);this.setParam(countQuery, map);pageBean.setTotal(countQuery.getSingleResult().toString());Query query = session.createQuery(hql);this.setParam(query, map);query.setFirstResult(pageBean.getStartIndex());query.setMaxResults(pageBean.getRows());List list = query.list();return list;}else {Query query = session.createQuery(hql);this.setParam(query, map);List list = query.list();return list;}}}

5、定义接口BaseBiz

package com.lxy.base.biz;

public interface BaseBiz {

}

6、BaseAction

 

package com.lxy.base.web;import java.io.Serializable;import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;public class BaseAction implements ServletRequestAware, ServletResponseAware,Serializable{private static final long serialVersionUID = -7110462505161900879L;/*** 为了传值使用*/protected HttpServletResponse response;protected HttpServletRequest request;protected HttpSession session;protected ServletContext application;/*** 为了配置跳转页面所用*/protected final static String SUCCESS = "success";protected final static String FAIL = "fail";protected final static String LIST = "list";protected final static String ADD = "add";protected final static String EDIT = "edit";protected final static String DETAIL = "detail";/*** 具体传值字段    后端向jsp页面传值所用字段*/protected Object result;protected Object msg;protected int code;public Object getResult() {return result;}public Object getMsg() {return msg;}public int getCode() {return code;}@Overridepublic void setServletResponse(HttpServletResponse arg0) {this.response = arg0;}@Overridepublic void setServletRequest(HttpServletRequest arg0) {this.request = arg0;this.session = arg0.getSession();this.application = arg0.getServletContext();}}

三、测试

将表描述成实体类,配置相关的映射文件

Book

package com.lxy.book.entity;import com.lxy.base.entity.BaseEntity;public class Book extends BaseEntity{private Integer bid;private String bname;private Float price;public Integer getBid() {return bid;}public void setBid(Integer bid) {this.bid = bid;}public String getBname() {return bname;}public void setBname(String bname) {this.bname = bname;}public Float getPrice() {return price;}public void setPrice(Float price) {this.price = price;}@Overridepublic String toString() {return "Book [bid=" + bid + ", bname=" + bname + ", price=" + price + "]";}}

2、Book.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping><class table="t_mvc_book" name="com.lxy.book.entity.Book"><id name="bid" type="java.lang.Integer" column="bid"><generator class="increment"></generator></id><property name="bname" type="java.lang.String" column="bname"></property><property name="price" type="java.lang.Float" column="price"></property></class>
</hibernate-mapping>

3、bookDao

package com.lxy.book.dao;import java.util.List;import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate5.HibernateCallback;import com.lxy.base.dao.BaseDao;
import com.lxy.book.entity.Book;/*** 注意:*     1、一定要继承BaseDao(是为了获取到hibernateTemplete)*     2、方法命名有讲究(一定要符合声明式事务所定义的规则)*         若是不遵循规则,那么数据是不会提交到数据库*     3、hibernateTemplete模板在执行查询的时候比较特殊* @author Administrator**/
public class BookDao extends BaseDao {public int add(Book book) {return (int) getHibernateTemplate().save(book);}public void edit(Book book) {getHibernateTemplate().update(book);}public void del(Book book) {getHibernateTemplate().delete(book);}public List<Book> list(){return (List<Book>) getHibernateTemplate().execute(new HibernateCallback<List<Book>>() {@Overridepublic List<Book> doInHibernate(Session session) throws HibernateException {return session.createQuery("from Book").list();}});}
}

4、BookBiz

package com.lxy.book.biz;import java.util.List;import com.lxy.book.entity.Book;public interface BookBiz {public void add(Book book) ;public List<Book> list() ;}BookBizImpl :package com.lxy.book.biz.Imp1;import java.util.List;import com.lv.book.biz.BookBiz;
import com.lv.book.dao.BookDao;
import com.lv.book.entity.Book;public class BookBizImpl implements BookBiz{private BookDao bookDao;public BookDao getBookDao() {return bookDao;}public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}@Overridepublic void add(Book book) {bookDao.add(book);}@Overridepublic List<Book> list() {return bookDao.list();}}

5、BookAction

package com.lxy.book.web;import java.util.List;import com.lxy.base.web.BaseAction;
import com.lxy.book.biz.BookBiz;
import com.lxy.book.entity.Book;public class BookAction extends BaseAction {private Book book;public Book getBook() {return book;}public void setBook(Book book) {this.book = book;}private static final long serialVersionUID = 1L;private BookBiz bookBiz;public BookBiz getBookBiz() {return bookBiz;}public void setBookBiz(BookBiz bookBiz) {this.bookBiz = bookBiz;}public String add() {
//        http://localhost:8080/test_SSH/sy/bookAction_add.action?book.bid=131418&&book.bname=zs&&book.price=1this.bookBiz.add(book);return "success";}public String list() {
//        http://localhost:8080/test_SSH/sy/bookAction_list.actionList<Book> list = this.bookBiz.list();for (Book b : list) {System.out.println(b);}return "success";}}

6、Struts-sy.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd">
<struts><package name="sy" extends="base" namespace="/sy"><action name="bookAction_*" class="bookAction" method="{1}"><result name="toAdd">/add.jsp</result><result name="add">/index.jsp</result></action></package>
</struts>

7、Spring-book.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"><bean class="com.lxy.book.dao.BookDao" parent="baseDao" id="bookDao"></bean><bean class="com.lxy.book.biz.Imp1.BookBizImpl" parent="baseBiz"id="bookBiz"><property name="bookDao" ref="bookDao"></property></bean><bean class="com.lxy.book.web.BookAction" id="bookAction"parent="baseAction"><property name="bookBiz" ref="bookBiz"></property></bean>
</beans>

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

相关文章

  1. 全新发布,Windows 11 正式版正式推送

    文章整理自快科技 如此前预告&#xff0c;微软官方宣布&#xff0c;Windows 11正式版于美国时间&#xff08;10月5日&#xff09;全面上市。 微软表示&#xff0c;10月5日标志着Windows历史上一个激动人心的里程碑。随着世界各地各个时区10月5日这一天到来&#xff0c;符合条件…...

    2024/5/7 1:57:49
  2. java 进制转换 十进制转二,八,十六进制

    十进制转其他进制 使用java API实现 十进制转二进制&#xff1a;Integer.toBinaryString(); 十进制转八进制&#xff1a;Integer.toOctalString(); 十进制转十六进制&#xff1a;Integer.tohexString(); class BaseSystemDemo1 {public static void main(String[] args) {//十…...

    2024/5/2 22:17:40
  3. [VS]如何把一个工程输出为库被另一个工程调用

    1、创建第一个工程&#xff0c;命名为hello&#xff0c;工程内编写hello.h和hello.cpp两个文件&#xff0c;.cpp文件为函数主体&#xff0c;输出"Hello "&#xff0c;.h文件作为头文件进行函数的声明 hello.cpp #include <stdio.h> #include "hello.h&q…...

    2024/5/6 7:45:16
  4. manjaro安装Microsoft Edge浏览器

    sudo pacman -S yay base-devel yay -S microsoft-edge-dev-bin...

    2024/5/2 22:17:32
  5. LeetCode-每日一题(10月29号)

    路径交叉题 题目&#xff1a; X-Y 平面上的点 (0,0) 开始&#xff0c;先向北移动 distance[0] 米&#xff0c;然后向西移动 distance[1] 米&#xff0c;向南移动 distance[2] 米&#xff0c;向东移动 distance[3] 米&#xff0c;持续移动。也就是说&#xff0c;每次移动后你的方…...

    2024/5/7 0:50:46
  6. ​【预测模型】基于粒子群算法改进SVM实现多输入多输出预测Matlab代码

    ​1 简介 支持向量机 (Support Vector Machines, SVM) 是一种应用广泛的机器学习方法, 具有理论知识清晰完备,适应性和泛化能力良好的优点, 核心思想是在特征空间中寻找到一个最优超平面将两类样本尽可能大的分开, 能够较好的处理小样本、非线性和克服“维数灾难”问题, 并且表…...

    2024/5/2 22:17:23
  7. 实验三 Linux文件管理

    文章目录一、实验目的二、实验要求三、实验内容&#xff08;要求详细列出步骤截图&#xff09;一、实验目的 掌握文件管理的基本内容和原理&#xff1b;了解文件和目录操作的系统调用用户接口&#xff1b; 二、实验要求 熟悉Linux文件目录管理各种功能命令。 三、实验内容&am…...

    2024/5/6 21:33:10
  8. DR-CAN的工程数学基础学习笔记(6)复变函数与欧拉公式

    1.当x为复数 复数时sinx2以及有关复数的推导 2.关于sinx2的推导 启示:数学基本功很重要...

    2024/5/2 22:17:16
  9. ubuntu安装anaconda后,终端输入conda,出现未找到命令

    Ctrl Alt t 打开终端 输入&#xff1a; sudo gedit ~/.bashrc在这上面的最后一行写上 export PATH~/anaconda3/bin:$PATH 点击上面的保存 关闭重启终端 成功...

    2024/5/2 19:30:35
  10. kotlin协程async await的异常踩坑以及异常处理的正确姿势

    使用Kotlin来做一些异步操作相信大家都非常熟悉了&#xff0c;特别是结合Jetpack的一些组件&#xff0c;使得我们在Android开发中写异步任务非常的方便。 但是&#xff0c;关于在使用协程的时候&#xff0c;个人觉得异常处理这一块是相对来讲是需要花时间去了解的地方&#xf…...

    2024/5/4 5:14:29
  11. 【jetbrain】idea\clion\pycharm激活后无法正常启动软件的处理办法

    闪退原因——安装了外部插件 经过一番排查&#xff0c;发现问题的主要诱因是我之前安装了Eval Reset这个激活插件&#xff0c;这东西好用是真的好用&#xff08;可以自动重置试用期&#xff0c;从而达到无限激活的效果&#xff09;&#xff0c;但是也不稳定&#xff0c;这两天不…...

    2024/5/5 18:25:28
  12. 购物车计算器

    <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><!-- 引用vue.js --><script type"text/javascript" src"vue.js"></script><style type"text/css">…...

    2024/5/2 22:17:03
  13. Android开发之获取网络类型(WIFI、2G、3G、4G)和运营商名称

    在Android开发中,常常使用到网络,可能需要针对不同的网络(WIFI或者流量),需要做不同的处理,那么怎么获取当前网络呢?为此写了个工具类,以后需要使用,直接拿来用就行(就喜欢拿来主义,哈哈)。package com.wangguifa.phonestate;import android.content.Context; impo…...

    2024/5/6 16:01:18
  14. XML基础(一)(只管能看懂XML文件)

    XML基础&#xff08;一&#xff09; 1、概述 1.1 定义&#xff08;xml是个啥玩意儿&#xff1f;&#xff09; XML&#xff08;E ** X** t ensible M arkup L anguage&#xff09;俗称差妹儿或者叫额克死妹儿&#xff0c;专业称之为&#xff1a; 可拓展标记语言。 &#xff0…...

    2024/5/2 22:16:55
  15. socket 端口和地址复用

    参考&#xff1a; https://blog.csdn.net/weibo1230123/article/details/79978745 https://blog.csdn.net/weixin_42157432/article/details/115560824 在linux socket网络编程中&#xff0c;大规模并发TCP或UDP连接时&#xff0c;经常会用到端口复用&#xff1a; int opt …...

    2024/5/4 10:13:59
  16. 0基础怎么画出好看的水彩画美术集水彩教程入门级教程

    水彩画是广为普及的一个画种&#xff0c;作为独立的绘画形式&#xff0c;其形成与发展经过了一定的历史过程&#xff0c;世界上第一幅水彩画是出自德国画家丢勒之手&#xff0c;但成为独立画种并兴盛、发展是在英国&#xff0c;至今已有三百年的历史了。 画水彩画方法比较多&am…...

    2024/5/4 2:07:18
  17. AVM补充

    文章目录一核函数多项式核函数RBF核函数二.超参数&#xff08;\gamma γ&#xff09;三.总结四.参考链接一核函数 在现实当中&#xff0c;大部分时候数据并不是线性可分的&#xff0c;这个时候满足这样条件的超平面就根本不存在。 核函数特点及优点&#xff1a; 不需要每次都…...

    2024/5/2 22:16:43
  18. 页式内存管理

    内存管理就是要将各种媒介组建成为一体&#xff0c;形成一个巨无霸似的虚拟存储系统。 基址极限管理模式的问题 到目前为止&#xff0c;已经讲述了几种基本的内存管理方法&#xff0c;分别是固定加载地址的内存管理、固定分区的内存管理、非固定分区的内存管理和交换内存管理…...

    2024/5/4 10:49:16
  19. Linux 命令解析器

    文章目录命令解析器概念命令解析器的作用&#xff1a;常用的命令解析器&#xff1a;shell -- Bourne Shellbash -- Bourne Again Shell查看当前系统所使用的shell查看当前系统下有哪些shell命令解析器概念 首先我们要知道&#xff1a;什么是命令解析器&#xff1f; shell就是…...

    2024/5/2 22:16:36
  20. C# 调用系统“API“设置图片为“桌面壁纸“

    前言&#xff1a; 这次主要就是写一个音乐软件的 "桌面壁纸海报"但是C#并没有直接的函数设置图片为壁纸&#xff0c;但是可以调用Windown系统的API设置壁纸&#xff0c;也可以配合爬虫等自己写一个”壁纸软件“ 什么是系统API(简单介绍)&#xff1a; API就是Windown…...

    2024/5/3 22:47:11

最新文章

  1. 免费开源的tiktok加速软件

    背景 tiktok是国内企业出海做的比较成功的案例&#xff0c;可以简单的理解为海外版的抖音&#xff0c;关于tiktok的运营和变现不是我们擅长的领域&#xff0c;这里就不多说了&#xff0c;这篇文章主要着重在解决tiktok的网络问题&#xff0c;介绍如何用开源的软件自己搭建一套…...

    2024/5/7 10:24:40
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/6 9:38:23
  3. 布隆过滤器是如何避免缓存穿透的?

    布隆过滤器&#xff08;Bloom filter&#xff09;是一种空间效率极高的概率型数据结构&#xff0c;用于判断一个元素是否在一个集合中。它的原理是当一个元素被加入集合时&#xff0c;通过几个不同的Hash函数将元素映射成一个位数组中的多个位置&#xff0c;再次查询时如果位数…...

    2024/5/4 6:23:37
  4. 整理的微信小程序日历(单选/多选/筛选)

    一、日历横向多选&#xff0c;支持单日、双日、三日、工作日等选择 效果图 wxml文件 <view class"calendar"><view class"section"><view class"title flex-box"><button bindtap"past">上一页</button&…...

    2024/5/5 8:50:30
  5. 【Redis】安装Redis后报ERR Client sent AUTH, but no password is set

    一、问题描述 安装Redis后使用auth验证是否安装成功&#xff08;或者其它应用访问redis时报错&#xff09;&#xff0c;报ERR Client sent AUTH, but no password is set 127.0.0.1:6379> auth 123456 (error) ERR Client sent AUTH, but no password is set二、问题解决 …...

    2024/5/6 8:12:38
  6. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/7 5:50:09
  7. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/5/6 9:21:00
  10. 【外汇早评】日本央行会议纪要不改日元强势

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

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

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

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

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

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

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

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

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

    2022/11/19 21:17:18
  27. 错误使用 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,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
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:16:58
  45. 如何在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