Spring 03 使用Spring开发web项目

使用Spring开发web项目(STS 3.0)

目录

前言

一、如何使用STS3.0开发web项目

二、拆分配置文件 

1.Java项目与web项目拆分

2.Spring整合项目

总结


前言

spring开发web项目在STS3.0中的配置基本和eclipse配置Tomcat一致。spring开发web项目主要考虑的问题在于如何将IOC容器的一次性实现新建所有bean对应的对象,由于web项目中没有相应的 main函数,不能在每一层需要调用该IOC时 都 实现一次 该代码 片段:

  ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applictionContext.xml");
		 

可以考虑在Javaweb项目中的web.xml中配置对应的 监听器,实现web项目启动自动执行IOC初始化,因此,spring官方提供了  spring-web-5.2.6.RELEASE.jar 实现该功能。


提示:以下是本篇文章正文内容,下面案例可供参考

一、如何使用STS3.0开发web项目

在sts3.0中新建 动态web项目与eclipse基本一样,引入spring对应的jar包后,如果想实现在该web项目中实现一次启动,处处可以使用IOC容器初始化新建的bean对应的对象,需要对web.xml进行一些配置,在 webapp标签下新建标签listener标签,在其中新建子标签 ,搜索快捷键为 Ctrl+shift+T,查找 ContextLoaderListener,进行点击后如图所示:

Spring 03 使用Spring开发web项目_第1张图片

复制红框中的全类名,之后写入  中。

...........

 
  org.springframework.web.context.ContextLoaderListener
 
 

  

之后对将 IOC容器(此处指 applicationContext.xml 配置文件)的具体位置也配置到web.xml中。  标签与   同级,子标签 的值要注意为某个固定值。其来源为:首先关联上面配置时的源码关联(spring-web-source.jar),找到对应类中的父类ContextLoader,如图:

Spring 03 使用Spring开发web项目_第2张图片

 点击进去,发现第101行:

Spring 03 使用Spring开发web项目_第3张图片

其中 contextConfigLocation  就是子标签 的值。该值代表着寻找 applicationContext.xml 配置文件的位置,该位置的值为 classpath:applicationContext.xml ,其中classpath 代表着配置文件 applicationContext.xml 在类路径 src下。

......
 
 contextConfigLocation
 
  classpath:applicationContext.xml
   
 

 
 
  org.springframework.web.context.ContextLoaderListener
 

  

applicationContext.xml 在src路径下,也就是在类路径下,因此前面有classpath: 修饰。

或者直接使用约定的方式,将标签   删除,将 applicationContext.xml文件移动到web-inf文件夹下,注意,该配置文件只能叫 applicationContext.xml,并且位置必须固定。

Spring 03 使用Spring开发web项目_第4张图片

二、拆分配置文件 

1.Java项目与web项目拆分

Java项目不存在拆分与否,配置文件想如何命名都没问题。

  ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applictionContext001.xml");
  ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applictionContext002.xml");  
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applictionContext003.xml");

但是在web项目中对配置文件(applicationContext.xml)的拆分与合并,需要进行配置(按功能或者三层模型拆分):

 Spring 03 使用Spring开发web项目_第5张图片

将多个配置文件合并的方法为:  

Spring 03 使用Spring开发web项目_第6张图片

也可以直接在 applicationContext.xml 文件中直接使用 import标签中引入相关的配置文件。

2.Spring整合项目

在以往的项目中,项目调用Dao,Service层的对象都是直接使用new的方式进行,之后调用相应对象中的参数。现使用 spring IOC容器实现依赖注入,即可对项目代码实现Spring整合。如果不将IOC容器加载到Tomcat容器中,启动项目后网页向servlet发送请求就会报错(空指针异常),要想解决,就需要在servlet进行初始化时(init方法)将IOC容器加载到web容器中。

Spring 03 使用Spring开发web项目_第7张图片

代码如下(示例):


/**
 * Servlet implementation class QueryServlet , init() 初始化IOC对象
 */
@WebServlet("/QueryServlet")
public class QueryServlet extends HttpServlet implements Servlet {
	  
		IServiceQuery serviceQuery   ;// = new ServiceQueryImpl();// 
		
     @Override
    	public void init( ) throws ServletException {
    		// TODO = new ClassPathXmlApplicationContext, web项目获取 IOC容器(上下文)
    		 ApplicationContext  context = 
    		WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
    		 serviceQuery =(IServiceQuery)context.getBean("serviceQueryBeanId") ;
     }

		public void setServiceQuery(IServiceQuery serviceQuery) {
			this.serviceQuery = serviceQuery;
		}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String queryResult = serviceQuery.serviceQuery(96);
	request.setAttribute("infor", queryResult);
	request.getRequestDispatcher("result.jsp").forward(request, response);
	}

}

在web项目中不在通过new对象(ApplicationContext)该处使用固有的对象与方法: WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());


总结

spring整合web 项目,如何将对象自动注入到web中需要进行许多繁琐的配置,之后使用springMVC将会将该IOC自动装载到web容器中,不必像servlet原生配置如此麻烦。

你可能感兴趣的:(Spring,spring,java)