由于Spring 2.5全面支持annotation方式,因此大大减少了XML的配置,提高了程序代码的维护和生产效率。下面是我做的一个简单的Hello World!,使用Spring mvc。所有配置全部用annotation,大家可以看看是多么的简单。

首先还是配置好web.xml文件,主要添加的代码有:
<listener>
		<listener-class>
			org.springframework.web.util.Log4jConfigListener
		</listener-class>
	</listener>

	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<servlet>
		<servlet-name>sim</servlet-name>
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>sim</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>


以上的配置和以前是一样的,所以没什么好说的。
然后接着我们建立一个applicationContext.xml,作为SPRING的配置文件。以往版本里面SPRING的这个配置文件往往随着程序的增加而越来越臃肿,就我本人来说就十分不喜欢这种方式。因为程序员需要花费大量的时间去管理和维护自己的XML文件,大大的减少了程序员的生产效率。并且由于大量的XML文件,使得新加入团队的人员学习成本的增加,往往造成了很多工时上的浪费。终于,2.5版本开始支持了annotation,使得这个问题可以得到一定的解决。那么好,下面我们来看看现在的配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	<context:annotation-config />
</beans>

很好,很强大,简单一句话搞定。
搞定了IOC的配置文件,那么我们需要一个MVC的配置XML,如果没有annotation,那么这个文件一样会越来越臃肿。然后现在呢?
sim-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
				http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	
	<!--
		- The controllers are autodetected POJOs labeled with the @Controller annotation.
	-->
	<context:component-scan base-package="com.sofmit.sim.wr.web"/>
	
	<!--
		- This bean configures the 'prefix' and 'suffix' properties of 
		- InternalResourceViewResolver, which resolves logical view names 
		- returned by Controllers. For example, a logical view name of "vets" 
		- will be mapped to "/WEB-INF/jsp/vets.jsp".
	-->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
</beans>

同样十分简单,在这里只需要指定好CONTROLLER的包就可以了。

现在配置已经全部OK了,是不是感觉很轻松?哈哈,原来annotation真是如此美妙,为我们节约了大量的配置XML的时间。
下面就只需要一个controller和一个JSP页面就可以完成我们这儿APPLICATION了,那么我们继续。
首先就是controller的定义。
/**
 * com.sofmit.sim.wr.web
 * Hello.java
 */
package com.sofmit.sim.wr.web;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * @author TianYe
 * 2008-2-14
 */
@Controller
@RequestMapping("/hello.html")
public class Hello {

	@RequestMapping(method = RequestMethod.GET)
	public String sayHello(Model model){
		model.addAttribute("say","hello");
		return "test";
	}
}

在这里面,使用@Controller定义此类是一个Spring MVC的controller。然后定义好访问的路径"/hello.html"。在方法上面定义好通过GET方式访问时调用我们的sayHello方法,在方法中定义好要传给JSP页面的变量"say"以及内容"hello",然后定位到页面"test"。
一个简单的controller就实现了。

剩下的就没有什么技术含量了,就是一个简单的JSP页面。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h2>Test Page say:${say}</h2>


然后我们跑跑程序,看看页面,耶!!结果出来了!真爽!

作者:WIWolf 2008-2-15
评论
wiwolf 2008-02-25
java.lang.ClassNotFoundException: org.springframework.web.content.ContextLoaderListener

没有找到spring包,请再检查一下
laserdance 2008-02-19
我运行了您写的程序,我在myeclipse6.0中运行报错
008-2-19 10:12:46 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.13
2008-2-19 10:12:48 org.apache.catalina.core.StandardContext listenerStart
严重: Error configuring application listener of class org.springframework.web.content.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.content.ContextLoaderListener
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3770)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
	at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2008-2-19 10:12:48 org.apache.catalina.core.StandardContext listenerStart
严重: Skipped installing application listeners due to previous error(s)
2008-2-19 10:12:48 org.apache.catalina.core.StandardContext start
严重: Error listenerStart

请问下是什么原因,我检查过了,jar包不少
发表评论

您还没有登录,请登录后发表评论

wiwolf
搜索本博客
最近加入圈子
存档
最新评论