【JavaWeb项⽬实现】+【常⽤框架】(待整理)
此⽂章已废弃,更详细资料:
1. 开发必备⼯具:
1. Maven
Maven 核⼼功能就是合理叙述项⽬间的依赖关系,通过l配置jar包信息。⼀般使⽤三种⽅式:本地仓库、第三⽅仓库、中央仓库。
2. Svn/git
2. SSM:  Spring + SpringMVC + MyBatis
1、Spring:是⼀个开源的Java/ Java EE全功能栈应⽤程序框架。轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器框架。可通过AOP和log4j实现⾃定义⽇志系统。
①、基于JavaBeans 的采⽤控制反转的配置管理,使得应⽤程序的组建更加快捷简易。
②、⼀个可⽤于从applet到JavaEE不同运⾏环境的核⼼Bean⼯⼚。
Spring:
依赖注⼊是⼀种思想,或者说是⼀种设计模式,在java中通过反射机制实现,与具体框架⽆关,依赖注⼊(DI)有三种⽅式:接⼝注⼊、Setter注⼊、构造⽅法注⼊。
依赖注⼊ 是为了减少⽬的组件之间的 耦合度,使开发变得简单。
Spring: 基于xml⽂件配置
<!--配置事务管理器-->
<Property name=”transactionManger”>
<!--配置事务属性>
<Property name=”transactionAttributes”>
<Prosp>
声明式事务管理建⽴在AOP上,其本质是对⽅法前后进⾏拦截。在⽬标⽅法开始之前创建或者加⼊⼀个事务,在执⾏完⽬标⽅法之后根据执⾏情况提交或者回滚事务。
优点:不需要通过编程的⽅式管理事务,只需要在配置⽂件中做相关的事务规则声明(或通过@Transactional注解⽅式将事务应⽤到逻辑中)。
2、SpringMVC:分离了控制器、模型对象、分派器以及程序对象的⾓⾊。易于其他的view框架,采⽤IoC便于测试。MVC作为WEB项⽬开发的核⼼环节,C(控制器)、V(视图、⽤户客户端)、M(模型、业务)。
MVC的功能实现 图⽰:
DispatcherServlet 作为SpringMVC的前端控制器,负责接收⽤户请求并根据请求返回视图给⽤户,业务操作在service层。
3、MyBatis
MyBatis:是⼀个基于Java的持久层框架,⽀持定制化SQL、存储过程以及⾼级映射。避免了⼏乎所有的JDBC代码和⼿动设置参数以及获取结果集。MyBatis可以使⽤简单的XMl或注解来配置和映射原⽣信息,将接⼝和Java的POJOs(普通Java对象)映射成数据库中的记录。
MyBatis的功能:
4、JavaWeb项⽬:
天猫商城项⽬梳理:
整体的架构,springMVC的实现,三个重要的功能实现,三个主要的难点。
SSM框架的⼀般实现流程图:
⾯试题:
1.Spring中AOP的应⽤场景、Aop原理、好处?
答:AOP--Aspect Oriented Programming⾯向切⾯编程;⽤来封装横切关注点,具体可以在下⾯的场景中使⽤:
Authentication 权限、Caching 缓存、Context passing 内容传递、Error handling 错误处理、Lazy loading懒加载、Debugging调试、logging, tracing, profiling and monitoring 记录跟踪优化 校准、Performance optimization 性能优化、Persistence 持久化、Resource pooling 资源池、Synchronization 同步、Transactions 事务
原理:AOP是⾯向切⾯编程,是通过动态代理的⽅式为程序添加统⼀功能,集中解决⼀些公共问题。
优点:1.各个步骤之间的良好隔离性耦合性⼤⼤降低
2.源代码⽆关性,再扩展功能的同时不对源码进⾏修改操作
2.Spring中IOC的作⽤与原理?对象创建的过程。
答:IOC--Inversion of Control控制反转。当某个⾓⾊需要另外⼀个⾓⾊协助的时候,在传统的程序设计过程中,通常由调⽤者来创建被调⽤者的实例对象。但在spring中创建被调⽤者的⼯作不再由调⽤者来完成,因此称为控制反转。创建被调⽤者的⼯作由spring来完成,然后注⼊调⽤者 直接使⽤。
3.介绍spring框架
它是⼀个⼀站式(full-stack全栈式)框架,提供了从表现层-springMVC到业务层-spring再到持久层-spri
ngdata的⼀套完整的解决⽅案。我们在项⽬中可以只使⽤spring⼀个框架,它就可以提供表现层的mvc框架,持久层的Dao框架。它的两⼤核⼼IoC和AOP更是为我们程序解耦和代码简洁易维护提供了⽀持。
4.Spring常见创建对象的注解?
答:
@Component=>将这个类交给 spring管理
@Controller =>标注 这是个 控制层
@ Service => 标注 这是个 服务层
@ Repository =>标注数据访问对象,例如Dao对象
5.Spring中⽤到的设计模式
答:简单⼯⼚、⼯⼚⽅法、单例模式、适配器、包装器、代理、观察者、策略、模板⽅法
详细介绍:请参考本微博的:开发常⽤设计模式
6.Spring的优点?
答:
1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
2.可以使⽤容易提供的众多服务,如事务管理,消息服务等
3.容器提供单例模式⽀持
4.容器提供了AOP技术,利⽤它很容易实现如权限拦截,运⾏期监控等功能
5.容器提供了众多的辅助类,能加快应⽤的开发
6.spring对于主流的应⽤框架提供了集成⽀持,如hibernate,JPA,Struts等
7.spring属于低侵⼊式设计,代码的污染极低
8.独⽴于各种应⽤服务器
9.spring的DI机制降低了业务对象替换的复杂性
10.Spring的⾼度开放性,并不强制应⽤完全依赖于Spring,开发者可以⾃由选择spring 的部分或全部
7.Spring Bean的作⽤域之间有什么区别?
Spring容器中的bean可以分为5个范围。所有范围的名称都是⾃说明的,但是为了避免混淆,还是让我们来解释⼀下:
singleton:这种bean范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有⼀个bean的实例,单例的模式由bean factory⾃⾝来维护。
prototype:原形范围与单例范围相反,为每⼀个bean请求提供⼀个实例。
request:在请求bean范围内会每⼀个来⾃客户端的⽹络请求创建⼀个实例,在请求完成以后,bean会失效并被垃圾回收器回收。
Session:与请求范围类似,确保每个session中有⼀个bean的实例,在session过期后,bean会随之失效。
global-session:global-session和Portlet应⽤相关。当你的应⽤部署在Portlet容器中⼯作时,它包含很多portlet。如果你想要声明让所有的portlet共⽤全局的存储变量的话,那么这全局变量需要存储在global-session中。
全局作⽤域与Servlet中的session作⽤域效果相同。
8.Spring管理事务有⼏种⽅式?
答:有两种⽅式:
1、编程式事务,在代码中硬编码。(不推荐使⽤)
2、声明式事务,在配置⽂件中配置(推荐使⽤)
声明式事务⼜分为两种:
a、基于XML的声明式事务
b、基于注解的声明式事务
9.spring中⾃动装配的⽅式有哪些?
答:1、 No:即不启⽤⾃动装配。
2、 byName:通过属性的名字的⽅式查JavaBean依赖的对象并为其注⼊。⽐如说类Computer有个属
性printer,指定其autowire属性为byName后,Spring IoC容器会在配置⽂件中查id/name属性为printer的bean,然后使⽤Seter⽅法为其注⼊。
3、 byType:通过属性的类型查JavaBean依赖的对象并为其注⼊。⽐如类Computer有个属性printer,类型为Printer,那么,指定其autowire属性为byType后,Spring IoC容器会查Class属性为Printer的bean,使⽤Seter⽅法为其注⼊。
spring aop应用场景4、 constructor:通byType⼀样,也是通过类型查依赖对象。与byType的区别在于它不是使⽤Seter⽅法注⼊,⽽是使⽤构造⼦注⼊。
5、 autodetect:在byType和constructor之间⾃动的选择注⼊⽅式。
6、 default:由上级标签<beans>的default-autowire属性确定。
10.spring中的核⼼类有那些,各有什么作⽤?
答:BeanFactory:产⽣⼀个新的实例,可以实现单例模式
BeanWrapper:提供统⼀的get及set⽅法
ApplicationContext:提供框架的实现,包括BeanFactory的所有功能
11.Bean的调⽤⽅式有哪些?
答:有三种⽅式可以得到Bean并进⾏调⽤:
1、使⽤BeanWrapper
HelloWorld hw=new HelloWorld();
BeanWrapper bw=new BeanWrapperImpl(hw);
bw.setPropertyvalue(”msg”,”HelloWorld”);
system.out.PropertyCalue(”msg”));
2、使⽤BeanFactory
InputStream is=new FileInputStream(”l”);
XmlBeanFactory factory=new XmlBeanFactory(is);
HelloWorld hw=(HelloWorld) Bean(”HelloWorld”);
system.out.Msg());
3、使⽤ApplicationConttext
ApplicationContext actx=new FleSystemXmlApplicationContext(”l”);
HelloWorld hw=(HelloWorld) Bean(”HelloWorld”);
System.out.Msg());
12.什么是IOC,什么⼜是DI,他们有什么区别?
答:依赖注⼊DI是⼀个程序设计模式和架构模型, ⼀些时候也称作控制反转,尽管在技术上来讲,依赖注⼊是⼀个IOC的特殊实现,依赖注⼊是指⼀个对象应⽤另外⼀个对象来提供⼀个特殊的能⼒,例如:把⼀个 数据库连接已参数的形式传到⼀个对象的结构⽅法⾥⾯⽽不是在那个对象内部⾃⾏创建⼀个连接。控制反转和依赖注⼊的基本思想就是把类的依赖从类内部转化到外 部以减少依赖
应⽤控制反转,对象在被创建的时候,由⼀个调控系统内所有对象的外界实体,将其所依赖的对象的引⽤,传递给它。也可以说,依赖被注⼊到对象中。所 以,控制反转是,关于⼀个对象如何获取他所依赖的对象的引⽤,这个责任的反转。
13.spring有两种代理⽅式:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。