2018年个人总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37256896/article/details/85384083

2018年个人总结:

18年马上就要过去了,回首这一年间自己究竟学习了哪些东西,自己又会了哪些东西让我回想起来真是另自己担忧啊,不知道学习这些东西时热情是很十足的自己也通过上手练习了一些项目,但是现在回想起来还是有些失望,因为好多东西都遗忘了。我是跟着黑马32期的视频进行学习的其中自己学了JAVA基础知识,自认为还是学的可以的,但是真正的用到实际时像io流的用法,用有时遗忘的速度还真是挺快的,有时感觉自己有点笨了,现在想想,如果离开了浏览器自己真的能做出一些实际的东西吗,想到这里真是另自己十分的担忧,但是同样18年自己也有一部分的收获,18年我主要学习了哪些知识吧这里进行简单的归纳下:

JAVAWeb基础:web,tomcat的使用,http协议,request,response,jsp,jsp的九大隐式对象,四大作用域(request域,session域,pagecontext域,servlertContext域)cookie,el表达式,jstl,自定义标签,文件上传,下载,servlert的使用,JAVAMail的使用

然后就是解析xml和xml的格式,ajax,jquery,bootstrap,jqueryEasyUi,ubuntu服务器项目的部署,json,

接着就是进入了框架的行列:框架来说是封装了一些基本的使用从而简化了代码的使用,主要学习的struts,spring,hibernate,联系了ssh项目,接着学习了springmvc,mybatis,maven,POI,pinyin4j,shiro权限控制,webService,ehcache缓存,quartz,jpa,springboot。

这些一系列的知识虽说自己能够把他给串起来,但是有的知识还是在遗忘,这个遗忘周期令人是很烦恼的。

最初我学习这个东西只知道这个是做什么的,到最后回过头才发现,他为什么可以这样做,这是一个需要很大的过程的,比如刚开始使用struts时感觉他把数据自动封装到model中感觉很厉害,但是等到学习spring时依赖注入的方式感觉更加的方便,这样一来就感觉他们的使用相差不太大,但是又是很有区别的, 

        ①. Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter
        ②. Spring MVC 会稍微比 Struts2 快些. Spring MVC 是基 于方法设计, 而 Sturts2 是基于类, 每次发一次请求都会实 例一个 Action.
        ③. Spring MVC 使用更加简洁, 开发效率Spring MVC确实 比 struts2 高: 支持 JSR303, 处理 ajax 的请求更方便
        ④. Struts2 的 OGNL 表达式使页面的开发效率相比Spring MVC 更高些. 

但是后来学习了springboot又把spring的繁琐的配置给省略了,这样一来感觉到为什么会有后面的新的技术的出现呢,这样都是为了消除前面的繁琐的功能,都是为了简化前面的实现。

那么我有时会提出写问题:

同样都是使用mvc模式为了是软件分层那么问题来了:

1.为什么我要使用struts2:

2.为什么dao层我选择hibernate或者mybatis而不是使用jdbc或者DButils呢:

3.为什么我要使用spring(包括springmvc)

4.为什么我要使用springboot:

5.对于团队协作开发:我为什么要使用 maven分模块开发:

6.为什么ssh(springMVC,spring,hibernate|| struts2,spring,hibernate)项目不是那么受欢迎:

7.为什么很多都在使用ssm(spring,springMVC,Mybatis)

解答1:Struts2 是目前较为普及和成熟的基于MVC设计模式的web应用程序框架,它不仅仅是Struts1 的升级版本,更是一个全新的Struts架构。最初,是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。 不久之后,Webwork框架和Struts社区联合创造了现在流行的Struts2框架。是实现MVC设计模式的第二代web应用程序的框架,新的特性:拦截器,注解代替XML配置,支持对象导航语言OGNL,可重用可变更的uI组件API.

主要流程:调用动作-------拦截器(OGNL)----->动作-------->结果---------ActionContext(oGNL操作,(valueStack,请求,会话。。。))----->结果
为了满足对框架的职责任何类都可以成为动作,给定请求封装,从请求到视图框架自动数据传输作为数据的携带者,动作必须帮助  框架决定那个结果应该呈现请求响应返回的视图。1.动作封装工作单元,2,动作为数据提供场所。须把每一个数据实现为javabean属性 3.动作为结果路由选择返回控制字符串返回到A视图中
    第一:Action是用来完成动作需要继承ActionSupport来和实现模型驱动就是action在将数据从请求传递到视图(无论是JSP还是其他类型的结果)方面起着重要作用。 第二,action必须协助框架确定哪个结果应该呈现在响应请求的视图中。他可以通过web.xml的配置和struts.xml的配置决定是否使用过滤器,动作的请求路径,以及返回的视图(结果类型),

解答2:使用hibernate:对象关系映射框架 主要完成数据的持久化,轻量级的ORM(对象关系映射)工具。
        是一个高性能的对象关系型持久化存储和查询的服务,其遵循开源的 GNU Lesser General Public License (LGPL) 而且可以免费下载。
        Hibernate 不仅关注于从 Java 类到数据库表的映射,也有 Java 数据类型到 SQL 数据类型的映射,另外也提供了数据查询和检索服务。
        Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系, 是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 将 Java 类映射到数据库表中,从 Java 数据类型中映射到 SQL 数据类型中,并把开发人员从 95% 的公共数据持续性编程工作中解放出来。
        Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于 O/R 映射机制和模式的那些对象。
        Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,
        Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。主要封装了数据库的访问细节,通过配置文件链接关系数据库和程序中的实体类

hibernate对于JDBC的优势:
            Hibernate 使用 XML 文件来处理映射 Java 类别到数据库表格中,并且不用编写任何代码。
            为在数据库中直接储存和检索 Java 对象提供简单的 APIs。
            如果在数据库中或任何其它表格中出现变化,那么仅需要改变 XML 文件属性。
            抽象不熟悉的 SQL 类型,并为我们提供工作中所熟悉的 Java 对象。
            Hibernate 不需要应用程序服务器来操作。
            操控你数据库中对象复杂的关联。
            最小化与访问数据库的智能提取策略。
            提供简单的数据询问。
            **支持大多数主流的数据库管理系统。**支持技术:XDOCLet Spring J2EE,Eclipse plug-ins,Maven

使用Mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
        MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
         Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回

mybatis解决jdbc的编程问题:
                1.使用连接池连接
                2.将SQL语句配置到映射xml文件与Java代码分离
                3.自动将java对象映射置sql语句通过parameterType定义输入的参数的类型
                4.自动将结果映射到java对象中,而且可以通过resultType定义输出的结果类型
mybatis与hibernate 的区别:

               1.mybatis通过xml或注解的形式书写sql语句需要自己编写sql语句,并将sql语句和java对象映射成最终执行的sq  hibernate几乎不用自己书写sql语句,都直接操作封装好的对象即可
                2。mybatis可以控制sql的执行性能可以用于对关系模型要求不高的软件的开发吗,mybatis无法做到与数据库的无关性,如果需要实现多种的数据库的
                软件的类型需要定义多套sql的映射文件工作量大
                3.hibernate 对象/关系映射能力极强,与数据库无关性好

解答3:当已经存在许多开放源代码(和专有)J2EEframework时,我们为什么还需要Spring Framework?
        因为诸多原因让Spring变得独特:
        它定位的领域是许多其他流行的framework没有的。Spring致力于提供一种方法管理你的业务对象。
        Spring是全面的和模块化的。
        Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。
        它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。
        Spring对你的工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。
        可以降低开发企业应用的复杂程度,以IoC(控制反转)和AOP(面向切面编程)两种技术为基础简化了企业开发的复杂性,
        方便解耦,简化开发 Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护,交给 Spring 管理 AOP 编程的支持 Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能 声明式事务的支持 只需要通过配置就可以完成对事务的管理,而无需手动编程 方便程序的测试 Spring 对 Junit4 支持,可以通过注解方便的测试 Spring 程序 方便集成各种优秀框架 Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、 MyBatis、Quartz 等)的直接支持 降低 JavaEE API 的使用难度 
        Spring 对 JavaEE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等),都提供了封装, 使这些 API 应用难度大大降
        体系结构
                Spring 有可能成为所有企业应用程序的一站式服务点,然而,Spring 是模块化的,允许你挑选和选择适用于你的模块,不必要把剩余部分也引入。
                Spring 框架提供约 20 个模块,可以根据应用程序的要求来使用。
        核心容器
                    核心容器由spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring表达式语言,Spring Expression Language)等模块组成,它们的细节如下:
                    spring-core模块提供了框架的基本组成部分,包括 IoC 和依赖注入功能。
                    spring-beans 模块提供 BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦。
                    context模块建立在由core和 beans 模块的基础上建立起来的,它以一种类似于JNDI注册的方式访问对象。Context模块继承自Bean模块,并且添加了国际化(比如,使用资源束)、事件传播、资源加载和透明地创建上下文(比如,通过Servelet容器)等功能。Context模块也支持Java EE的功能,比如EJB、JMX和远程调用等。ApplicationContext接口是Context模块的焦点。spring-context-support提供了对第三方库集成到Spring上下文的支持,比如缓存(EhCache, Guava, JCache)、邮件(JavaMail)、调度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。
                    spring-expression模块提供了强大的表达式语言,用于在运行时查询和操作对象图。它是JSP2.1规范中定义的统一表达式语言的扩展,支持set和get属性值、属性赋值、方法调用、访问数组集合及索引的内容、逻辑算术运算、命名变量、通过名字从Spring IoC容器检索对象,还支持列表的投影、选择以及聚合等。。
        数据访问/集成
                    数据访问/集成层包括 JDBC,ORM,OXM,JMS 和事务处理模块,它们的细节如下:
                    (注:JDBC=Java Data Base Connectivity,ORM=Object Relational Mapping,OXM=Object XML Mapping,JMS=Java Message Service)
                    JDBC 模块提供了JDBC抽象层,它消除了冗长的JDBC编码和对数据库供应商特定错误代码的解析。
                    ORM 模块提供了对流行的对象关系映射API的集成,包括JPA、JDO和Hibernate等。通过此模块可以让这些ORM框架和spring的其它功能整合,比如前面提及的事务管理。
                    OXM 模块提供了对OXM实现的支持,比如JAXB、Castor、XML Beans、JiBX、XStream等。
                    JMS 模块包含生产(produce)和消费(consume)消息的功能。从Spring 4.1开始,集成了spring-messaging模块。
                    事务模块为实现特殊接口类及所有的 POJO 支持编程式和声明式事务管理。(注:编程式事务需要自己写beginTransaction()、commit()、rollback()等事务管理方法,声明式事务是通过注解或配置由spring自动处理,编程式事务粒度更细)
        Web
                    Web 层由 Web,Web-MVC,Web-Socket 和 Web-Portlet 组成,它们的细节如下:
                    Web 模块提供面向web的基本功能和面向web的应用上下文,比如多部分(multipart)文件上传功能、使用Servlet监听器初始化IoC容器等。它还包括HTTP客户端以及Spring远程调用中与web相关的部分。
                    Web-MVC 模块为web应用提供了模型视图控制(MVC)和REST Web服务的实现。Spring的MVC框架可以使领域模型代码和web表单完全地分离,且可以与Spring框架的其它所有功能进行集成。
                    Web-Socket 模块为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。
                    Web-Portlet 模块提供了用于Portlet环境的MVC实现,并反映了spring-webmvc模块的功能。
        其他
                    还有其他一些重要的模块,像 AOP,Aspects,Instrumentation,Web 和测试模块,它们的细节如下:
                    AOP 模块提供了面向方面的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,从而使实现功能的代码彻底的解耦出来。使用源码级的元数据,可以用类似于.Net属性的方式合并行为信息到代码中。
                    Aspects 模块提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。
                    Instrumentation 模块在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。
                    Messaging 模块为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的 STOMP 信息。
                    测试模块支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。使用spring能够很好的集成其他的框架,他可以为其他框架提供一些基本的服务.

springMVC:spring web MVC 提供了模型-视图-控制体系结构来灵活的开发,松散耦合的web的应用的组件 。MVC 模式导致了应用程序的不同方面(输入逻辑、业务逻辑和 UI 逻辑)的分离,同时提供了在这些元素之间的松散耦合。模型封装了应用程序数据,并且通常它们由 POJO 组成。视图主要用于呈现模型数据,并且通常它生成客户端的浏览器可以解释的 HTML 输出。
控制器主要用于处理用户请求,并且构建合适的模型并将其传递到视图呈现。
        主要的类DispatcherServlet:
            Spring Web 模型-视图-控制(MVC)框架是围绕 DispatcherServlet 设计的,DispatcherServlet 用来处理所有的 HTTP 请求和响应。
            Spring Web MVC DispatcherServlet 的请求处理的工作流程如下图所示:
                request---->dipatcherSevlet:(handlerMapping,Controller,View Resolver, View)-------->respose;
                1.收到一个 HTTP 请求后,DispatcherServlet 根据 HandlerMapping 来选择并且调用适当的控制器。
                2.控制器接受请求,并基于使用的 GET 或 POST 方法来调用适当的 service 方法。Service 方法将设置基于定义的业务逻辑的模型数据,
并返回视图名称到 DispatcherServlet 中。
                3.DispatcherServlet 会从 ViewResolver 获取帮助,为请求检取定义视图。
                4.一旦确定视图,DispatcherServlet 将把模型数据传递给视图,最后呈现在浏览器中。
                上面所提到的所有组件,即 HandlerMapping、Controller 和 ViewResolver 是 WebApplicationContext 的一部分,
                而 WebApplicationContext 是带有一些对 web 应用程序必要的额外特性的 ApplicationContext 的扩展。

解答4:Spring Boot是他们最新的创新,能够跟上不断变化的技术需求。 开发Spring Boot的主要动机是简化配置和部署spring应用程序的过程。 Spring Boot为开发提供一个具有最小功能的Spring应用程序,并提供了一个新的范例。
            使用Spring Boot将能够以更灵活的方式开发Spring应用程序,并且能够通过最小(或可能没有)配置Spring来专注于解决应用程序的功能需求。它使用全新的开发模型,通过避免一些繁琐的开发步骤和样板代码和配置,使Java开发非常容易。
        Spring Boot的主要特点:
                创建独立的Spring应用程序
                直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)
                提供“初始”的POM文件内容,以简化Maven配置
                尽可能时自动配置Spring
                提供生产就绪的功能,如指标,健康检查和外部化配置
                绝对无代码生成,也不需要XML配置
        springboot的核心还是spring,他不是编写应用程序的框架,他是提供应用程序服务器功能的嵌入式servlert容器。

解答5:maven便于代码的管理可以使用同一的配置项,减少项目的jar包的使用冲突,可以方便团队对于不同模块的团队协作开发。maven的构建项目过程:
                            清理阶段:clean 清理输出的class文件
                            编译阶段:complie,将代码编译成class文件
                            打包阶段:package, java-->jar包,web包--->war包
                             运行maven工程:tomat:run
        好处:一步构建,依赖管理,跨平台,提高团队效率

解答6,7:在视图请求处理搜可以用struts2,或者springmvc,这些都是可以对视图请求做出操作,但是在dao层中去使用的是不同的框架:主要因为如下:

1.mybatis通过xml或注解的形式书写sql语句需要自己编写sql语句,并将sql语句和java对象映射成最终执行的sq  hibernate几乎不用自己书写sql语句,都直接操作封装好的对象即可
2。mybatis可以控制sql的执行性能可以用于对关系模型要求不高的软件的开发吗,mybatis无法做到与数据库的无关性,如果需要实现多种的数据库的  软件的类型需要定义多套sql的映射文件工作量大
 3.hibernate 对象/关系映射能力极强,与数据库无关性好。修改不便捷,而mybatis可以自己手动处理返回的结果的类型。

关于具体的框架的使用可以访问博客:https://blog.csdn.net/qq_37256896

希望可以和大佬多多学习coding经验...

18年真的很快,感谢陪伴的每一个人。

猜你喜欢

转载自blog.csdn.net/qq_37256896/article/details/85384083
今日推荐