[手把手教程][JavaWeb]SSM框架验证、修复和实例
[手把手教程][JavaWeb]SSM框架验证、修复和实例
【可能本篇文章篇幅有点长,但是内容都非常详细,满满的干货知识等着你,文末有福利记得签收哦】
java学习交流qun:925895158,只为爱学习java的小伙伴创建一个小交流圈
工具
- IDE为idea15
- JDK环境为1.8
- maven版本为maven3
- Mysql版本为5.5.27
- Tomcat版本为7.0.52
本期目标
- 项目框架介绍和冲突解决。
- 实例Service和Dao。项目框架测试。
- 登录、注册业务的分析、创建和演示。
冲突解决
为什么我把冲突解决放在第一位?
因为在冲突解决后,我们可以进入测试阶段,同时在解决冲突的时候,我们会一点点的体会到SSM项目框架中各个框架之间是怎么协同工作的,也就可以完成项目介绍。
重要的是,在实际生活中,我们去公司上班,一般也是先解决项目框架冲突问题。
打开项目后,随意选择一个Spring的配置文件,会弹出如下界面:
ssm框架检测第一步
我们点击图中右上角圈出来部分,会弹出如下界面:
ssm框架检测第二步
这里我们什么都不需要做,直接点击OK。
上面两步是为了告诉Idea我们的Spring配置文件在哪。类似单一Spring配置文件的ApplicationContext.xml一样,我们只是将Spring根据模块分发而已。
在Tomcat中运行本项目,运行结果应该是在浏览器中显示Hello World界面。
配置Tomcat
配置项目的Tomcat启动设置。
参考连接:点击进入
在web浏览器中输入:localhost:8080/druid ,查看druid是否配置成功。
ssm框架检测第三步
如上面的图中,我们可以看到我们的druid并没有把JDBC驱动列出来。这说明我们的项目的JDBC驱动要么没有设置,要么是数据库驱动的配置文件没做好。
随意输入一个localhost:8080/下的地址,至此我们要展示错误404页面。并且把Tomcat不友好的404页面替换。
替换思路:错误404这种常出现的页面,我们可以设置为静态资源,以加快网页访问。
注意:我们需要先把WEB-IN\Fweb.xml下面的mvc-dispatcher更改为全局配置。
<servlet-mapping><servlet-name>mvc-dispatcher</servlet-name><!-- 默认匹配所有的请求 --><!-- 我们默认配置这个是为了让我们的Spring框架接管Servelt,实现Spring控制所有站点请求 --><url-pattern>/</url-pattern><!--<url-pattern>/css/*</url-pattern>--><!--<url-pattern>/images/*</url-pattern>--><!--<url-pattern>/fonts/*</url-pattern>--> </servlet-mapping>
配置了web.xml后,我们重启重启应用,输入一个错误的地址(跳转到404页面),会发现提示错误信息,主要报错如下
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in file [项目所在的物理地址\WEB-INF\classes\spring\spring-dao.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/slf4j/Logger//上面这个错误主要是提示我们:NoClassDefFoundError: org/slf4j/这个类找不到。解决办法:偷懒的把log4j2从maven配置文件中删除了,开启了logback,在maven的pom.xml中:<!-- 1.日志 --><!--<!– 实现slf4j接口并整合 –>--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.1</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${org.slf4j.version}</version></dependency><!--log4j2支持--><!--<dependency>--><!--<groupId>org.apache.logging.log4j</groupId>--><!--<artifactId>log4j-core</artifactId>--><!--<version>${org.apache.logging.log4j.version}</version>--><!--</dependency>--><!--<dependency>--><!--<groupId>org.apache.logging.log4j</groupId>--><!--<artifactId>log4j-api</artifactId>--><!--<version>${org.apache.logging.log4j.version}</version>--><!--</dependency>-->
接着,我们重启Tomcat,等项目部署完成后,我们再次打开,再次输入错误地址,我们发现还是在报错,信息如下:
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in file [项目物理地址\WEB-INF\classes\spring\spring-dao.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [org.springframework.core.io.Resource[]] for property 'mapperLocations'; nested exception is java.lang.IllegalArgumentException: Could not resolve resource location pattern [classpath:mapper/*.xml]: class path resource [mapper/] cannot be resolved to URL because it does not exist根据上面的提示信息,我们可以看到提示的是mapper下面没有文件,那么我们就给他制定一个空的配置文件(BaseDao.xml),内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace是指明Mybatis扫描的目录,mapper是我们的Dao层的映射目录 --><mapper namespace="cn.acheng1314.dao"></mapper>
同样的,我们再次重启服务器,并且输入错误的地址,现在能正常显示错误404的页面了,但是页面太过Low了,我们得重写一下web.xml的配置。404页面如下所示:
ssm框架检测404模版页面
解决思路:错误404的页面是常用页面之一,所以我们在项目的资源目录(webapp)下创建一个static目录,专门用来存放静态资源,如js、css、错误提示页面、登录、注册页面等等。
通过网上查阅资料,我们看到大部分人都是把404页面提示信息提交给Servelt自己管理,我们也依样画瓢,在web.xml中配置,如下: <error-page><error-code>404</error-code><Location>/static/view/404.html</Location> </error-page>
同时,我们需要给Spring写一个web的配置,控制哪些资源被拦截。spring-web.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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><!-- 配置SpringMVC --><!-- 1.开启SpringMVC注解模式 --><!-- 简化配置:(1)自动注册DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter(2)提供一些列:数据绑定,数字和日期的format @NumberFormat, @DateTimeFormat, xml,json默认读写支持--><mvc:annotation-driven/><!-- 2.静态资源默认servlet配置(1)加入对静态资源的处理:js,gif,png(2)允许使用"/"做整体映射--><mvc:resources mapping="/css/**" location="/static/css/" /><mvc:resources mapping="/images/**" location="/static/images/" /><mvc:resources mapping="/view/**" location="/static/view/" /><mvc:default-servlet-handler/><!-- 3.配置jsp 显示ViewResolver --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!-- 4.扫描web相关的bean配置 --><context:component-scan base-package="cn.acheng1314.mvc"><!-- 制定扫包规则 ,只扫描使用@Controller注解的JAVA类 --><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan></beans>
以上文件配置好后,我们重启服务器,并输入错误地址,现在我们插入的404页面正常显示了。
通过上面的资料,我们可以大胆整理下web请求的思路:
用户发起请求→DNS解析发现服务器→建立链接发送请求→WEB服务器分发给应用服务器→MVC层框架处理请求过程→返回数据给用户
而上面的SpringMvc作为框架层,我们也可以通过网上资料和我们目前的配置做出一些构想:
Tomact分发请求→Servelt收到请求→Spring接管Servelt→DispatcherServlet处理请求分发→根据Spring配置找到对应的控制器(Controller)处理业务→返回对应数据。
而下面有一张更加突出的图片说明了这一切:
SpringMVC详细运行流程图
总结:目前项目中的静态资源我们已经处理完毕,加入了一部分Web的静态资源,增加了Spring的web处理配置,修改了web.xml,log4j2替换为LogBack,Junit版本提升为4.12,加入了一个BaseMapper.xml。
web.xml文件如下:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1" metadata-complete="true"><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!-- 如果是用mvn命令生成的xml,需要修改servlet版本为3.1 --><!-- 配置DispatcherServlet --><servlet><display-name>SSM</display-name><servlet-name>mvc-dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置springMVC需要加载的配置文件spring-dao.xml,spring-service.xml,spring-web.xmlMybatis - > spring -> springmvc--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-*.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>mvc-dispatcher</servlet-name><!-- 默认匹配所有的请求 --><url-pattern>/</url-pattern><!--<url-pattern>/css/*</url-pattern>--><!--<url-pattern>/images/*</url-pattern>--><!--<url-pattern>/fonts/*</url-pattern>--></servlet-mapping><!-- spring框架提供的字符集过滤器 --><!-- spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><!-- force强制,促使 --><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--druid ==> WEB方式监控配置--><servlet><servlet-name>DruidStatView</servlet-name><servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class></servlet><servlet-mapping><servlet-name>DruidStatView</servlet-name><url-pattern>/druid/*</url-pattern></servlet-mapping><filter><filter-name>druidWebStatFilter</filter-name><filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class><init-param><param-name>exclusions</param-name><param-value>/public/*,*.js,*.css,/druid*,*.jsp,*.swf</param-value></init-param><init-param><param-name>principalSessionName</param-name><param-value>sessionInfo</param-value></init-param><init-param><param-name>profileEnable</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>druidWebStatFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><error-page><error-code>404</error-code><location>/static/view/404.html</location></error-page> </web-app>
BaseMapper.xml如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace指向我们的dao所在的地址 --> <mapper namespace="cn.acheng1314.dao"> </mapper>
其他的文件修改的信息都可以在上面看到就不再次贴出来了。
SSM框架实例--仓库管理系统--登录注册的功能分析
分析:
- 登录和注册,都是用户的行为,也是我们开发中常说的某个行为对应的业务。
- 注册用户,意味着添加用户,添加了用户后,我们才有登录功能的继续执行的可能。
- 用户登录,也是用户信息的查找和比对过程。一般来说用户先把信息提交给程序,然后程序按照流程执行后提交数据给服务器(这个流程中程序可能会产生一些业务逻辑的判断),服务器收到数据并进行数据对比,当用户信息存在且帐号和密码匹配才能登录成功,否则前面的任意条件不满足即为登录失败。
- 我们可以依靠单一的用户表来实现用户的登录数据获取和注册信息的添加。
功能大概分析完毕后,我们就可以考虑下如何实现这些功能。大概图示如下:
ssm框架经典三层分析
- 首先用户信息需要存储,我们需要数据库的支撑。
- 有了数据库的支援后,我们需要先测试用户信息的添加和查找。就是我们常说的Dao层。
- 当我们的Dao层拿到想要的数据,我们需要Service层将Dao层的操作作为服务提供给控制器,再由控制器提供给前台页面。
- 同样的用户需要获取某个数据,先是浏览器获取到用户请求→web层→Service层→Dao层,再接着重复上面的操作。
上面一张图用模型已经很好的说明了java web后端各层的关系,下面一张图是经典三层对照MVC的描述。
ssm框架经典三层分析对照Mvc
上面的图引用自互联网资料,下面的黑色字是我添加上去的。
上面图中,我们可以看到一部分MVC设计和图中标记的类似,但是这只是一种MVC模式的栗子。
关于更加详细的MVC,我们可以百度百科查看。
上面提到的东西,我们适可而止就行了,很多东西现在还不是深究的时候,我们要先懂一个事物的外在表现,才有进一步的探索,所以我们需要等缘分的到来。
SSM框架实例--仓库管理系统--注册、登录的功能模拟实现
按照前面我们的分析来讲,我们需要先考虑Dao层的实现,毕竟有了Dao层对数据的封装,才可以有后面的操作,所以后面我的栗子中,一切都是按照Dao→Service→Controller→View这样的一个步骤来实现。
- 用户注册功能的Dao层实现。
数据库基本操作为:增删改查。
我们根据数据库常规操作的类型,分别对其进行抽象,所以产生了Dao.java这个接口对象的基本模型。代码如下:
/*** 通过接口编程* @param <T> 泛型用于解耦,同时避免写重复代码*/ public interface Dao<T> {/*** 添加某个对象* @param t 待添加的对象* @return 返回受影响的行数*/int add(T t);/*** 删除某个对象,在企业开发中,我们一般不做物理删除,只是添加某个字段对其数据进行可用控制* @param t 待删除对象* @return 返回受影响的条数*/int del(T t);/*** 更新某个对象* @param t 待更新对象* @return 返回受影响的条数*/int update(T t);/*** 通过ID查找一个对象* @param Id 待查询的对象的ID* @return 返回该ID对应的对象*/T findOneById(Serializable Id);/*** 查找对象集合* @return 返回对象集合*/List<T> findAll(); }
实现用户的Dao层:
- 我们要针对用户写用户的Dao层,我们需要有一个用户对象的封装,直接在domain包下面创建User.java,代码如下:
/*** 创建数据库用户表:CREATE TABLE `user` (`login_id` varchar(20) NOT NULL COMMENT '登陆ID',`pwd` varchar(20) NOT NULL COMMENT '用户密码',`name` varchar(100) NOT NULL COMMENT '用户姓名',`age` int(3) NOT NULL COMMENT '用户年龄',`sex` varchar(3) NOT NULL COMMENT '性别',`duty` varchar(15) COMMENT '职务',`cell_number` varchar(15) COMMENT '手机号',`photo_url` varchar(75) COMMENT '头像地址',`used` boolean NOT NULL COMMENT '账号是否可用',PRIMARY KEY (`login_id`)) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='用户表';插入默认数据:INSERT INTO `user` (`login_id`,`pwd`,`name`,`age`,`sex`,`used`)VALUES('pc859107393','123456','阿程',20,'男',true),('pc228568859','123456','chengcheng',20,'女',true),('pangpang','123456','余下一整夜',25,'男',true),('111111','123456','手拉手系列教程',22,'女',true);*/public class User implements Serializable {private String name; //名字private String sex; //性别private String loginId; //登陆IDprivate String pwd; //密码private String duty; //职务private int age; //年龄private String cellNumber; //手机号private String photoUrl; //头像地址private boolean used = true; //是否可用,默认值是true···省略get、set和toString } //推荐大家把每个bean对应的数据库操作备注到上面。 //打开Navicat For Mysql,链接上数据库,创建对应的数据库,并运行上面的sql产生数据库表和初始记录。
- 当我们数据库创建完毕后,我们需要写一个接口对user表进行操作封装。我们在dao包下面创建UserDao接口,代码如下:
/*** 在传统的jdbc操作中,我们需要手动管理数据库连接的开关,数据库资源访问的开关等等* <br/>但是,我们这里采用了Mybatis和Druid这两个框架,那么我们可以完全不必理会数据库连接等等的控制,* <br/>我们只需要更加专注于业务实现的开发。*/ public interface UserDao extends Dao<User> {int add(User user);int del(User user);int update(User user);User findOneById(Serializable Id);List<User> findAll(); }
- 完成UserDao的封装后,传统的操作这一步需要自己手动实现UserDao的Impl,并实现对数据库的操作等等。而我们使用Mybatis后,UserDao的Impl在Mybatis的mapper文件夹中指定为xml,我们的Dao文件除了数据库操作的语句其他的都无需关注,那么剩下的数据库操作什么的我们都无需关心,毕竟Mybatis和druid都把其他的事情帮我们做了。UserDao.xml如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace指定我们的到具体的bean --> <mapper namespace="cn.acheng1314.dao.UserDao"><!--查找--><select id="findOneById" resultType="User" parameterType="String">SELECT*FROM`user`WHERElogin_id = #{userId}<select><!--增加语句--><insert id="add" parameterType="User">INSERT INTO`user`(`login_id`,`name`,`age`,`sex`,`duty`,`cell_number`,`photo_url`,`pwd`,`used`)VALUES(#{loginId},#{name},#{age},#{sex},#{duty},#{cellNumber},#{photoUrl},#{pwd},#{used})</insert><!-- 删除 --><update id="del" parameterType="User">UPDATE`user`SET`used`=FALSEWHERE`login_id`=#{loginId};</update><!-- 更新用户信息 --><update id="update" parameterType="User">UPDATE`user`SET`name`=#{name}, `age`=#{age}, `sex`=#{sex}, `duty`=#{duty}, `cell_number`=#{cellNumber}, `photo_url`=#{photoUrl}WHERE`login_id`=#{loginId};</update> </mapper>
- mapper下面的UserDao.xml已经完成,这就意味着我们的UserDao基本完成,那么我们应该来一次单元测试来看看效果如何。UserDaoTest.java如下:
@RunWith(SpringJUnit4ClassRunner.class) //spring的单元测试 @ContextConfiguration({"classpath:spring/spring-*.xml"}) //上下文配置 public class UserDaoTest {@Autowiredprivate UserDao userDao; //初始化Dao层,面向接口编程/*** 添加用户的单元测试,添加成功与否会有对应的提示。* 当然按照我这个配置一般会正确,如果说出错就需要你一步一步的看错误的提示代码了。* 添加同样的LoginId的用户会添加失败,因为在上面把LoginId作为了数据库表的主键。*/@Testpublic void testAdd() {User user = new User();user.setLoginId("pc147852369");user.setName("雨下一整夜");user.setPwd("123456");user.setSex("未知");int result = 0; //受影响的行数默认为0try {result = userDao.add(user);} catch (Exception e) {e.printStackTrace();System.out.println("添加用户失败");}if (result>0)System.out.println("添加用户成功");}/*** 查找用户测试,成功与否会有log输出*/@Testpublic void testFindOneId() throws Exception {User user = new User();user.setLoginId("pc147852369");User result = null; //受影响的行数默认为0try {result = userDao.findOneById(user.getLoginId());} catch (Exception e) {e.printStackTrace();System.out.println("查找用户失败");}if (null!=result)System.out.println("查找用户成功\n"+result.toString());}@Testpublic void testDel() {User user = new User();user.setLoginId("pc147852369");int result = 0; //受影响的行数默认为0try {result = userDao.del(user);} catch (Exception e) {e.printStackTrace();System.out.println("删除用户失败");}if (result>0)System.out.println("删除用户成功");}@Testpublic void testUpdate() {User user = new User();user.setLoginId("pc147852369");user.setName("手把手教程");user.setPwd("123456");user.setSex("男");int result = 0; //受影响的行数默认为0try {result = userDao.update(user);} catch (Exception e) {e.printStackTrace();System.out.println("更新用户信息用户失败");}if (result>0)System.out.println("更新用户信息用户成功");} }
数据的操作结果我们都可以在mysql中查看,这里就不一一截图了。当然我们也可看到每次单元测试都需要在类上面注解spring单元测试和spring的上下文,按照我们编程的原则,一次编码处处运行,我们可以把这些注解放到BaseTest.java中,后面所有的单元测试都继承BaseTest.java即可避免大量重复编码。
UserService实现(注意编程思维的养成)
- 根据我们面向接口编程的思维来讲,我们在Service中核心是实现Dao层,并调用Dao层。
- 刚才我们单元测试,我们的UserDao层通过测试了,我们现在中心就应该放在业务逻辑的实现,而不是继续纠缠Dao层,毕竟数据持久化已经实现了。
- 从服务端程序的角度看来,用户的主要业务有注册、登录、注销登录、注销帐号等等,这里我们先拿注册来说事。
- 用户注册流程分析(用户角度):
- 填写帐号相关信息
- 提交注册信息
- 服务器返回是否注册成功
- 用户注册流程分析(服务器角度):
- 收到用户注册请求
- 解包数据→封装到UserBean
- 解包数据失败(请求信息异常),返回错误提示信息
- 针对具体的用户信息检查是否符合标准
- 不符合检查标准,返回对应的错误提示
- 通过检查,调用Dao检查是否存在同样的用户
- 数据库已经存在相同的用户信息,不能重复添加,返回错误提示信息
- 不存在同样的用户,添加新用户,并返回成功的提示信息
流程图反映如下:
ssm框架用户行为解析流程图
- 代码实现用户注册的Service:
//创建一个BaseService接口,用泛型解耦 public interface UserService extends BaseService<User> {//添加用户的实例void add(User user) throws Exception; }------------------------------分割线----------------------------------//创建一个UserService继承BaseService,并指定具体的实体类型 //为什么要再写一个UserService接口?不同对象的业务体系不同,BaseService并不能完全替代不同对象的具体行为表现 public interface UserService extends BaseService<User> {void add(User user) throws Exception; }------------------------------分割线----------------------------------//创建UserServiceImpl实现UserService接口 @Service("userService") public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;/*** 添加用户,一般来说需要检查用户为空、用户名为空、密码为空*/public void add(User user) throws UserCanNotBeNullException, UserNameCanNotBeNullException, UserPwdCanNotBeNullException, UserAireadyExistException, OtherThingsException {//先检查用户是否存在if (null == user) {//抛出用户为空的自定义异常throw new UserCanNotBeNullException("User can not be Null");}//用户名不能为空检查if (StringUtils.isEmpty(user.getLoginId())) {//抛出用户名为空的自定义异常throw new UserNameCanNotBeNullException("User name can not be Null");}//用户密码不能为空检查if (StringUtils.isEmpty(user.getPwd())) {//抛出用户密码为空的自定义异常throw new UserPwdCanNotBeNullException("User name can not be Null");}//由于我这个是仓库管理系统,根据业务需求来说,我们的用户基本信息都是不能为空的//基本信息包括:姓名、年龄、用户名、密码、性别、手机号,年龄大于18if (StringUtils.isEmpty(user.getDuty())|| StringUtils.isEmpty(user.getSex())|| user.getAge() > 18|| StringUtils.isEmpty(user.getCellNumber())) {//其他综合异常throw new OtherThingsException("Some use's base info can not be null");}//已经存在相同用户if (null != userDao.findOneById(user.getLoginId())) {//存在相同的用户异常throw new UserAireadyExistException("Register User Failed,Because the user Aiready exist");}int result = 0; //受影响的行数默认为0try {result = userDao.add(user);} catch (Exception e) {System.out.println("添加用户失败,用户已经存在");//其他用户添加失败异常throw new OtherThingsException(e);}if (result > 0)System.out.println("添加用户成功");}//···省略的其他方法···}
- 老规矩,写完每个Service后,都需要针对具体的对象的行为进行单元测试,UserServiceTest.java代码如下:
public class UserServiceTest extends BaseTest {@Autowiredprivate UserServiceImpl userService; //此处直接使用UserService的实现类,主要是方便抛出异常,然后异常出现时候可以针对性的处理@Testpublic void testAdd() {User user = new User();try {userService.add(user);} catch (UserCanNotBeNullException e) {//用户不能为空异常抛出e.printStackTrace();} catch (UserNameCanNotBeNullException e) {//用户名不能为空e.printStackTrace();} catch (UserPwdCanNotBeNullException e) {//用户密码不能为空e.printStackTrace();} catch (UserAireadyExistException e) {//用户存在抛出e.printStackTrace();} catch (OtherThingsException e) {//其他综合异常或是不能处理的异常e.printStackTrace();}}//···省略的其他测试代码··· }
- 同样的,我们的Service的测试代码执行后,我们可以在mysql中看到具体的数据变化,也不再一一贴图了。
因为篇幅和时间原因,我们暂时就不写具体功能的详细实现了,毕竟学习不是一朝一夕,多培养思维才是重要的事情。从这一期开始代码逐渐增多,毕竟学习过程就是这样的递增的,等熟悉以后可能很多地方就更多是培养思维方式,代码就直接贴上(详细的注释不会少)。
这一期总结:
- 解决项目框架冲突解决,各个框架职能的简单介绍。
- 简单的原理解释。
- java web经典mvc、三层架构简单介绍。
- 部分简单的SQL语句。
- 针对Dao层和Service层的单元测试。
- 简单业务实现的流程分析。
这一篇文章内容都非常详细,相信大家都有不同的收获
博主为你们准备了一份小小的福利,希望对你们能有所帮助
喜欢来个小关注吧,私信小编【资料】即可免费获取哦
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- SQL-SERVER The transaction log for database tempdb‘is full due to ACTIVE_TRANSACTION
SQL Server 执行一张大表的存储过程,报错:The transaction log for database tempdbis full due to ACTIVE_TRANSACTION由于活动事务太长,数据库tempdb的事务日志已满-- 查看Disk的Free Space exec sys.xp_fixeddrives-- 查看数据库空间的使用情况 exec sys.sp_spaceused需要…...
2024/4/19 14:26:56 - SQL-SERVER The transaction log for database tempdb‘is full due to ACTIVE_TRANSACTION
SQL Server 执行一张大表的存储过程,报错:The transaction log for database tempdbis full due to ACTIVE_TRANSACTION由于活动事务太长,数据库tempdb的事务日志已满-- 查看Disk的Free Space exec sys.xp_fixeddrives-- 查看数据库空间的使用情况 exec sys.sp_spaceused需要…...
2024/4/19 18:51:51 - JAVA_javassist学习
javassist 用于对java字节码文件进行操作,可以动态生成新的类、方法、添加属性等,亦可对已有类、方法、属性进行修改 需要导入的jar javassist.jar 1.使用javassist生成一个新的类 package com.bjsxt.test;import javassist.CannotCompileException; import javassist.ClassP…...
2024/4/18 10:17:39 - SpringBoot+Redis实现存取数据
导入maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!-- redis --> <dependency> <groupId>org.springframework.boot</g…...
2024/4/16 8:17:35 - c++ 学习笔记之for循环
c++ 学习笔记之5.1 for循环5.1.1. for循环的组成部分5.1.2. 回到for循环5.1.3. 修改步长5.1.4. 使用for循环访问字符串5.1.11 逗号运算符5.1.14. C 风格字符串的比较 #include #include 5.1 for循环 void forDemo() {using namespace std;for (int i = 0; i < 10; i++) {c…...
2024/4/16 8:16:19 - ribbon入门Demo
用户工程订单工程在order-api中有一个这样的接口 public interface IOrderService {String getOrder(); }在order-service中有一个实现 @RestController public class OrderSerivce implements IOrderService{@GetMapping("/getOrder")@Overridepublic String getOrd…...
2024/5/3 16:11:43 - 微信小程序视频点播在线视频学习系统 毕业设计 课程设计(4)视频介绍和目录
wxml代码 <!--pages/shipin/xiangqing.wxml--> <view class="biaoti">视频课程:微信小程序样式Flex Box精通课程</view> <view class="kecheng"><view class="kecheng_fengmian"><image class="kecheng…...
2024/4/16 8:17:35 - SystemUI 锁屏点击通知解锁界面重叠(bouncer界面与锁屏第一界面)
不积跬步无以至千里一.前摘其实这里是原生设计,google认为这样是正常的现象,设计的如此,但是咱们国内呢,考虑的看见界面层叠混乱,这样就感觉体验不好,因此认为需要改善,当然可以看大厂的手机确实都处理此问题,那咱们也处理一下吧。二.分析这里说一下吧,其实这里会出现…...
2024/4/22 13:18:24 - Java循环嵌套是什么意思,Java循环嵌套实例
Java嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构。whiledo.while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for循环, Java嵌套循环格式如下:for(初始化表达式;循环条件;操作表达式){for(初始化表达式;循环条…...
2024/4/16 8:16:24 - Loadrunner IP欺骗的注意事项
见下面连接都是干货。 https://www.cnblogs.com/samfish/archive/2010/06/12/1756899.html...
2024/5/2 14:19:30 - 数码相机成像原理
数码相机: 1.光聚焦在CCD或CMOS上。 2.CCD或CMOS完成光/电转换。 3.A/D将模拟信号转换成数字信号。 4.最后由DSP将数字信号转换成数码图像。...
2024/4/29 11:15:16 - 【Spring】compileJava
今天学习过程中写代码用了lambda表达式,但是出现了错误: -source 1.6 中不支持 lambda 表达式,原因是我直接在编译好的Spring4.3.x的源码环境写的,而Spring源码的build.gradle中对allprojects有如下配置: compileJava {sourceCompatibility = 1.6targetCompatibility = 1.6…...
2024/4/16 8:18:06 - 智策网:如果看作去年初行情的延续的话,依然是3500点上方
智策网:如果看作去年初行情的延续的话,依然是3500点上方 熬到3点收盘,整个人一直懵的,期指IH最后一刻涨停是智策网预料的,智策网提前一百点走了,但是还是感觉不真实,不可思议,不敢相信,最小概率变成了必然。 收盘后在车里坐了三个小时,一直想不明白,疫情的当下,经济…...
2024/4/16 8:18:26 - 直播赠书丨论如何高效学习计算机视觉
冯振,《OpenCV 4快速入门》作者,小白学视觉微信公众号创始人,哈尔滨工业大学博士。录制视频课程《从零学习OpenCV 4》。成立小白学视觉团队,翻译并开源了OpenCV contrib中文教程文档。计算机视觉是人工智能的一个热门方向,很多人想要入门,但是却找不到方向。对于初学者来说…...
2024/4/18 16:58:58 - 狂神说 Spring MVC 课程笔记
狂神说 Spring MVC 课程笔记狂神说SpringMVC01:什么是SpringMVC狂神说SpringMVC02:第一个MVC程序狂神说SpringMVC03:RestFul和控制器狂神说SpringMVC04:数据处理及跳转狂神说SpringMVC05:整合SSM框架狂神说SpringMVC06:Json交互处理狂神说SpringMVC07:Ajax研究狂神说Spr…...
2024/4/16 8:18:36 - QGIS 加载天地图
1.影像数据加载 网址: https://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=您在官网申请的Key…...
2024/4/20 4:10:37 - 流程控制——选择结构与循环结构
第三章 流程控制——选择结构与循环结构1.流程控制结构 Java中有3种流程控制结构:顺序结构、选择结构、循环结构 顺序结构:程序从上向下依次执行每条语句的结构,中间没有任何的判断和跳转。 选择结构:根据条件判断的结果来选择执行不同的代码。选择结构可以细分为单分支结构…...
2024/4/17 9:47:23 - Vu单元测试-------笔记(一)
单元测试 Vu单元测试工具,实现了彻底的表格驱动,只需要在表格中填写数据就可以直接形成测试用例,点击运行直接进行测试,测试代码以及测试报告就可以自动生成。 (1)支持可视编程,具有很好的自动性 Vu是以可视编程为核心,由工具完成大部分工作的单元测试工具 什么样的测试…...
2024/4/19 13:24:31 - 还在用if(obj!=null)做非空判断?带你快速上手Optional
1.前言相信不少小伙伴已经被java的NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨,有大佬说过“防止 NPE,是程序员的基本修养。”但是修养归修养,也是我们程序员最头疼的问题之一,那么我们今天就要尽可能的利用Java8的新特性 Optional来尽量简化代码同时高效处理…...
2024/4/16 8:18:06 - 安全入门之Web安全1(web安全基础)
安全入门之Web安全1(web安全基础)一、HTML基础1.HTML内容2.HTML结构二、JavaScript基础1.JavaScript概述2.JavaScript组成3.JavaScript使用4.DOM操作和BOM操作 一、HTML基础 1.HTML内容 1.HTML又称超文本标记语言,是一种用于制作HTML文档的标记语言。 2.HTML文档的编写一般分…...
2024/4/16 8:18:21
最新文章
- 【Unity】位图字体制作工具:蒲公英
一般来讲,如果需要制作位图字体,一般是使用 BMFont 这种第三方工具:BMFont - AngelCode.comhttp://www.angelcode.com/products/bmfont/ 然而这个工具对于非程序员来说,操作起来较为繁琐困难。每次美术修改了字体之后&…...
2024/5/6 9:01:00 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 微信小程序的页面交互2
一、自定义属性 (1)定义: 微信小程序中的自定义属性实际上是由data-前缀加上一个自定义属性名组成。 (2)如何获取自定义属性的值? 用到target或currentTarget对象的dataset属性可以获取数据 ÿ…...
2024/5/1 13:38:59 - uinapp触底与下拉时间触发的使用
在UniApp中,onReachBottom 和 onPullDownRefresh 是两个重要的生命周期函数,分别用于处理页面滚动到底部时触发的事件和下拉刷新时触发的事件。 在页面的 .vue 文件中: <template> <view> <scroll-view scroll-y"tr…...
2024/5/5 8:28:39 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/4 23:55:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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