您的位置:首页 > 编程语言 > Java开发

Tapestry+spring+hibernate基本架构

2007-03-27 17:45 323 查看
  
[align=center]Tapestry+spring+hibernate[/align]
[align=center] [/align]
1.     配置tapestry
1)Web.xml中配置tapestry’s servlet
 
[align=left]<servlet>[/align]
[align=left]    <servlet-name>app</servlet-name>[/align]
[align=left]    <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>[/align]
[align=left]</servlet>[/align]
[align=left] [/align]
[align=left]<servlet-mapping>[/align]
[align=left]    <servlet-name>app</servlet-name>[/align]
[align=left]    <url-pattern>/</url-pattern>[/align]
</servlet-mapping>
 
Servlet mapping is associate with the file of hivemodule.xml
 
Note:first u couldn’t add the tapestry-spring.jar
 
2)config application file
 
[align=left]<application>[/align]
[align=left]       <metakey="org.apache.tapestry.messages-encoding"value="UTF-8"/>[/align]
[align=left]//encoding for tapestry[/align]
[align=left]        <metakey="org.apache.tapestry.page-class-packages"value="tapestry"/>[/align]
[align=left]//html file is associate with java file in the “tapestry” package[/align]
</application>
 
And the application file name must be defined the same as the servlet-class name.if u dun do that,u must declare in the application file like this “<application name=’project name’>”
 
3)write your html file and java file
 
Home.html:
<input jwcid=”@insert” value=”ongl:name”>
Home.java:(must extends BasePage)
        Public absact String getName();
        Public abstact void setName(String name);
Note:absact is better for the project.
 
Now u can run and see!
2.    hibernate+spring configuration
1)write a orm file---User.hbm.xml whatever u like(include a PK and
4000
name/pwd property).and also do a javabean for it.named User.java in domain package.
 
2)First add tapestry-spring.jar,and add under context into web.xml:
 
[align=left]<listener>[/align]
[align=left]       <listener-class>[/align]
[align=left]           org.springframework.web.context.ContextLoaderListener[/align]
[align=left]       </listener-class>[/align]
[align=left]    </listener>[/align]
[align=left]    <context-param>[/align]
[align=left]       <param-name>contextConfigLocation</param-name>[/align]
[align=left]       <param-value>/WEB-INF/application.xml</param-value>[/align]
</context-param>
 
3)Then create application.xml file:
 
[align=left]<bean id="sessionFactory"[/align]
[align=left]class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">[/align]
[align=left]           <property name="mappingResources">[/align]
[align=left]              <list>[/align]
[align=left]                  <value>hibernate/User.hbm.xml</value>[/align]
[align=left]              </list>[/align]
[align=left]           </property>[/align]
[align=left]           <property name="hibernateProperties">[/align]
[align=left]              <props>[/align]
[align=left]                  <prop key="hibernate.connection.driver_class">[/align]
[align=left]                     oracle.jdbc.driver.OracleDriver[/align]
[align=left]                  </prop>[/align]
[align=left]//for oracle driver[/align]
[align=left]                  <prop key="hibernate.connection.url">[/align]
[align=left]                     jdbc:oracle:thin:@localhost:1521:jseps[/align]
[align=left]                  </prop>[/align]
[align=left]                  <prop key="hibernate.connection.username">web</prop>[/align]
[align=left]                  <prop key="hibernate.connection.password">web</prop>[/align]
[align=left]                  <prop key="hibernate.dialect">[/align]
[align=left]                     org.hibernate.dialect.Oracle9Dialect[/align]
[align=left]                  </prop>[/align]
[align=left]                  <prop key="hibernate.show_sql">true</prop>[/align]
[align=left]                  <prop key="hibernate.hbm2ddl.auto">update</prop>[/align]
[align=left]//is the key word for auto create table in database by itself.[/align]
[align=left]              </props>[/align]
[align=left]           </property>[/align]
    </bean>
 
4)and u can create a service interface and impl class files,one is in service.interface package and another in service.impl package.
 
[align=left]publicinterface UserService {[/align]
[align=left]    void create(User user);[/align]
[align=left] [/align]
[align=left]    void update(User user);[/align]
[align=left] [/align]
[align=left]    void delete(User user);[/align]
[align=left] [/align]
[align=left]    Collection query();[/align]
[align=left] [/align]
[align=left]    User load(Long id);[/align]
}
 
And UserServiceImpl.java must inject sessionFactory
 
[align=left]publicclass UserServiceImpl implements UserService {[/align]
[align=left]    [/align]
[align=left]        private SessionFactory sessionFactory; [/align]
[align=left]    [/align]
[align=left]        publicvoid setSessionFactory(SessionFactory sessionFactory) {[/align]
           this.sessionFactory = sessionFactory;
[align=left]        }[/align]
[align=left] [/align]
[align=left]        publicvoid create(User user) {[/align]
[align=left]HibernateTemplate ht = new HibernateTemplate(this.sessionFactory);[/align]
[align=left]           ht.save(user);[/align]
    }
……………………………………………………….
}
 
Now u must add these into application.xml
[align=left] [/align]
[align=left]<bean id="userService" class="service.impl.UserServiceImpl">[/align]
[align=left]    <property name="sessionFactory ref="sessionFactory">[/align]
[align=left]</property>[/align]
</bean>
 
[align=left]5) add a table on html[/align]
[align=left]<table cellpadding="0" cellspacing="0" class="grid" width="100%"[/align]
[align=left]    jwcid="tableUser">[/align]
[align=left]        <tr jwcid="@contrib:TableRows">[/align]
[align=left]           <td jwcid="@contrib:TableValues" />[/align]
[align=left]        </tr>[/align]
</table>
 
Then Home.java will change:
 
[align=left]@InjectObject("spring:userService")[/align]
[align=left]    publicabstract UserManager getUserManager();[/align]
[align=left]//inject userService[/align]
[align=left] [/align]
[align=left]@Component(id = "tableUser", type = "contrib:Table", bindings = {"columns=literal:!name,!pwd","row=currUser", "source=userList"})[/align]
[align=left]    publicabstract IComponent getTableUser();[/align]
[align=left]//for the tableUser component,see more on “http://tapestry.apache.org/tapestry4”[/align]
[align=left] [/align]
[align=left]    public Collection getUserList(){[/align]
[align=left]       returnthis.getUserManager().query();[/align]
[align=left]    }[/align]
[align=left]    //for source [/align]
[align=left] [/align]
[align=left]    publicabstract User getCurrUser();[/align]
publicabstractvoid setCurrUser(User user);
. . . . . . . . . . . . .
 
To make use of this library, you must include its JAR on the classpath (typically, by copying it into WEB-INF/lib), and extend your application specification, and add a <library> element :
[align=left]<library id="contrib" specification-path="classpath:/org/apache/tapestry/contrib/[/align]
[align=left]Contrib.library"/>[/align]
[align=left] [/align]
[align=left]    Now u can add some data in database,and run . . .see the list loaded from database![/align]
3.    spring事务
define a form in new page---create.html
 
[align=left]<form jwcid="@Form">[/align]
[align=left]        NAME:<input jwcid="@TextField" value="ognl:user.name"/>[/align]
[align=left]    PWD:<input jwcid="@TextField" value="ognl:user.pwd" hidden="true"/>[/align]
[align=left]        <input jwcid="save" value="save"/>[/align]
</form>
 
Add a method in create.java
 
[align=left]public String save(){[/align]
[align=left]       getUserManager().create(getUser());[/align]
[align=left]       return"Home";[/align]
}
//can return a string type
 
And add these in application.xml:
 
[align=left]<bean id="txMgr" class="org.springframework.orm.hibernate3.HibernateTransactionManager">[/align]
[align=left]        <property name="sessionFactory">[/align]
[align=left]            <ref bean="sessionFactory"/>[/align]
[align=left]        </property>[/align]
[align=left]    </bean>[/align]
[align=left]    [/align]
[align=left]    <!-- the txInterceptor bean will get auto-wrapped around all beans matched with the combination of "txAdvisor"+"txAutoProxyCreator" -->[/align]
[align=left]    <bean id="txInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">[/align]
[align=left]        <property name="transactionManager">[/align]
[align=left]            <ref bean="txMgr"/>[/align]
[align=left]        </property>[/align]
[align=left]        <property name="transactionAttributes">[/align]
[align=left]            <props>[/align]
[align=left]                <prop key="*">PROPAGATION_REQUIRED</prop>[/align]
[align=left]            </props>[/align]
[align=left]        </property>[/align]
[align=left]    </bean>[/align]
[align=left] [/align]
[align=left]    <!-- the txAdvisor advises all matched methods in a given bean against its patterns with its interceptor -->[/align]
[align=left]    <bean id="txAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">[/align]
[align=left]        <property name="advice">[/align]
[align=left]            <ref bean="txInterceptor"/>[/align]
[align=left]        </property>[/align]
[align=left]        <property name="patterns">[/align]
[align=left]            <!-- the patterns must match *fully qualified* method names, hence the .* -->[/align]
[align=left]            <list>[/align]
[align=left]                <value>.*</value>[/align]
[align=left]<!—- 将.*的方法包括在TRANSACTION中 -->[/align]
[align=left]            </list>[/align]
[align=left]        </property>[/align]
[align=left]    </bean>[/align]
[align=left] [/align]
[align=left]    <!-- the txProxyAutoCreator automagically proxies all matched beans with its interceptors if they match any pointcuts -->[/align]
[align=left]    <bean id="txProxyAutoCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">[/align]
[align=left]        <property name="beanNames">[/align]
[align=left]            <list>[/align]
[align=left]                <!-- managers -->[/align]
[align=left]                <value>*Manager</value>[/align]
[align=left]                <value>*Service</value>[/align]
[align=left]<!—- 与以上命名的类文件匹配 -->[/align]
[align=left]            </list>[/align]
[align=left]        </property>[/align]
[align=left]        <property name="interceptorNames">[/align]
[align=left]            <list>[/align]
[align=left]                <value>txAdvisor</value>[/align]
[align=left]            </list>[/align]
[align=left]        </property>[/align]
    </bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息