eclipse3.5如何配置spring web开发环境
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eclipse3.5如何配置spring web开发环境相关的知识,希望对你有一定的参考价值。
都需要安装哪些插件。能实现创建web project、新建JSP文件等功能
1、开始使用Myeclipse应为如果要研究spring基本上是用于jee开发的居多,Myeclipse已经为带有了很多常用的插件,开发起来非常便利。
2、使用Myeclipse建立项目,有两个方法可以建立项目
1.file---new---web project 输入项目名,完成
2.在左边package Explorer空白处,右击---new---web project同上建立成功
3、右击项目名---properties---java build path---Libraries 点右边的 "Add Library",在跳出的窗口中选择 “MyEclipse Libraries”,然后 把spring 2.5的都勾上。
以上项目spring jar包安装完毕
然后是配置文件:
1 打开项目的WebRoot--WEB-INF 下打开web.xml
2 就是配置你的spring 文件内容 /WEB-INF/config/localContext.xml (自己在web-inf 下建立一个config文件夹,然后建localContext.xml)
这样你就配置好了
参考技术A 刚开始学习Spring没几天,由于急用,在整和Hibernate时遇到一些问题,代码反复看过n遍,No Problem!但就是启动服务器报错,还提示偶映射文件有问题!害惨偶啦!!!最后,索性重新建了个工程,又把Spring dist目录下的3个包,和lib下的所有包(排除jakarta-commons/commons-attributes-compiler.jar、 j2ee/servlet-api.jar、j2ee/jsp-api.jar)加了一边,此时没有再加Hibernate3.2中的包了,就没有问题了!
现在要赶快进入下一步,整和Struts1.3.5! 经验:在eclipse中开发,有些包还是不能加的啊!
首先,Spring2.0.6中包含的Struts版本较老(可能是1.2.9),所以要替换掉它啦!找来相应的包,如下几个
添加 到工程的lib目录下,加入到java build path中,现在包的问题我的是已经解决了!再要考虑如何加载Spring,Struts的配置文件了!
Struts配置文件加载方法: 在web.xml中添加,
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
Spring配置文件XXXContext.xml加载方法1: 在web.xml中添加如下内容,多个spring的配置文件,逗号分开!
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml,/WEB-INF/dao-context.xml,/WEB-INF/action-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
加载方法2: 在Sturts-config.xml中加入如下代码
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml,/WEB-INF/dao-context.xml,/WEB-INF/action-context.xml"/>
</plug-in>
Spring IoC容器要对Struts的Action进行管理,ok!也就是Struts的ActionServlet捕获到*.do,转到Spring来处理用户请求,需要Sturts-config.xml中加入
<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
Struts的配置和以前一样,但可以不用加type属性.Spring的dao-context.xml来接受用户的action,
<beans>
<bean name="/user/login" class="cn.com.action.LoginAction" scope="prototype">
<property name="userValidateDao">
<ref bean="userValidateDao"/>
</property>
</bean>
</beans>
此处的name="/user/login"必须和Struts的path对应起来,而不是id属性.这样就实现了Spring对Action的管理,也就是整和了Struts1.3.5!
注:开发环境,Eclipse3.2,Hibernate3.2,Struts1.3.5,Spring2.0.3,有些包需要自己加,这点要特别注意!具体的代码就不加了,框架大概是这样的!
下一步是要整和Struts2.0.6,老师要用的!配置时像WebWork2,但我还没用过,还要加油啊!!!!
本回答被提问者采纳
如何查看spring源码
1.准备工作:在官网上下载了Spring源代码之后,导入Eclipse,以方便查询。2.打开我们使用Spring的项目工程,找到Web.xml这个网站系统配置文件,在其中找到Spring的初始化信息:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
由配置信息可知,我们开始的入口就这里ContextLoaderListener这个监听器。
在源代码中我们找到了这个类,它的定义是:
public class ContextLoaderListener extends ContextLoader
implements ServletContextListener
…
/**
* Initialize the root web application context.
*/
public void contextInitialized(ServletContextEvent event)
this.contextLoader = createContextLoader();
if (this.contextLoader == null)
this.contextLoader = this;
this.contextLoader.initWebApplicationContext(event.getServletContext());
...
该类继续了ContextLoader并实现了监听器,关于Spring的信息载入配置、初始化便是从这里开始了,具体其他阅读另外写文章来深入了解。
二、关于IOC和AOP
关于Spring IOC 网上很多相关的文章可以阅读,那么我们从中了解到的知识点是什么?
1)IOC容器和AOP切面依赖注入是Spring是核心。
IOC容器为开发者管理对象之间的依赖关系提供了便利和基础服务,其中Bean工厂(BeanFactory)和上下文(ApplicationContext)就是IOC的表现形式。BeanFactory是个接口类,只是对容器提供的最基本服务提供了定义,而DefaultListTableBeanFactory、XmlBeanFactory、ApplicationContext等都是具体的实现。
接口:
public interface BeanFactory
//这里是对工厂Bean的转义定义,因为如果使用bean的名字检索IOC容器得到的对象是工厂Bean生成的对象,
//如果需要得到工厂Bean本身,需要使用转义的名字来向IOC容器检索
String FACTORY_BEAN_PREFIX = "&";
//这里根据bean的名字,在IOC容器中得到bean实例,这个IOC容器就象一个大的抽象工厂,用户可以根据名字得到需要的bean
//在Spring中,Bean和普通的JAVA对象不同在于:
//Bean已经包含了我们在Bean定义信息中的依赖关系的处理,同时Bean是已经被放到IOC容器中进行管理了,有它自己的生命周期
Object getBean(String name) throws BeansException;
//这里根据bean的名字和Class类型来得到bean实例,和上面的方法不同在于它会抛出异常:如果根名字取得的bean实例的Class类型和需要的不同的话。
Object getBean(String name, Class requiredType) throws BeansException;
//这里提供对bean的检索,看看是否在IOC容器有这个名字的bean
boolean containsBean(String name);
//这里根据bean名字得到bean实例,并同时判断这个bean是不是单件,在配置的时候,默认的Bean被配置成单件形式,如果不需要单件形式,需要用户在Bean定义信息中标注出来,这样IOC容器在每次接受到用户的getBean要求的时候,会生成一个新的Bean返回给客户使用 - 这就是Prototype形式
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
//这里对得到bean实例的Class类型
Class getType(String name) throws NoSuchBeanDefinitionException;
//这里得到bean的别名,如果根据别名检索,那么其原名也会被检索出来
String[] getAliases(String name);
实现:
XmlBeanFactory的实现是这样的:
public class XmlBeanFactory extends DefaultListableBeanFactory
//这里为容器定义了一个默认使用的bean定义读取器,在Spring的使用中,Bean定义信息的读取是容器初始化的一部分,但是在实现上是和容器的注册以及依赖的注入是分开的,这样可以使用灵活的 bean定义读取机制。
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
//这里需要一个Resource类型的Bean定义信息,实际上的定位过程是由Resource的构建过程来完成的。
public XmlBeanFactory(Resource resource) throws BeansException
this(resource, null);
//在初始化函数中使用读取器来对资源进行读取,得到bean定义信息。这里完成整个IOC容器对Bean定义信息的载入和注册过程
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws
BeansException
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
参考技术A 在我们的生活之中,有形形色色的万物(Object),有飞机,有汽车,有轮船,还有我这个沧海一粟的java讲师。
试问:了解飞机底层架构的人,就一定能把飞机开好吗?精通汽车的构造和底层原理的人,就保证开车不出事故吗?或者反过来问,一个多年的开出租车的老司机,技术非常娴熟,但是你问他汽车的架构和底层原理,你觉得有多少老司机能准确的答出来?
那就对了,了解了,读懂了spring底层源码的程序员,我们并不能保证他就是一个好程序员,我心中的一个好的程序员是要能够提出解决方案的程序员,就好比清华北大确实只是个过程,最后的目的,是为国家为人民做出奉献才是我们活着的价值。所以说我并不看好去阅读spring源码这个行为。闻道有先后,术业有专攻,我们不是提供底层技术的人!绝大多数的程序员,我以为正确的做法是站在巨人的肩膀上,把前辈留下来的精髓发扬光大才是正道,简而言之,把怎么用,和为什么要这么用学好才是大多数程序员学习技术的关键。就好比去学驾照的时候,教练只需要关心你是否会开车,是否遵守交通规则,并不关心你是否了解汽车是如何在路上跑起来的。
一个人的精力和时间都是有限的,分细了来说,开发者就是技术的使用者,重点在于如何正确熟练的使用,而不是一昧地去关心底层原理,如果要完全读懂spring源码,首先,英语就得很厉害吧,其次,得花多少时间?就算读懂了,那收获和付出也不成正比,大把大把的时间为何不花在java更多,更高级,更有意义的技术上呢?笔者此话并不是说spring源码读了没用,只是让我们的时间更有价值,例如分布式微服务,区块链技术,大数据,python,作为新时代的IT佼佼者,我们是否应该随着时代的脚步,迎接崭新的未来?我奉劝大多数人,不必去看spring源码,除非你确实感兴趣作为技术研究,这样是可以的。一个正常的工作者,是不建议花宝贵的时间去看的,那学生就更不应该去看了。此话怎讲?我以为,学生应以学业为重,士不可不弘毅,任重而道远,首先应该扩展其知识的广度,和技术的娴熟使用,再培养学生独立解决问题的能力,沟通协作的能力,最后才考虑技术的深度。
笔者在多年前也被面试过很多很多问题,但是从来没有一个面试官会问spring底层源码,曾经阿里巴巴的架构师也面试过我,直到后来,我成为了面试官,当我去面试别人的时候,我也不会去问spring源码这些东西,因为99.9%企业招人进来,是要做事实的,不是让你去研究一个技术,绝大多数更在乎的是利用现有的技术,去完成一些项目功能。除了世界上极少数著名的企业他们需要技术研究员,才对这些有所要求,那要招这类人才,估计至少也是名校研究生以上吧,所以普通程序开发者,我觉得学好技术的正确与熟练使用,才是重中之重!
不宜本末倒置,不宜好高骛远。笔者从事Java行业以来,真要说全阶段全程全栈都精通的人,应属风毛菱角,故此,更应让所学知识运筹帷幄,举一反三,千里炉火,万里纯青。以上篇幅在说我对阅读spring源码的一些强烈建议,最终结论,是不看、不读就此作罢。
那有的感兴趣的人非要阅读呢?
Ok,其实阅读spring源码并不算很难。
首先,应该去官网spring.io阅读写spring框架的理念,就好比读一本书,要阅读这本书的纲要,要明白为什么要设计spring架构。
然后,应该分模块阅读,先从核心模块开始阅读:如:
IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP.
那么在阅读的时候,英文能力差的话,可以使用翻译软件翻译成中文阅读,毕竟不是每个程序员英语都很棒,毕竟中国人看中国字更容易去理解。当然,有些翻译过来的并不准确,这个时候可以利用百度,去查看那段不理解的地方。
然后,把spring的jar包下载下来,利用IDEA打开,可以使用download资源,会发现,每个方法上面都会有详细的英文注释。一边看官方的说明,一边查看代码的编写,不难发现,非常多的代码写得很精辟,所以十分考验一个程序员的java基本功,特别是反射,JDK\CGLIB代理,和java常用的设计模式等。
以上是关于eclipse3.5如何配置spring web开发环境的主要内容,如果未能解决你的问题,请参考以下文章
如何防止spring-web的spring-boot自动配置?
从 Eclipse 3.5 在 Tomcat 6 上运行 Spring + Maven2 项目时出现 ClassNotFoundException