eclipse配置Struts2、Hibernate3、Spring2.5范例

来源:互联网 发布:tor网络 百科 编辑:程序博客网 时间:2024/04/28 18:44

目录

1       下载eclipse. 1

2       安装HIBERNATE插件.. 1

2.1       安装hibernate synchronizer 1

3       创建项目.. 3

3.1       创建Demo项目.. 3

3.2       JUnit4. 4

3.3       Referenced Libraries 5

4       项目分层概述.. 8

5       demo.core. 9

5.1       Pagination.java. 9

5.2       SpringBaseRootDAO.java. 12

6       demo.model 15

6.1       生成*.hbm.xml 15

6.2       抽象工厂方法.. 19

6.3       生成model 23

7       配置spring-database.xml 24

8       配置spring-dao.xml 26

9       demo.service. 27

10         配置spring-service.xml 27

11         demo.action. 28

12         配置struts.xml 30

13         配置web.xml 31

14         编译.. 33

14.1         引入inst、build.bat、startup.bat 33

14.2         build编译.. 34

14.3         startup编译.. 35

15         运行效果.. 37

16         总结.. 37

 

 

 

1    下载eclipse

官网:http://www.eclipse.org/downloads/

 

2    安装HIBERNATE插件

2.1     安装hibernate synchronizer

下载地址:

http://sourceforge.net/projects/hibernatesynch/?source=navbar

备注:

若有兴趣了解,可进入以下官网详细了解hibernate

http://sourceforge.net/projects/hibernate/?source=recommended或者

http://www.hibernate.org/

 

1)    解压com.hudson.hibernatesynchronizer_3.1.9文件

2)    将com.hudson.hibernatesynchronizer_3.1.9放到eclipse/ plugins

 

3)    运行cmd→进入eclipse文件夹→执行eclipse –clean

使用eclipse –clean进行把当前插件加载进去。

 

3    创建项目

3.1     创建Demo项目

1)    File→New→Java Project→Demo

 

3.2     JUnit4

1)    右键→Build Path→Add Libraries…→JUnit4→Finish

 

3.3     Referenced Libraries

1)    右键→Build Path→Configure Build Path…

 

导入JAR包,即struts2、spring、hibernate包(ssh必须包可以查询相应Web,这里包括了ssh、json序列化包、mysql、servlet等包)

复制代码
antlr-2.7.7.jaraopalliance-1.0.jarasm-3.3.jarasm-commons-3.3.jarasm-tree-3.3.jarc3p0-0.9.1.jarcglib-2.2.2.jarclassworlds-1.1.jarcommons-beanutils-1.7.0.jarcommons-chain-1.2.jarcommons-collections-3.1.jarcommons-dbcp-1.4.jarcommons-digester-2.0.jarcommons-fileupload-1.2.2.jarcommons-io-2.0.1.jarcommons-lang-2.5.jarcommons-logging-1.1.1.jarcommons-pool-1.6.jarcommons-validator-1.3.1.jardom4j-1.6.1.jarehcache-core-2.4.3.jarezmorph-1.0.3.jarfreemarker-2.3.18.jarhibernate3.jarjackson-core-asl-1.9.2.jarjackson-mapper-asl-1.9.2.jarjavassist-3.15.0-GA.jarjboss-logging-3.1.0.GA.jarjboss-transaction-api_1.1_spec-1.0.0.Final.jarjson-lib-2.1-jdk15.jarjuli-6.0.18.jarlog4j-1.2.16.jarmysql-connector-java-5.1.18-bin.jarognl-3.0.4.jarorg.apache.felix.bundlerepository-1.2.1.jarorg.apache.felix.framework-1.4.1.jarorg.apache.felix.main-1.4.1.jarorg.apache.felix.shell-1.0.2.jarorg.apache.felix.shell.tui-1.0.2.jarorg.springframework.aop-3.1.1.RELEASE.jarorg.springframework.asm-3.1.1.RELEASE.jarorg.springframework.aspects-3.1.1.RELEASE.jarorg.springframework.beans-3.1.1.RELEASE.jarorg.springframework.context-3.1.1.RELEASE.jarorg.springframework.context.support-3.1.1.RELEASE.jarorg.springframework.core-3.1.1.RELEASE.jarorg.springframework.expression-3.1.1.RELEASE.jarorg.springframework.instrument-3.1.1.RELEASE.jarorg.springframework.instrument.tomcat-3.1.1.RELEASE.jarorg.springframework.jdbc-3.1.1.RELEASE.jarorg.springframework.jms-3.1.1.RELEASE.jarorg.springframework.orm-3.1.1.RELEASE.jarorg.springframework.oxm-3.1.1.RELEASE.jarorg.springframework.test-3.1.1.RELEASE.jarorg.springframework.transaction-3.1.1.RELEASE.jarorg.springframework.web-3.1.1.RELEASE.jarorg.springframework.web.portlet-3.1.1.RELEASE.jarorg.springframework.web.servlet-3.1.1.RELEASE.jarorg.springframework.web.struts-3.1.1.RELEASE.jaroro-2.0.8.jaroscache-2.4.1.jaroval-1.31.jarplexus-container-default-1.0-alpha-10.jarplexus-utils-1.2.jarservlet-api.jarsitemesh-2.4.2.jarstruts2-core-2.3.1.2.jarstruts2-jasperreports-plugin-2.3.1.2.jarstruts2-json-plugin-2.3.1.2.jarstruts2-junit-plugin-2.3.1.2.jarstruts2-spring-plugin-2.3.1.2.jarstruts2-testng-plugin-2.3.1.2.jarstruts-core-1.3.10.jartestng-5.1-jdk15.jartiles-api-2.0.6.jartiles-core-2.0.6.jartiles-jsp-2.0.6.jarvelocity-1.6.3.jarxpp3_min-1.1.3.4.O.jarxstream-1.2.2.jarxwork-core-2.3.1.2.jar
复制代码

 

 

4    项目分层概述

 

1)    demo.core

Pagination.java(分页工具)

SpringBaseRootDAO.java(基类,使用分页工具进行查询HQL分页)

2)    demo.model

A01.hbm.xml(ORM工具)

A01.java(hibernatesynchronizer 生成:表A01映射对象)

3)    demo.model.base

BaseA01.java(hibernatesynchronizer 生成:表的get set 方法)

BaseA01DAO.java(hibernatesynchronizer 生成:表的获取数据方法)

4)    demo.model.dao

A01DAO.java(hibernatesynchronizer 生成:空方法)

_RootDAO.java(hibernatesynchronizer 生成:空方法)

5)    demo.service

UserService.java(用户服务)

RoleService.java(角色服务)

6)    demo.action

UserAction.java(用户行为访问)

RoleAction.java(用户行为访问)

7)    spring

spring-dao.xml依赖注入,反转控制

spring-database.xml数据库连接

spring-service依赖注入,反转控制

8)    struts2

struts.xml配置<interceptors>拦截器、action访问

9)    xml

web.xml配置<context-param>struts2、spring位置,配置监听spring等。

启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml。

读两个节点: <listener></listener> 和 <context-param></context-param>紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文。

5    demo.core

添加以下2个文件:Pagination.java、SpringBaseRootDAO.java

5.1     Pagination.java

复制代码
import java.io.Serializable;import java.util.List;public class Pagination implements Serializable {    /**     *      */    private static final long serialVersionUID = 9044906579682916890L;    protected int currentPageNo;    protected int totalPageCount;    protected int totalRecordCount;    protected List resultSet;    protected int pageSize = 10;    protected int first;    protected int preview;    protected int next;    protected int last;    public int getCurrentPageNo() {        return currentPageNo;    }    public void setCurrentPageNo(int currentPageNo) {        this.currentPageNo = currentPageNo;    }    public int getTotalPageCount() {        return totalPageCount;    }    public void setTotalPageCount(int totalPageCount) {        this.totalPageCount = totalPageCount;    }    public int getTotalRecordCount() {        return totalRecordCount;    }    public void setTotalRecordCount(int totalRecordCount) {        this.totalRecordCount = totalRecordCount;    }    public List getResultSet() {        return resultSet;    }    public void setResultSet(List resultSet) {        this.resultSet = resultSet;    }    public int getPageSize() {        return pageSize;    }    public void setPageSize(int pageSize) {        this.pageSize = pageSize;    }    public int getFirst() {        return first;    }    public void setFirst(int first) {        this.first = first;    }    public int getPreview() {        return preview;    }    public void setPreview(int preview) {        this.preview = preview;    }    public int getNext() {        return next;    }    public void setNext(int next) {        this.next = next;    }    public int getLast() {        return last;    }    public void setLast(int last) {        this.last = last;    }}
复制代码

 

5.2     SpringBaseRootDAO.java

复制代码
package demo.core;import java.sql.SQLException;import java.util.List; import org.hibernate.Criteria;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.type.Type;import org.springframework.dao.DataAccessException;import org.springframework.orm.hibernate3.HibernateCallback;import org.springframework.orm.hibernate3.HibernateTemplate; /** * Based on Hibernate Synchronizer * * @author King */public abstract class SpringBaseRootDAO extends HibernateTemplate {       /**        * Return the name of the configuration file to be used with this DAO or        * null if default        */       public String getConfigurationFileName() {              return null;       }       /**        * Return the specific Object class that will be used for class-specific        * implementation of this DAO.        *        * @return the reference Class        */       protected abstract Class getReferenceClass();        /**        * Return a Criteria object that relates to the DAO's table        */       protected Criteria createCriteria(Session s) throws DataAccessException {              return s.createCriteria(getReferenceClass());       }       /**        * Return a Criteria object that relates to the DAO's table        */       public Criteria createCriteria() throws HibernateException {              Session s = getSessionFactory().openSession();              return s.createCriteria(getReferenceClass());       }       /**        * Return the property of the class you would like to use for default        * ordering        *        * @return the property name        */       public String getDefaultOrderProperty() {              return null;       }        /**        * Common Pagination Function        *        * @param hql        * @param pageNo        * @param pageSize        * @return        */       public Pagination getList(final String hql, final int pageNo,                     final int pageSize) {              return (Pagination) execute(new HibernateCallback() {                     public Object doInHibernate(Session session)                                   throws HibernateException {                            Query query = session.createQuery(hql);                            Pagination pagination = new Pagination();                            pagination.setCurrentPageNo(pageNo);                            pagination.setPageSize(pageSize);                          pagination.setTotalRecordCount(query.list().size());                            query.setFirstResult(pagination.getPageSize() * (pageNo - 1));                           query.setMaxResults(pagination.getPageSize());                            pagination.setResultSet(query.list());                            return pagination;                     }              });       }        /**        * Common Pagination Function        *        * @param hql        * @param args        * @param pageNo        * @param pageSize        * @return        */       public Pagination getList(final String hql, final Object[] args,                     final int pageNo, final int pageSize) {              return (Pagination) execute(new HibernateCallback() {                     public Object doInHibernate(Session session)                                   throws HibernateException {                            Query query = session.createQuery(hql);                            if (args != null && args.length > 0) {                                   for (int i = 0; i < args.length; i++)                                          query.setParameter(i, args[i]);                            }                            Pagination pagination = new Pagination();                            pagination.setCurrentPageNo(pageNo);                            pagination.setPageSize(pageSize);                        pagination.setTotalRecordCount(query.list().size());                            query.setFirstResult(pagination.getPageSize() * (pageNo - 1));                           query.setMaxResults(pagination.getPageSize());                            pagination.setResultSet(query.list());                            return pagination;                     }              });       }}
复制代码

 

6    demo.model

6.1     生成*.hbm.xml

10) File→New→Other…

 

jdbc:mysql://localhost:3306/yt4a?useUnicode=true&amp;characterEncoding=utf8

 

复制代码
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC       "-//Hibernate/Hibernate Mapping DTD//EN"       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping package="demo.model">       <class              name="A01"              table="a01"       >              <meta attribute="sync-DAO">true</meta>              <id                     name="A0101"                     type="int"                     column="A0101"              >                     <generator class="identity"/>              </id>              <property                     name="A0102"                     column="A0102"                     type="int"                     not-null="false"                     length="10"              />              <property                     name="A0103"                     column="A0103"                     type="int"                     not-null="false"                     length="10"              />              <property                     name="A0104"                     column="A0104"                     type="string"                     not-null="false"                     length="100"              />              <property                     name="A0105"                     column="A0105"                     type="string"                     not-null="false"                     length="500"              />              <property                     name="A0106"                     column="A0106"                     type="date"                     not-null="false"                     length="19"              />              <property                     name="A0107"                     column="A0107"                     type="int"                     not-null="false"                     length="10"              />              <property                     name="A0108"                     column="A0108"                     type="int"                     not-null="false"                     length="10"              />       </class></hibernate-mapping>
复制代码

 

6.2     抽象工厂方法

根据抽象工厂方法,打开eclipse的IDE,设置Hibernate Synchronizer

1)    Window→Preferences→Hibernate Synchronizer→Snippets→Root DAO→Class Definition

public abstract class _RootDAO extends demo.core.SpringBaseRootDAO {

 

_RootDAO继承demo.core.SpringBaseRootDAO

2)    Window→Preferences→Hibernate Synchronizer→Snippets→Base DAO→

Class Definition

public abstract class ${class.BaseDAOClassName} extends demo.model.dao._RootDAO {

 

Class Constructors

public ${class.BaseDAOClassName} () {}

 

ActionMethods

复制代码
    /**     * Persist the given transient instance, first assigning a generated identifier. (Or using the current value     * of the identifier property if the assigned generator is used.)      * @param ${class.VarName} a transient instance of a persistent class      * @return the class identifier     */    public ${class.ParentRoot.Id.Property.ObjectClass} save(${class.AbsoluteValueObjectSignatureClassName} ${class.VarName})#if ($exceptionClass)        throws ${exceptionClass} {#else    {#end        return (${class.ParentRoot.Id.Property.ObjectClass}) super.save(${class.VarName});    }    /**     * Either save() or update() the given instance, depending upon the value of its identifier property. By default     * the instance is always saved. This behaviour may be adjusted by specifying an unsaved-value attribute of the     * identifier property mapping.      * @param ${class.VarName} a transient instance containing new or updated state      */    public void saveOrUpdate(${class.AbsoluteValueObjectSignatureClassName} ${class.VarName})#if ($exceptionClass)        throws ${exceptionClass} {#else    {#end        super.saveOrUpdate(${class.VarName});    }    /**     * Update the persistent state associated with the given identifier. An exception is thrown if there is a persistent     * instance with the same identifier in the current session.     * @param ${class.VarName} a transient instance containing updated state     */    public void update(${class.AbsoluteValueObjectSignatureClassName} ${class.VarName}) #if ($exceptionClass)        throws ${exceptionClass} {#else    {#end        super.update(${class.VarName});    }
复制代码

 

Finder Methods

复制代码
#if ($class.ParentRoot.Id)    public ${class.AbsoluteValueObjectSignatureClassName} load(${class.ParentRoot.Id.Property.AbsoluteSignatureClassName} key)#if ($exceptionClass)        throws ${exceptionClass} {#else    {#end#if ($class.ParentRoot.Id.Property.isPrimitive())        return (${class.AbsoluteValueObjectSignatureClassName}) load(getReferenceClass(), new ${class.ParentRoot.Id.Property.ObjectClass}(key));#else        return (${class.AbsoluteValueObjectSignatureClassName}) load(getReferenceClass(), key);#end    }#end#if ($class.ParentRoot.Id)    public ${class.AbsoluteValueObjectSignatureClassName} get(${class.ParentRoot.Id.Property.AbsoluteSignatureClassName} key)#if ($exceptionClass)        throws ${exceptionClass} {#else    {#end#if ($class.ParentRoot.Id.Property.isPrimitive())        return (${class.AbsoluteValueObjectSignatureClassName}) get(getReferenceClass(), new ${class.ParentRoot.Id.Property.ObjectClass}(key));#else        return (${class.AbsoluteValueObjectSignatureClassName}) get(getReferenceClass(), key);#end    }#end#if ($class.ParentRoot.Id)    public java.util.List loadAll()#if ($exceptionClass)        throws ${exceptionClass} {#else    {#end        return loadAll(getReferenceClass());    }#end
复制代码

 

3)    Window→Preferences→Hibernate Synchronizer→Snippets→DAO→Class Definition

public class ${class.DAOClassName} extends ${class.BaseDAOClassName}{

 

6.3     生成model

1)    A01.hbm.xml→右键→Hibernate Synchronizer→Synchronizer and Overwrite

 

2)    删除demo.model.dao.iface

7    配置spring-database.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"       xsi:schemaLocation="http://www.springframework.org/schema/beans                            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"       default-autowire="byName">    <!-- dataSource -->    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>        <property name="url" value="jdbc:mysql://localhost:3306/yt4a?useUnicode=true&amp;characterEncoding=utf8"></property>        <property name="username" value="root"></property>        <property name="password" value="root"></property>    </bean>         <!-- sessionFactory -->    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="mappingResources">            <list>                <value>demo/model/A01.hbm.xml</value>            </list>          </property>        <property name="hibernateProperties">            <props>                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>                <prop key="hibernate.jdbc.batch_size">100</prop>                <prop key="hibernate.jdbc.fetch_size">100</prop>                <prop key="hibernate.jdbc.use_streams_for_binary">true</prop>                <prop key="hibernate.jdbc.batch_versioned_data">true</prop>                <prop key="hibernate.use_sql_comments">true</prop>                <prop key="hibernate.query.substitutions">toLowercase=Lower</prop>                <prop key="hibernate.show_sql">true</prop>                <prop key="hibernate.format_sql">true</prop>            </props>        </property>    </bean>    <!-- transactionManager -->    <bean id="transactionManager"        class="org.springframework.orm.hibernate3.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory" />    </bean>        <!-- txProxyTemplate -->    <bean id="txProxyTemplate" abstract="true"        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">        <property name="transactionManager" ref="transactionManager"/>        <property name="transactionAttributes">            <props>                <prop key="create*">PROPAGATION_REQUIRED,-Exception</prop>                <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>                <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>                <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>                <prop key="bulk*">PROPAGATION_REQUIRED,-Exception</prop>                <prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop>                <prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>                <prop key="*">PROPAGATION_NEVER,readOnly</prop>            </props>        </property>    </bean></beans>  
复制代码

 

8    配置spring-dao.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"       xsi:schemaLocation="http://www.springframework.org/schema/beans                            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"       default-autowire="byName">    <!-- a01DAO -->     <bean id="a01DAO" class="demo.model.dao.A01DAO" /></beans>
复制代码

 

9    demo.service

创建包demo.service和创建UserService.java

复制代码
package demo.service;import java.util.List;import demo.model.dao.A01DAO;public class UserService {    private A01DAO a01Dao;    public A01DAO getA01dao() {        return a01Dao;    }    public void setA01dao(A01DAO a01dao) {        this.a01Dao = a01dao;    }    public List findAll() throws Exception {        List list = a01Dao.find("SELECT _a01 FROM A01 _a01");        return list;    }}
复制代码

 

10       配置spring-service.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"       xsi:schemaLocation="http://www.springframework.org/schema/beans                            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"       default-autowire="byName">      <!-- userService -->     <bean id="userService" parent="txProxyTemplate">        <property name="target">            <bean class="demo.service.UserService" />        </property>    </bean></beans>
复制代码

 

11       demo.action

创建包demo.action和UserAction.java

复制代码
package demo.action;import java.io.InputStream;import java.io.StringBufferInputStream;import java.util.HashMap;import java.util.Map;import demo.service.UserService;import com.opensymphony.xwork2.ActionSupport;/** * create by zhyongfeng in 2013.06.06 * @author Administrator * */public class UserAction extends ActionSupport {    private int number;    private UserService userService;    private InputStream inputStream;    private Map<String, Object> jsonMap ;    public String findA01All() {            try {            jsonMap= new HashMap<String, Object>();            jsonMap.put("result", userService.findA01All());        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return SUCCESS;    }        public String findString(){        inputStream = new StringBufferInputStream(                "Hello World! This is a text string response from a Struts 2 Action.");        return SUCCESS;    }            public int getNumber() {        return number;    }    public void setNumber(int number) {        this.number = number;    }    public UserService getUserService() {        return userService;    }    public void setUserService(UserService userService) {        this.userService = userService;    }        public InputStream getInputStream() {        return inputStream;    }    public void setInputStream(InputStream inputStream) {        this.inputStream = inputStream;    }    public Map<String, Object> getJsonMap() {        return jsonMap;    }    public void setJsonMap(Map<String, Object> jsonMap) {        this.jsonMap = jsonMap;    }}
复制代码

 

12       配置struts.xml

复制代码
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC        "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"        "http://struts.apache.org/dtds/struts-2.1.7.dtd"><struts>    <!-- <constant name="struts.custom.i18n.resources" value="message"/> -->    <constant name="struts.i18n.encoding" value="utf-8" />    <constant name="struts.objectFactory" value="spring" />    <constant name="struts.multipart.parser" value="Jakarta" />    <constant name="struts.multipart.maxSize" value="1000000000" />    <package name="demo" extends="json-default" namespace="/">        <interceptors>            <interceptor-stack name="managerStack">                <interceptor-ref name="staticParams" />                <interceptor-ref name="params" />                <!--<interceptor-ref name="authorize" />-->                <interceptor-ref name="chain" />            </interceptor-stack>        </interceptors>        <global-results>            <result name="login" type="chain">                <param name="actionName">index.htm</param>                <param name="namespace">/</param>            </result>        </global-results>         <!-- findA01All interceptor是拦截器,可以自己定义拦截器进行用户登录验证-->        <action name="findA01All" class="demo.action.UserAction"            method="findA01All">            <result type="json">                <param name="root">jsonMap</param>                <param name="excludeNullProperties">true</param>            </result>            <interceptor-ref name="params" />        </action>                <!-- findString -->        <action name="findString" class="demo.action.UserAction"            method="findString">            <result type="stream">                <param name="contentType">text/html</param>                <param name="inputName">inputStream</param>            </result>            <interceptor-ref name="params" />        </action>    </package>        <!-- html files -->    <include file="struts-htm.xml" /></struts>
复制代码

 

13       配置web.xml

复制代码
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"     xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">        <display-name>Demo</display-name>        <context-param>         <param-name>webAppRootKey</param-name>         <param-value>web.root</param-value>     </context-param>            <context-param>        <param-name>log4jConfigLocation</param-name>        <param-value>/WEB-INF/conf/log4j.properties</param-value>    </context-param>        <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>/WEB-INF/conf/spring/*.xml</param-value>    </context-param>        <listener>        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>     </listener>            <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>            <filter>        <filter-name>OpenSessionInViewFilter</filter-name>        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>    </filter>        <filter>        <filter-name>encodingFilter</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>        <init-param>          <param-name>encoding</param-name>          <param-value>UTF-8</param-value>        </init-param>    </filter>        <filter>        <filter-name>struts2</filter-name>        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>    </filter>        <filter-mapping>        <filter-name>OpenSessionInViewFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>        <filter-mapping>        <filter-name>encodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>         <filter-mapping>        <filter-name>struts2</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>        <welcome-file-list>        <welcome-file>index.htm</welcome-file>          </welcome-file-list></web-app>
复制代码

 

14       编译

14.1        引入inst、build.bat、startup.bat

 

根据实际情况修改以下路径: D:\JDK、D:\TOMCAT7、D:\PROJECTS\JAVA\。

inst\conf\server.xml

<Host name="localhost" unpackWARs="true"> <Context path="" docBase="D:/PROJECTS/JAVA/Demo/htdocs" reloadable="true" workDir="D:/PROJECTS/JAVA/YT4A/htdocs/work" /></Host>

 

build.xml

(将会打包放在WEB-INF/lib下)

<property name="jarfile" value="${web.dir}/WEB-INF/lib/${name}-${version}.jar" />

 

Startup.bat

复制代码
set JAVA_HOME=D:\JDKset CATALINA_HOME=D:\TOMCAT7set CATALINA_BASE=D:\PROJECTS\JAVA\Demo\instSET JPDA_ADDRESS=8000SET JPDA_TRANSPORT=dt_socket%CATALINA_HOME%\bin\catalina.bat jpda start
复制代码

14.2        build编译

通过cmd,进行到demo,执行build.bat

复制代码
D:\PROJECTS\JAVA\Demo>ant -f build.xmlBuildfile: D:\PROJECTS\JAVA\Demo\build.xmlusage:     [echo]     [echo] demo build file     [echo] -----------------------------------     [echo]     [echo] Available targets are:     [echo]     [echo] prepare   --> Prepare for clean build     [echo] build     --> Build the application     [echo] jar       --> Create java jar file     [echo] deploy    --> Deploy application     [echo] dist      --> Create binary distribution     [echo]prepare:   [delete] Deleting directory D:\PROJECTS\JAVA\Demo\bincompile:    [mkdir] Created dir: D:\PROJECTS\JAVA\Demo\bin    [javac] D:\PROJECTS\JAVA\Demo\build.xml:48: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds    [javac] Compiling 9 source files to D:\PROJECTS\JAVA\Demo\bin    [javac] 注: D:\PROJECTS\JAVA\Demo\src\demo\action\UserAction.java使用或覆盖了已过时的 API。    [javac] 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。    [javac] 注: 某些输入文件使用了未经检查或不安全的操作。    [javac] 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。     [copy] Copying 3 files to D:\PROJECTS\JAVA\Demo\binjar:      [jar] Building jar: D:\PROJECTS\JAVA\Demo\htdocs\WEB-INF\lib\demo-1.0.jardeploy:BUILD SUCCESSFULTotal time: 1 secondD:\PROJECTS\JAVA\Demo>
复制代码

 

14.3        startup编译

运行startup

 

15       运行效果

 

 

16       总结

本文主要依据以下链接进行配置:

http://www.supergloo.com/blog/index.php/category/hibernate-synchronizer/

 

资料下载:

Apache ANT官网:http://ant.apache.org/bindownload.cgi

Tomcat官网:http://tomcat.apache.org/

JDK官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html

Eclipse官网:http://www.eclipse.org/downloads/

hibernate synchronizer:http://sourceforge.net/projects/hibernatesynch/?source=navbar

 

(详细代码请参照Demo例子)

进行本配置,只需要解压Apache ANT、Tomcat、Eclipse、hibernate synchronizer和安装JDK,通过build.bat、startup.bat便可以开启编译程序。

DEMO源码下载:http://dl.vmall.com/c0a5kbff7h

PDF下载:http://files.cnblogs.com/yongfeng/20130610.pdf


from: http://www.cnblogs.com/yongfeng/archive/2013/06/10/3131210.html

0 0
原创粉丝点击