`
itwangxinli
  • 浏览: 146107 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SPRING ... A JUMP START

阅读更多

SPRING ... A JUMP START<o:p> </o:p>
----------------------- <o:p></o:p>
by Farihah Noushene B.E.,<o:p> </o:p>
-------------------------<o:p> </o:p>

                         

PART-II<o:p> </o:p>
-----------------
<o:p></o:p>

 

(PUBLISHED IN DEVELOPER IQ - September2005) <o:p></o:p>
The Spring Framework comes in the form of ZIP file with the necessary jars, examples etc., The Spring framework can be downloaded from http://www.springframework.org. There will be two zip files one with dependencies and other without. The spring framework with dependencies is larger and includes all dependent libraries. Download Spring framework 1.2 without dependency and unzip on the hard disk as spring12<o:p> </o:p>

Inside the folder spring12 we can find 7 folders. The name and the contents of all the folders are given below,<o:p> </o:p>
1. dist: It contains various Spring distribution jar files.<o:p> </o:p>
2. docs: It contains general documentation and API javadocs.<o:p> </o:p>
3. mock: It contains mock JNDI contexts and a set of servlet API mock objects.<o:p> </o:p>
4. samples: It contains demo applications and skeletons.<o:p> </o:p>
5. src: It contains the Java source files for the framework.<o:p> </o:p>
6. test: It contains the Java source files for Spring's test suite.<o:p> </o:p>
7. tiger: It contains JDK1.5 examples and test suite.<o:p> </o:p>

Inside the "dist" directory, we can find all the jar files necessary for compiling and executing the program. The jar files and its contents are listed below:<o:p> </o:p>
1.  spring.jar : It contains the entire Spring framework including everything in the other JAR files also.<o:p> </o:p>
2.  spring-core.jar : It contains the core Spring container and its utilities.<o:p> </o:p><o:p></o:p>
3.  spring-beans.jar : It contains the bean Spring container and JavaBeans support utilities.<o:p> </o:p>
<o:p></o:p>4.  spring-aop.jar : It contains Spring's AOP framework, source-level metadata support, AOP Alliance interfaces etc.,<o:p> </o:p>
5.  spring-context.jar : It contains application context, validation framework, JNDI, templating support and scheduling.<o:p> </o:p>
6.  spring-dao.jar : It contains DAO support and transaction infrastructure.<o:p> </o:p>
7.  spring-jdbc.jar : It contains the JDBC support.<o:p> </o:p>
8.  spring-support.jar : It contains JMX support, JCA support, scheduling support, mail support and caching support.<o:p> </o:p>
9.  spring-web.jar : It contains the web application context, multipart resolver, Struts support, JSF support and web utilities.<o:p> </o:p>
10. spring-webmvc.jar : It contains the framework servlets, web MVC framework, web controllers and web views.<o:p> </o:p>
11. spring-remoting.jar :It contains remoting support, EJB support and JMS support.<o:p> </o:p>
12. spring-orm.jar : It contains iBATIS SQL Maps support, Apache OJB support, TopLink support and JDO support.<o:p> </o:p>
13. spring-hibernate.jar : It contains Hibernate 2.1 support, Hibernate 3.x support.<o:p> </o:p>
14. spring-mock.jar : It contains JNDI mocks, Servlet API mocks and JUnit support.<o:p> </o:p>

--------------------------------------------<o:p> </o:p>

Now we will run a greeter example in Spring. <o:p></o:p>

f:\>md springdemo <o:p></o:p>
f:\>cd springdemo<o:p> </o:p>

As the entire Spring Framework is included in spring.jar. We use that to run our examples. <o:p></o:p>
Copy spring.jar from spring12\dist folder to the working folder. Also copy commons-logging.jar from tomcat41\server\lib to the working directory.<o:p> </o:p>

f:\springdemo>set path=c:\windows\command;g:\jdk1.5\bin<o:p> </o:p>
(* Set path for jdk1.5 or jdk1.4.2 only. )<o:p> </o:p>
f:\springdemo>set classpath=f:\springdemo;<o:p> </o:p>
f:\springdemo\spring.jar;<o:p> </o:p>

 f:\springdemo\commons-logging.jar<o:p> </o:p>

 <o:p> </o:p>For a typical Spring Application we need the following files<o:p> </o:p>
1. An interface that defines the functions.<o:p> </o:p>
2. An Implementation that contains properties, its setter and getter methods, functions etc., <o:p></o:p>
3. A XML file called Spring configuration file.<o:p> </o:p>
4. Client program that uses the function.<o:p> </o:p>

Edit
1. hello.java<o:p> </o:p>
2. helloimpl.java<o:p> </o:p>
3. hello.xml<o:p> </o:p>
4. helloclient.java<o:p> </o:p>

 <o:p> </o:p>//f:\springdemo\hello.java<o:p> </o:p>

public interface hello<o:p> </o:p>
{<o:p> </o:p>
   public String sayhello(String a);<o:p> </o:p>
}<o:p> </o:p>

--------------------------------------------<o:p> </o:p>

//f:\springdemo\helloimpl.java<o:p> </o:p>
public class helloimpl implements hello<o:p> </o:p>

{<o:p> </o:p>

      private String greeting;<o:p> </o:p>
      public helloimpl()<o:p> </o:p>

      {<o:p> </o:p>

      }<o:p> </o:p>

      public helloimpl(String a)<o:p> </o:p>

      {<o:p> </o:p>

      greeting=a;<o:p> </o:p>

      } <o:p></o:p>

      public String sayhello(String s)<o:p> </o:p>

      {<o:p> </o:p>

           return greeting+s;<o:p> </o:p>

      }<o:p> </o:p>

      public void setGreeting(String a)<o:p> </o:p>

      {<o:p> </o:p>

           greeting=a;<o:p> </o:p>

      }<o:p> </o:p>

}<o:p> </o:p>

--------------------------------------------<o:p> </o:p>

//f:\springdemo\hello.xml<o:p> </o:p>

 <o:p> </o:p><?xml version="1.0" encoding="UTF-8"?><o:p> </o:p>

<!DOCTYPE beans PUBLIC <o:p></o:p>

"-//SPRING//DTD BEAN//EN"<o:p> </o:p>

"http://www.springframework.org/dtd/spring-beans.dtd"><o:p> </o:p>

 <o:p> </o:p><beans><o:p> </o:p>

   <bean id="hello"<o:p> </o:p>

         class="helloimpl"><o:p> </o:p>

   <property name="greeting"><o:p> </o:p>

       <value>Good Morning!...</value><o:p> </o:p>

   </property><o:p> </o:p>

   </bean><o:p> </o:p>

</beans><o:p> </o:p>

--------------------------------------------<o:p> </o:p>

//f:\springdemo\helloclient.java<o:p> </o:p>
import java.io.*;<o:p> </o:p>
import org.springframework.beans.factory.*;<o:p> </o:p>
import org.springframework.beans.factory.xml.*; <o:p></o:p>
import org.springframework.core.io.*;<o:p> </o:p>

public class helloclient  <o:p></o:p>

{<o:p> </o:p>

   public static void main(String args[])  throws Exception<o:p> </o:p>

   {<o:p> </o:p>

      try<o:p> </o:p>

      {<o:p> </o:p>

         System.out.println("please Wait.");<o:p> </o:p>
  
      Resource     res = new  ClassPathResource("hello.xml");<o:p> </o:p>
  
      BeanFactory  factory = new  XmlBeanFactory(res);<o:p> </o:p>
  
      hello bean1 = (hello)factory.getBean("hello");<o:p> </o:p>
  
     String s = bean1.sayhello(args[0]);<o:p> </o:p>
  
     System.out.println(s);<o:p> </o:p>

      }<o:p> </o:p>

      catch(Exception e1)<o:p> </o:p>

            { System.out.println(""+e1); }<o:p> </o:p>

   }<o:p> </o:p>

}<o:p> </o:p>

-------------------------------------------<o:p> </o:p>

To run:<o:p> </o:p>
f:\springdemo>javac hello.java<o:p> </o:p>
f:\springdemo>javac helloimpl.java<o:p> </o:p>
f:\springdemo>javac helloclient.java<o:p> </o:p>
f:\springdemo>java helloclient "sam"<o:p> </o:p>

We will get the output as follows:<o:p> </o:p>
please wait..<o:p> </o:p>
Aug 5, 2002 2:10:56 AM org.springframework.  <o:p></o:p>
beans.factory.xml.XmlBeanDefinitionReader<o:p> </o:p>
loadBeanDefinitions<o:p> </o:p>

INFO: Loading XML bean definitions from  <o:p></o:p>
class path resource [hello.xml]<o:p> </o:p>
Aug 5, 2002 2:10:57 AM org.springframework.
beans.factory.support.<o:p> </o:p>
AbstractBeanFactorygetBean<o:p> </o:p>

INFO: Creating shared instance of singleton <o:p></o:p>
bean 'hello'<o:p> </o:p>
Good Morning!...sam<o:p> </o:p>

------------------------------------<o:p> </o:p>

Thus we have run our first Spring program. Here helloimpl implements the hello interface. Although it is not necessary to hide the implementation behind an interface, it is recommended as a way to seperate implementation from interface. helloimpl has a single property greeting. This property can be set in two different ways: by property's setter method or  by the constructor. The XML file hello.xml declares the instance of helloimpl.java in the spring container and configures its property greeting with the value 'Good Morning!...'<o:p> </o:p>

The root of the hello.xml file is the <beans> element, which is the root element<o:p> </o:p>
of any Spring configuration file. The <bean> element is used to tell the Spring container about the class and how it should be configured. Here, the id attribute takes the interface name and the class attribute specifies the bean抯 fully qualified class name.<o:p> </o:p>

Within the <bean> element, the <property> element is used to set the property, in this case the greeting property. By using <property>, we抮e telling the Spring container to call setGreeting() while setting the property. The value of the greeting is defined within the <value> element. Here we have given 'Good Morning!...' as the value. <o:p></o:p>

The container instantiates the 'helloimpl' based on the XML definition as, <o:p></o:p>

helloimpl hello = new helloimpl();<o:p> </o:p>
helloimpl.setGreeting("Good Morning!...");<o:p> </o:p>

Similarly, greeting property may be set through the single argument constructor of 'helloimpl' as,<o:p> </o:p>
<bean id="hello"  class="helloimpl"><o:p> </o:p>
<constructor-arg><o:p> </o:p>
<value>Good Morning!...</value><o:p> </o:p>
</constructor-arg><o:p> </o:p>
</bean><o:p> </o:p>

Now the container instantiates the 'helloimpl' based on the XML definition as, <o:p></o:p>

helloimpl
hello = new <o:p></o:p>
helloimpl("Good Morning...");<o:p> </o:p>

In the client program, 'BeanFactory' class is used which is the Spring container. Then the 'getBean()' method is called to get the reference to the 'hello'. With this reference, sayhello() method is called.<o:p> </o:p>

------------------------------------------<o:p> </o:p>

We can also use a frame client. The code is very much similar to console client except the GUI code.<o:p> </o:p>

//f:\springdemo\helloframe.java<o:p> </o:p><o:p></o:p>

import java.io.*;<o:p> </o:p>

import java.awt.*;<o:p> </o:p>

import org.springframework.beans.factory.*;<o:p> </o:p>

import org.springframework.beans.factory.xml.*;<o:p> </o:p>

import org.springframework.core.io.*;<o:p> </o:p><o:p></o:p>

public class helloframe  extends Frame<o:p> </o:p>

{<o:p> </o:p>

TextField     text1;<o:p> </o:p>

TextArea      area1;<o:p> </o:p>

Label         label1;<o:p> </o:p>

Button        button1;<o:p> </o:p><o:p></o:p>

   public static void main(String args[])<o:p> </o:p>

   {<o:p> </o:p>

      helloframe   app = new helloframe();<o:p> </o:p>

      app.setSize(700,500);<o:p> </o:p>

      app.setVisible(true);<o:p> </o:p>

   }<o:p> </o:p>

   helloframe()<o:p> </o:p>

   {<o:p> </o:p>

      setLayout(new FlowLayout());<o:p> </o:p>

      setBackground(Color.green);<o:p> </o:p><o:p></o:p>

      label1=new Label("Type Name: ");<o:p> </o:p>

      text1=new TextField(25);<o:p> </o:p>

      area1=new TextArea(10,50);<o:p> </o:p>

      button1=new Button("Exit");<o:p> </o:p>

      button1.setBackground(Color.red);<o:p> </o:p><o:p></o:p>

      add(label1);<o:p> </o:p>

      add(text1);          <o:p></o:p>

      add(area1);          <o:p></o:p>

      add(button1);<o:p> </o:p>

   }<o:p> </o:p>

   public boolean action (Event e,Object c)<o:p> </o:p>

   {<o:p> </o:p>

      if(e.target==text1)<o:p> </o:p>

      {<o:p> </o:p>

         try<o:p> </o:p>

         {<o:p> </o:p>

            area1.append("Please Wait..\n");<o:p> </o:p><o:p></o:p>

            Resource  res = new  ClassPathResource("hello.xml");                 <o:p></o:p><o:p></o:p>

            BeanFactory  factory = new  XmlBeanFactory(res);<o:p> </o:p><o:p></o:p>

            hello bean1 = (hello)factory.getBean("hello");<o:p> </o:p><o:p></o:p>

            String s = bean1.sayhello(text1.getText());<o:p> </o:p>

            area1.append(s);<o:p> </o:p>

         }<o:p> </o:p>

         catch(Exception e1)<o:p> </o:p>

                    {area1.append(""+e1);}<o:p> </o:p>

      }<o:p> </o:p>

      if(e.target==button1)<o:p> </o:p>

      {<o:p> </o:p>

         System.exit(0);<o:p> </o:p>

      }<o:p> </o:p>

      return true;<o:p> </o:p>

   }     <o:p></o:p>

Then compile and run the frame client program. We will a textbox, a exit button and a text area. Type a name (say 'tom') in text area and press enter. 'Good Morning!... tom' will appear in the text area<o:p> </o:p>

--------------------------------------------<o:p> </o:p>

    Next we shall see how to run this program as a servlet. Consider Tomcat-5 is installed in g drive.
   
First copy g:\spring12\spring.jar to g:\tomcat5\common\lib and start tomcat server.
    Then set classpath as shown below and edit the servletclient.java.<o:p> </o:p>

     f:\springdemo>set classpath=f:\springdemo;<o:p> </o:p>

    f:\springdemo\spring.jar;<o:p> </o:p>

    f:\springdemo\commons-logging.jar;<o:p> </o:p>

    g:\tomcat5\common\lib\servlet-api.jar<o:p> </o:p><o:p></o:p>

//f:\springdemo\servletclient.java<o:p> </o:p><o:p></o:p>

import java.io.*;<o:p> </o:p>

import org.springframework.beans.factory.*;<o:p> </o:p>

import org.springframework.beans.factory.xml.*;<o:p> </o:p>

import org.springframework.core.io.*;<o:p> </o:p>

import javax.servlet.*;<o:p> </o:p>

import javax.servlet.http.*;<o:p> </o:p><o:p></o:p>

public class servletclient extends HttpServlet<o:p> </o:p>

{<o:p> </o:p>

   public void doPost(HttpServletRequest req,HttpServletResponse resp)<o:p> </o:p>

        throws ServletException,IOException<o:p> </o:p>

 <o:p> </o:p>

   {<o:p> </o:p>

      resp.setContentType("text/html");<o:p> </o:p>

      PrintWriter out =resp.getWriter();<o:p> </o:p>

 <o:p> </o:p>

      String a = req.getParameter("text1");<o:p> </o:p>

      try<o:p> </o:p>

      {<o:p> </o:p>

         System.out.println("Please wait.");<o:p> </o:p>

 <o:p> </o:p>

         Resource  res = new  ClassPathResource("hello.xml");<o:p> </o:p>

         System.out.println("Resource ok");<o:p> </o:p>

 <o:p> </o:p>

         BeanFactory  factory = new  XmlBeanFactory(res);<o:p> </o:p>

         System.out.println("BeanFactory ok");<o:p> </o:p>

 <o:p> </o:p>

         hello bean1 = (hello)factory.getBean("hello");<o:p> </o:p>

 <o:p> </o:p>

         String s = bean1.sayhello(a);<o:p> </o:p>

         out.println(s);<o:p> </o:p>

      }<o:p> </o:p>

      catch(Exception e1)<o:p> </o:p>

              {System.out.println(""+e1);}<o:p> </o:p>

   }<o:p> </o:p>

}<o:p> </o:p>

--------------------------------------------<o:p> </o:p>

//f:\springdemo\servletclient.htm<o:p> </o:p>

 <o:p> </o:p>

<html><o:p> </o:p>

<body><o:p> </o:p>

<form    method=post  <o:p></o:p>

         action="http://localhost:8080/  <o:p></o:p>

                     servlet/servletclient"><o:p> </o:p>

   <input type=text name="text1"><o:p> </o:p>

   <input type=submit><o:p> </o:p>

</form><o:p> </o:p>

</body><o:p> </o:p>

</html><o:p> </o:p>

--------------------------------------------<o:p> </o:p><o:p></o:p>

Then compile the servlet and copy all the class files ie., hello.class, helloimpl.class,  servletclient.class and the xml file hello.xml  to g:\tomcat5\webapps\root\web-inf\classes. Copy html file servletclient.htm to g:\tomcat5\webapps\root. Add entry to web.xml file.<o:p> </o:p>
Restart Tomcat server and open browser<o:p> </o:p>and type url as http://localhost:8080/servletclient.htm. We will get a text box and a button. Type a name (say 'tom') and click the 'submit' button.<o:p> </o:p>

Good Morning!... tom will appear<o:p> </o:p>

In the next article, we shall see how to contact the database from Spring.<o:p> </o:p>

-------------------------------------------<o:p> </o:p>

 

                         

分享到:
评论

相关推荐

    start.spring.io.zip

    偷懒的话直接下载。 也可以自行直接拉取源文件编译 ...cd start.spring.io mvnw clean package -Dmaven.test.skip=true target 文件下两个jar 用*-exec.jar 可以直接java -jar -Dserver.port=8080 start-site.jar 运行

    本地start.spring.io服务器

    在IDEA中使用Spring Initializer构建Springboot项目是十分快速的,如果你遇到了新建springboot项目连接不上http://start.spring.io时,可以选择运行本地start.spring.io服务器。 方法很简单,下载jar包执行:java -...

    通过https://start.spring.io/生成的Spring Boot 项目

    1. **Spring Initializr (start.spring.io)**: 这是一个在线工具,用于初始化Spring Boot项目。用户可以选择项目的基本信息,如项目类型(Maven或Gradle)、语言(Java或Kotlin等)、Spring Boot版本、项目依赖等。...

    搭建本地服务器https://start.spring.io/

    使用idea Spring Initializr 创建spring boot项目爆无法访问https://start.spring.io/时,将这文档解压,并用解压后附带的指令运行jar包,将https://start.spring.io/换为120.0.0.1:8099即可。(注意,确保jdk版本不...

    spring.jar spring.jar spring.jar spring.jar

    spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar

    Apress.Spring.Recipes.A.Problem.Solution.Approach.2nd.Edition

    ### 标题解读:“Apress.Spring.Recipes.A.Problem.Solution.Approach.2nd.Edition” 这本书的标题表明了它的主要内容与Spring框架的应用实践密切相关。通过问题解决的方式介绍Spring框架的各种应用技巧(recipes)...

    start.spring.io-master.zip

    《Spring Boot深度解析:以start.spring.io-master为例》 在当今的Java开发领域,Spring Boot以其简洁、高效、快速启动的特性受到了广大开发者们的热烈欢迎。本文将基于名为"start.spring.io-master.zip"的压缩包...

    spring-mock.jar

    Classes contained in spring-mock.jar: org.springframework.mock.jndi.ExpectedLookupTemplate.class org.springframework.mock.jndi.SimpleNamingContext.class org.springframework.mock.jndi....

    通过https://start.spring.io/生成的Spring Boot 1.5.17项目

    在这个通过 https://start.spring.io/ 生成的项目中,我们可以预见到以下关键知识点: 1. **起步依赖(Starter Dependencies)**:Spring Boot 的核心特性之一是起步依赖,它提供了一种简单的方式来添加所需的功能...

    org.restlet.ext.spring.jar

    org.restlet.ext.spring.jar

    start.spring.io 离线部署程序2022年9月版

    最新start.spring.io 离线部署版本,2022年9月版本,内网部署也可实现start.spring.io 在线功能。

    spring-web-2.5.jar

    org.springframework.remoting.caucho.BurlapClientInterceptor.class org.springframework.remoting.caucho.BurlapProxyFactoryBean.class org.springframework.remoting.caucho.BurlapServiceExporter.class org....

    Apress.Introducing.Spring.Framework.A.Primer.

    This book is an introduction to the well-known Spring Framework that offers an inversion of control container for ...• Use Groovy with Spring. • Use the new Spring Boot and Spring XD technologies.

    spring boot/spring cloud项目启动脚本,默认名称:start.sh

    linux服务器,springboot,spring cloud、spring cloud alibaba等项目启动脚本 下载脚本, 1,上传脚本至jar包同级目录 2,更改脚本: jar包名称 项目文件路径 日志路径(包含日志名称) 脚本已配置好jvm优化...

    Manning.Spring.in.Action.4th.Edition.2014.11.epub

    17.2.1. Setting up a message broker in Spring 17.2.2. Using Spring’s JMS template 17.2.3. Creating message-driven POJOs 17.2.4. Using message-based RPC 17.3. Messaging with AMQP 17.3.1. A brief ...

    Manning.Spring.in.Action.4th.Edition.2014.11.zip

    Manning.Spring.in.Action.4th.Edition.2014.11.zip 压缩包包含: 1.Manning.Spring.in.Action.4th.Edition.2014.11.epub 2.Manning.Spring.in.Action.4th.Edition.2014.11.pdf Manning Spring in Action 4th ...

    Spring.Data.dll

    Spring.Data.dll,找到和大家分享

    Spring.Aop.dll

    Spring.Aop.dll ,分享一下

    spring.data.Nhibernate.dll

    spring.data.Nhibernate.dll

Global site tag (gtag.js) - Google Analytics