项目开发入门JavaEE框架与MVC模式

上传人:陈** 文档编号:195832613 上传时间:2023-03-22 格式:PPT 页数:64 大小:2.69MB
收藏 版权申诉 举报 下载
项目开发入门JavaEE框架与MVC模式_第1页
第1页 / 共64页
项目开发入门JavaEE框架与MVC模式_第2页
第2页 / 共64页
项目开发入门JavaEE框架与MVC模式_第3页
第3页 / 共64页
资源描述:

《项目开发入门JavaEE框架与MVC模式》由会员分享,可在线阅读,更多相关《项目开发入门JavaEE框架与MVC模式(64页珍藏版)》请在装配图网上搜索。

1、第第2章章 项目开发入门:项目开发入门:JavaEE框架与框架与MVC模式模式2.1Struts2让网页与控制分离让网页与控制分离2.22.3Hibernate把数据持久化把数据持久化MVC框架开发模式框架开发模式2.1Struts2让网页与控制分离让网页与控制分离2.1.1Struts2框架框架1Model2模式模式Model2模式的工作原理如图2.1所示,其工作流程是按如下5个步骤进行的:Servlet接收浏览器发出的请求。Servlet根据不同的请求调用相应的JavaBean。JavaBean按自己的业务逻辑操作数据库。Servlet将结果传递给JSP视图。JSP将后台处理的结果呈现给浏

2、览器。2.1.1Struts2框架框架2ServletFilter技术技术图 2.2 中显示了正常请求、加过滤器请求和加过滤器链请求的处理过程。过滤器可以对Request对象和Response对象进行处理。2.1.1Struts2框架框架(1)init(FilterConfig)。这是过滤器的初始化方法,Servlet容器创建过滤器实例后将调用这个方法。在这个方法中可以通过FilterConfig参数读取web.xml文件中过滤器的初始化参数。(2)doFilter(ServletRequest,ServletResponse,FilterChain)。这个方法完成实际的过滤操作,当用户请求与

3、过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法,在返回响应之前也会调用此方法。FilterChain参数用于访问过滤器链上的下一个过滤器。2.1.1Struts2框架框架(3)destroy()。Servlet容器在销毁过滤器实例前调用该方法,这个方法可以释放过滤器占用的资源。过滤器编写完成后,要在web.xml进行配置,格式如下:过滤器名称 过滤器对应的类 参数名称 参数值 2.1.1Struts2框架框架下面举例说明在web.xml中配置过滤器与URL关联的方法。(1)与一个URL资源关联:过滤器名 xxx.jsp(2)与一个URL目录下的所有资源关联:过滤器

4、名 /*(3)与一个Servlet关联:过滤器名 Servlet名称2.1.1Struts2框架框架3Struts2工作机制工作机制Struts 2的设计思想:用Servlet Filter技术将Servlet API隐藏于框架之内,一个请求在Struts 2框架内被处理,大致分为以下几个步骤,如图2.3所示。2.1.2入门实践二:入门实践二:JSP+Struts2+JDBC实实现登录现登录1加载加载Struts2包包登录http:/struts.apache.org/,下载Struts 2完整版,本书使用的是Struts 2.3.4.1。将下载的文件struts-2.3.4.1-all.zi

5、p解压缩,得到文件夹包含的目录结构如图2.4所示2.1.2入门实践二:入门实践二:JSP+Struts2+JDBC实实现登录现登录开发Struts 2程序只需用到lib下的9个jar包,包括:(1)传统Struts 2的5个基本类库。struts2-core-2.3.4.1.jarxwork-core-2.3.4.1.jarognl-3.0.5.jarcommons-logging-1.1.1.jarfreemarker-2.3.19.jar(2)附加的4个库。commons-io-2.0.1.jarcommons-lang3-3.1.jarjavassist-3.11.0.GA.jarcom

6、mons-fileupload-1.2.2.jar(3)数据库驱动。mysql-connector-java-5.1.22-bin.jar2.1.2入门实践二:入门实践二:JSP+Struts2+JDBC实实现登录现登录在项目目录树中,右击项目名,选择菜单【Build Path】【Configure Build Path】,出现如图2.5所示的窗口。2.1.2入门实践二:入门实践二:JSP+Struts2+JDBC实实现登录现登录2.1.2入门实践二:入门实践二:JSP+Struts2+JDBC实实现登录现登录3创建创建JavaBean在项目src文件夹下建立包org.easybooks.bo

7、okstore.jdbc,在包里创建MySQLConnBean类,其代码与“入门实践一”的程序完全一样。4创建创建login.jsp在项目WebRoot下创建登录首页的JSP文件login.jsp,代码如下:登录页面 用户登录 姓名:密码:2.1.2入门实践二:入门实践二:JSP+Struts2+JDBC实实现登录现登录5实现控制器实现控制器Action在项目src文件夹下建立包org.easybooks.bookstore.action,在包里创建LoginAction类,代码所示。6配置配置Action在编写好Action(控制器)的代码之后,还需要进行配置才能让Struts 2识别这个A

8、ction,在src下创建文件struts.xml(注意文件位置和大小写),输入如下的配置代码:/welcome.jsp /error.jsp 2.1.2入门实践二:入门实践二:JSP+Struts2+JDBC实实现登录现登录7创建其余的创建其余的JSP文件文件在项目WebRoot下创建两个JSP文件。(1)welcome.jsp的代码如下:成功页面 ,您好!欢迎光临叮当书店。(2)error.jsp的代码与“入门实践一”的相同,在此省略。8部署运行部署运行部署项目、启动Tomcat服务器,在浏览器中输入http:/localhost:8080/jsp_struts2_jdbc/并回车,运行效

9、果与之前的程序完全相同。2.1.3知识点知识点Struts2:配置、:配置、Action1Struts2:配置:配置Struts 2的配置可以分成单个单独的文件,如图2.6所示。2.1.3知识点知识点Struts2:配置、:配置、Action web.xmlweb.xml并不是Struts 2框架特有的文件,它作为部署描述文件,是所有Java Web应用程序都需要的核心配置文件。struts.properties文件Struts 2提供了很多可配置的属性,通过这些属性的设置,可以改变框架的行为,从而满足不同Web应用的需求。这些属性可以在struts.properties文件中进行设置,str

10、uts.properties是标准的Java属性文件格式,“”号作为注释符号,文件内容由键(key)-值(value)对组成。struts.xml文件struts.xml是Struts 2框架的核心配置文件,主要用于配置和管理开发人员编写的action。struts.xml文件通常也放在Web应用程序的src目录下,该目录下的struts.xml将被Struts 2框架自动加载。2.1.3知识点知识点Struts2:配置、:配置、Actionstruts.xml文件是一个XML文件,开头是XML的文档类型定义(DTD)。DTD提供了XML文件中各元素应使用结构的信息,而这些最终会被XML解析器

11、或编辑器使用。/welcome.jsp /error.jsp 2.1.3知识点知识点Struts2:配置、:配置、Action2Struts2:Action(1)Action的定义。Struts 2中的Action只需要在一个普通的类中定义一个方法,如:public class XXXAction public String method()return return Value;2.1.3知识点知识点Struts2:配置、:配置、Action例如,定义一个HelloAction,访问该Action的时候在控制台打印“你好”:public class HelloAction public St

12、ring hello()System.out.println(你好);return null;在struts.xml配置文件中,将刚才创建的Action注册到这里:2.1.3知识点知识点Struts2:配置、:配置、Action(2)通过Action获取请求参数。以下是一个Action获取请求参数的例子。本示例用于演示用户登录的过程。用户输入用户名和密码,如果分别为admin和admin,则显示登录成功的信息,否则显示登录失败的信息。login.jsp的代码如下:用户名:密码:LoginAction.java作为控制器,负责接收页面发送过来的用户名和密码,并通过execute()方法调用业务方

13、法,根据执行结果控制程序流程:如果登录成功,则跳转到success.jsp,否则跳转到failure.jsp。2.1.3知识点知识点Struts2:配置、:配置、ActionLoginAction的配置:/success.jsp /failure.jsp2.1.3知识点知识点Struts2:配置、:配置、Action(3)ActionSupport。ActionSupport类为Action提供了一些默认实现,主要包括:预定义常量。从资源文件中读取文本资源。接收验证错误信息。验证的默认实现。下面是ActionSupport类所实现的接口:public class ActionSupport i

14、mplements Action,Validateable,ValidationAware,TextProvider,LocaleProvider,Serializable 2.1.3知识点知识点Struts2:配置、:配置、ActionAction接口同样位于com.opensymphony.xwork2包,定义了一组标准的常量和execute()方法,可提供给开发人员使用,如下所示:public interface Action public static final String SUCCESS=success;public static final String NONE=none;p

15、ublic static final String ERROR=error;public static final String INPUT=input;public static final String LOGIN=login;public String execute()throws Exception;2.2Hibernate把数据持久化把数据持久化2.2.1Hibernate概述概述1Hibernate与与ORM用Hibernate将本书test数据库的user表映射为User对象,如图2.7所示,这样在编程时就可直接操作User对象来访问数据库了。2.2.1Hibernate概述概

16、述2Hibernate体系结构体系结构Hibernate的体系结构如图2.8所示。2.2.2入门实践三:入门实践三:JSP+Hibernate实现登实现登录录1为项目添加为项目添加Hibernate能力能力右击项目jsp_hibernate,选择菜单【MyEclipse】【Add Hibernate Capabilites】启动向导,首先出现如图2.9所示的窗口。2.2.2入门实践三:入门实践三:JSP+Hibernate实现登实现登录录单击【Next】按钮,进入如图2.10所示的界面,用于创建Hibernate配置文件。2.2.2入门实践三:入门实践三:JSP+Hibernate实现登实现登

17、录录单击【Next】按钮,进入如图2.11所示的界面,指定Hibernate所用数据库连接的细节。2.2.2入门实践三:入门实践三:JSP+Hibernate实现登实现登录录单击【Next】按钮,出现如图2.12所示的窗口,询问是否需要创建SessionFactory类,这里选择创建,类名取默认HibernateSessionFactory,存放于org.easybooks.bookstore.factory包中。2.2.2入门实践三:入门实践三:JSP+Hibernate实现登实现登录录单击【Finish】按钮完成添加。通过这些步骤,项目中增加了两个Hibernate包目录、一个hibern

18、ate.cfg.xml配置文件、一个HibernateSessionFactory.java类,另外,数据库的驱动包也被自动载入进来,此时项目的目录树呈现如图2.13所示的状态。2.2.2入门实践三:入门实践三:JSP+Hibernate实现登实现登录录2为为user表生成持久化对象表生成持久化对象打开先前创建的mysql数据连接,选中数据库表user,右击,选择菜单【Hibernate Reverse Engineering】,如图2.14所示。2.2.2入门实践三:入门实践三:JSP+Hibernate实现登实现登录录首先,如图2.15所示,选择生成的类及映射文件所在的位置。2.2.2入门

19、实践三:入门实践三:JSP+Hibernate实现登实现登录录单击【Next】按钮,进入如图2.16所示的界面,配置映射文件的细节。2.2.2入门实践三:入门实践三:JSP+Hibernate实现登实现登录录单击【Next】按钮,进入如图2.17所示的界面,主要用于配置反向工程的细节,这里保持默认配置即可。2.2.2入门实践三:入门实践三:JSP+Hibernate实现登实现登录录3创建创建JSP文件文件与第1章“入门实践一”的传统Java EE程序一样,本例有4个JSP文件,其中login.jsp、welcome.jsp和error.jsp这3个文件的源码完全相同,不同的仅仅是validat

20、e.jsp文件的代码,改为直接用User对象访问数据库。validate.jsp的代码。4部署运行部署运行修改web.xml文件,改变项目启动页为login.jsp,部署、启动Tomcat服务器。在浏览器中输入http:/localhost:8080/jsp_hibernate/并回车,运行效果与之前的程序完全相同。2.2.3知识点知识点Hibernate:配置、接口:配置、接口及及ORM基础基础1Hibernate:配置:配置现在再看刚刚做的项目,在src目录下,生成了hibernate.cfg.xml文件,主要内容。2Hibernate:接口:接口(1)初始化Hibernate配置管理类C

21、onfiguration。根据传入或者默认的配置文件(hibernate.cfg.xml)来创建并初始化一个Configuration类的实例:Configuration config=new Configuration().configure();(2)通过Configuration类实例创建Session的工厂类SessionFactory:SessionFactory sessionFactory=config.buildSessionFactory();(3)通过SessionFactory得到Session实例:session=sessionFactory.openSession()

22、;2.2.3知识点知识点Hibernate:配置、接口:配置、接口及及ORM基础基础 ConfigurationConfiguration类负责管理Hibernate的配置信息。Hibernate运行时需要一些底层实现的基本信息,包括:(1)数据库URL。(2)数据库用户名。(3)数据库用户密码。(4)数据库JDBC驱动类。(5)数据库dialect,用于对特定数据库提供支持,其中包含了针对特定数据库特性的实现,如Hibernate数据库类型到特定数据库数据类型的映射等。2.2.3知识点知识点Hibernate:配置、接口:配置、接口及及ORM基础基础 SessionFactorySessio

23、nFactory负责创建Session实例,可以通过Configuration实例构建SessionFactory。Configuration config=new Configuration().configure();SessionFactory sessionFactory=config.buildSessionFactory();SessionSession实例由SessionFactory构建:Configuration config=new Configuration().configure();SessionFactory sessionFactory=config.buildS

24、essionFactory();Session session=sessionFactory.openSession();2.2.3知识点知识点Hibernate:配置、接口:配置、接口及及ORM基础基础之后就可以调用Session提供的save、get、delete等方法完成持久化操作:(1)Save。/新增名为“zhouhejun”的用户记录User user=new User();User.setName(zhouhejun);session.save(user);(2)Get。/假设表user中存在id=1的记录User user=(User)session.get(User.clas

25、s,new Integer(1);(3)Delete。/假设表user中存在id=1的记录User user=(User)session.get(User.class,new Integer(1);Session.delete(user);/也可以通过Query接口进行基于HQL的删除操作String hql=delete User where id=1;Query query=session.createQuery(hql);Query.executeUpdate();2.2.3知识点知识点Hibernate:配置、接口:配置、接口及及ORM基础基础通过Query接口进行数据查询:Strin

26、g hql=from User user where user.name like?;Query query=session.createQuery(hql);query.setParamter(0,cartier);List list=query.list();Iterator it=list.iterator();while(it.hasNext()User user=(User)it.next();System.out.println(user.getUsername();2.2.3知识点知识点Hibernate:配置、接口:配置、接口及及ORM基础基础3Hibernate:ORM基础基

27、础Hibernate中的ORM主要包括3部分内容:(1)表名-类名映射。(2)主键映射。(3)字段映射。本例用的数据库表(user表)结构如图2.18所示。对应user表,映射之后自动生成的User类代码。2.2.3知识点知识点Hibernate:配置、接口:配置、接口及及ORM基础基础User.hbm.xml的配置信息如下:/配置文件根节点 /类/表名映射 /id映射 /username属性/字段映射 /password属性/字段映射 2.2.3知识点知识点Hibernate:配置、接口:配置、接口及及ORM基础基础 类/表映射配置 id映射配置 属性/字段映射配置属性/字段映射配置将类属性

28、与表字段相关联,如:2.2.4入门实践四:入门实践四:JSP+DAO+Hibernate实现登录实现登录在JSP+Hibernate的实践中,利用ORM实现了对数据库表的对象化操作,然而,validate.jsp的代码中仍然存留有操作数据库的动作,如:/查询user表中的记录String sql=from User u where u.username=?and u.password=?;Queryquery=HibernateSessionFactory.getSession().createQuery(sql);query.setParameter(0,usr);query.setPara

29、meter(1,pwd);List users=query.list();2.2.4入门实践四:入门实践四:JSP+DAO+Hibernate实现登录实现登录1添加添加Hibernate及生成及生成POJO类类2定义并实现定义并实现DAO在项目src下创建包org.easybooks.bookstore.dao,右击选择菜单【New】【Interface】,在如图2.19所示的【New Java Interface】窗口的Name文本框输入IUserDAO,单击【Finish】按钮,创建一个DAO接口。2.2.4入门实践四:入门实践四:JSP+DAO+Hibernate实现登录实现登录在IUs

30、erDAO.java中定义DAO接口如下:package org.easybooks.bookstore.dao;import org.easybooks.bookstore.vo.User;public interface IUserDAO public User validateUser(String username,String password);在src下创建org.easybooks.bookstore.dao.impl包,在包中创建类UserDAO,此类实现了接口中的validateUser()方法。2.2.4入门实践四:入门实践四:JSP+DAO+Hibernate实现登录实

31、现登录3创建创建JSPvalidate.jsp文件的代码。4部署运行部署运行修改web.xml文件,改变项目启动页为login.jsp,部署、启动Tomcat服务器。在浏览器中输入http:/localhost:8080/jsp_dao_hibernate/并回车,运行效果与之前的程序完全相同。2.2.5知识点知识点DAO模式、模式、HQL语言和语言和Query接口接口1DAO模式模式DAO是Data Access Object数据访问对象(接口),它介于数据库资源和业务逻辑之间,其意图是将底层数据访问操作与高层业务逻辑完全分开。DAO原理2.2.5知识点知识点DAO模式、模式、HQL语言和语

32、言和Query接口接口2Hibernate:HQL检索语言检索语言(1)实体查询。有关实体查询技术,如下面的例子所示:String hql=from User;Query query=session.createQuery(hql);List list=query.list();如果需要取出名为“zhouhejun”的用户记录,可以通过hql语句加以限定:String hql=from User as user where user.name=zhouhejun;Query query=session.createQuery(hql);List userList=query.list();2.

33、2.5知识点知识点DAO模式、模式、HQL语言和语言和Query接口接口下面是几个简单的示例:from User user where user.age20from User user where user.age between 20 and 30from User user where user.age in(18,28)from User user where user.name is nullfrom User user where user.name like Z%与SQL相同,通过and、or等逻辑连接符组合各个表达式:from User user where(user.age20

34、)and(user.name like Z%)2.2.5知识点知识点DAO模式、模式、HQL语言和语言和Query接口接口(2)批量更新和删除。在Hibernate 2之前的版本中,HQL还仅限于数据查询,从Hibernate 3开始,HQL具备了更加强大的功能,批量更新与删除就是其中的主要特性。在Hibernate 2中,完成用户年龄属性的更新,必须通过以下代码:/加载ID=1的用户记录User user=(User)session.get(User.class,new Integer(1);user.setAge(new Integer(18);/通过session.save方法保存ses

35、sion.save(user);Hibernate 3的HQL提供了更加灵活的实现方式(bulk delete/update):String hql=update User set age=18 where id=1;Query query=session.createQuery(hql);query.executeUpdate();2.2.5知识点知识点DAO模式、模式、HQL语言和语言和Query接口接口以下代码可将所有用户的年龄属性都更新为18:String hql=update User set age=18;Query query=session.createQuery(hql);i

36、nt ret=query.executeUpdate();delete子句的使用同样非常简单。以下代码删除了所有年龄大于18的用户记录:String hql=delete User where age18;Query query=session.createQuery(hql);int ret=query.executeUpdate();2.2.5知识点知识点DAO模式、模式、HQL语言和语言和Query接口接口3Hibernate:Query接口接口(1)使用“?”指定参数。通过Query接口可以先设定查询参数,然后通过setXXX()等方法,将指定的参数值填入,而不用每次都编写完整的HQL

37、。Query query=session.createQuery(from Student s where s.age?and s.name like?)query.setInteger(0,25);/设置s.age?中的问号为整型25query.setString(1,%clus%);/设置s.name like?中的问号为字符串“%clus%”(2)使用“:”后跟变量的方法设置参数。可以使用命名参数来取代使用“?”设置参数的方法,这可以不用依据特定的顺序来设定参数值,比如上面的代码可以写为:Query query=session.createQuery(from Student s whe

38、re s.age:minAge and s.name like:likeName);query.setInteger(minAge,25);/设置:号后的minAge变量值query.setString String(likeName,%clus%);/设置:号后的likeName变量值2.2.5知识点知识点DAO模式、模式、HQL语言和语言和Query接口接口(3)setParameter()方法。setParameter()方法的全称是setParameter(String paramName,实例,实例类型),它可以绑定任意类型的参数。在实际应用中,Hibernate能够根据类实例推断出

39、绝大部分对应的映射类型,因此setParameter()中的第3个参数可以不要。例子如下:String hql=from User u where u.username=?and u.password=?;Query query=session.createQuery(hql);query.setParameter(0,username);query.setParameter(1,password);2.2.5知识点知识点DAO模式、模式、HQL语言和语言和Query接口接口(4)list()方法。Query的list()方法用于取得一个List类的实例,此实例中包括的可能是一个Object集

40、合,也可能是Object数组集合。最常见的是使用list()取得一组符合条件的实例对象,如以下的程序:Query query=session.createQuery(from Student s where s.age20);List list=query.list();for(int i=0;ilist.size();i+)Student stu=(Student)list.get(i);System.out.println(stu.getName();2.3MVC框架开发模式框架开发模式2.3.1MVC思想思想一个典型的MVC系统各部分的构成及相互作用关系如图2.21所示2.3.1MVC思

41、想思想模型模型:数据模型(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。视图视图:视图(View)是用户看到并与之交互的界面。控制器控制器:控制器(Controller)起到不同层面间的组织作用,用于控制应用程序的流程。2.3.2入门实践五:入门实践五:JSP+Struts2+DAO+Hibernate实现登录实现登录1M层开发层开发添加添加Hibernate、生成、生成POJO类及编写类及编写DAO(1)添加Hibernate。操作方法同“入门实践三”第1步,在此不再赘述。(2)生成POJO类。操作方法同“入门实践三”第2步,在此不再赘述。(3)在项目src下创建包

42、org.easybooks.bookstore.dao和org.easybooks.bookstore.dao.impl,分别用于存放DAO接口IUserDAO及其实现类UserDAO。DAO接口和类的代码与“入门实践四”的完全相同,在此省略。2.3.2入门实践五:入门实践五:JSP+Struts2+DAO+Hibernate实现登录实现登录2C层开发层开发加载加载Struts2包、实现包、实现Action及控制器配置及控制器配置(1)加载、配置Struts 2。步骤与“入门实践二”第1、2步相同,稍有差别的是,这里仅需加载Struts 2的9个jar包即可,因在第1步添加Hibernate时

43、,数据库的驱动包已被自动载入进来,无须重复加载。(2)实现Action。在项目src文件夹下建立包org.easybooks.bookstore.action,在包里创建LoginAction类,代码所示。(3)配置Action。在src下创建文件struts.xml,配置内容与“入门实践二”完全一样,在此省略。2.3.2入门实践五:入门实践五:JSP+Struts2+DAO+Hibernate实现登录实现登录3V层开发层开发编写编写JSP文件文件有了M、C这两层的功能,V层开发的任务就简单多了,只剩下编写3个JSP文件:login.jsp、welcome.jsp和error.jsp。它们的代

44、码与“入门实践二”的也完全一样,在此省略。4部署运行部署运行修改web.xml文件,改变项目启动页为login.jsp,部署、启动Tomcat服务器。在浏览器中输入http:/localhost:8080/jsp_struts2_dao_hibernate/并回车,运行效果与之前的程序完全相同。2.3.3知识点知识点Action:与属性分离:与属性分离下面具体介绍如何将username和password封装到User类中。User.java代码如下:public class User private String username;private String password;public

45、void setPassword(String password)this.password=password;public String getPassword()return password;public void setUsername(String username)this.username=username;public String getUsername()return username;2.3.3知识点知识点Action:与属性分离:与属性分离于是得到LoginAction.java的修改版,代码如下:public class LoginAction private Use

46、r user;public void setUser(User user)this.user=user;public User getUser()return user;public String execute()/同上 2.3.3知识点知识点Action:与属性分离:与属性分离对应login.jsp的修改版,代码如下:用户登录 姓名:密码:9、静夜四无邻,荒居旧业贫。2023-3-192023-3-19Sunday,March 19,202310、雨中黄叶树,灯下白头人。2023-3-192023-3-192023-3-193/19/2023 3:12:43 PM11、以我独沈久,愧君相见

47、频。2023-3-192023-3-192023-3-19Mar-2319-Mar-2312、故人江海别,几度隔山川。2023-3-192023-3-192023-3-19Sunday,March 19,202313、乍见翻疑梦,相悲各问年。2023-3-192023-3-192023-3-192023-3-193/19/202314、他乡生白发,旧国见青山。2023年3月19日星期日2023-3-192023-3-192023-3-1915、比不了得就不比,得不到的就不要。2023年3月2023-3-192023-3-192023-3-193/19/202316、行动出成果,工作出财富。20

48、23-3-192023-3-19March 19,202317、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。2023-3-192023-3-192023-3-192023-3-199、没有失败,只有暂时停止成功!。2023-3-192023-3-19Sunday,March 19,202310、很多事情努力了未必有结果,但是不努力却什么改变也没有。2023-3-192023-3-192023-3-193/19/2023 3:12:43 PM11、成功就是日复一日那一点点小小努力的积累。2023-3-192023-3-192023-3-19Mar-2319-Mar-2312

49、、世间成事,不求其绝对圆满,留一份不足,可得无限完美。2023-3-192023-3-192023-3-19Sunday,March 19,202313、不知香积寺,数里入云峰。2023-3-192023-3-192023-3-192023-3-193/19/202314、意志坚强的人能把世界放在手中像泥块一样任意揉捏。2023年3月19日星期日2023-3-192023-3-192023-3-1915、楚塞三湘接,荆门九派通。2023年3月2023-3-192023-3-192023-3-193/19/202316、少年十五二十时,步行夺得胡马骑。2023-3-192023-3-19Marc

50、h 19,202317、空山新雨后,天气晚来秋。2023-3-192023-3-192023-3-192023-3-199、杨柳散和风,青山澹吾虑。2023-3-192023-3-19Sunday,March 19,202310、阅读一切好书如同和过去最杰出的人谈话。2023-3-192023-3-192023-3-193/19/2023 3:12:43 PM11、越是没有本领的就越加自命不凡。2023-3-192023-3-192023-3-19Mar-2319-Mar-2312、越是无能的人,越喜欢挑剔别人的错儿。2023-3-192023-3-192023-3-19Sunday,Marc

51、h 19,202313、知人者智,自知者明。胜人者有力,自胜者强。2023-3-192023-3-192023-3-192023-3-193/19/202314、意志坚强的人能把世界放在手中像泥块一样任意揉捏。2023年3月19日星期日2023-3-192023-3-192023-3-1915、最具挑战性的挑战莫过于提升自我。2023年3月2023-3-192023-3-192023-3-193/19/202316、业余生活要有意义,不要越轨。2023-3-192023-3-19March 19,202317、一个人即使已登上顶峰,也仍要自强不息。2023-3-192023-3-192023-3-192023-3-19MOMODA POWERPOINTLorem ipsum dolor sit,eleifend nulla ac,fringilla purus.Nulla iaculis tempor felis amet,consectetur adipiscing elit.Fusce id urna blanditut cursus.感谢您的下载观看感谢您的下载观看专家告诉

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!