springside3

首先,从官网下载的springSide3并不具备我所需要的jar包,几个列子和我的编写习惯有很大冲突。

仔细观察目录结构发现无法像struts2.0一样,把列子改一下就可以架设成功了。

 

没办法,下载包用处不是很大,还是看文档把——http://wiki.springside.org.cn/display/springside3/Home。

 

 

在文档中,首先看到了“快速开发指南”,进去看看。

 

一键式安装,唉,没兴趣,看看别的。

 

还是看看“完全技术参考手册”吧,进去后看到。

 

1. 总述

2. 持久化

2. Web

3 企业服务

4.常见事项

5 开发过程

不用说先看看前四项把,只是看看而已。

 

好了,5分钟到了 看完了把。开始实践把。

 

开始看第五项“开发实践指南”,

 

重点在这里:

1. SpringSide风格项目

进去后:

一、原理

    SpringSide使用maven的archetype插件进行项目生成,新版的archetype2.0插件比以往有了大幅提升。

    SpringSide3.0在archtypes目录里存放使用Velocity语法的项目模板。

    新生成的项目中将包含保证能跑起来的项目骨架、配置文件与示例代码。

二、预要求

  • 设置环境变量JAVA_HOME指向JDK5.0安装目录。
  • 下载Maven2.0.9(all in one版已自带),并在环境变量PATH中添加 maven下载目录/bin。
  • 初始化SpringSide,双击bin/install.bat安装springside-core.jar 和两个archetype项目。

三、步骤

  1. 双击bin/new-project.bat,按提示输入参数。
  2. 在tools/generator/generated-project目录下将生成新项目。
  3. 进行必要的配置,如修改数据源,参考Hibernate
  4. 将项目加入版本管理系统向团队分发项目。

       如果不打算在团队中使用maven,使用copy-jar.bat命令初始化依赖的jar到/webapp/WEB-INF/lib中,并将这些jar加入版本管理系统。 

五、生成结果

  • maven的pom.xml 及maven格式的目录结构。
  • Eclipse 3.4.1 for JavaEE 项目文件,含符合maven格式的目录设置,UTF-8及JDK1.5设置等。
  • 配置文件范例
  • 源代码范例

SpringSide使用maven的archetype插件进行项目生成的,不过我可不喜欢用maven开发项目,没办法先生成个例子项目把(Struts真好,复制,粘贴,项目就是我的了 哈哈)。

 

按照步骤三的方法,经过漫长的等待,终于生成了一个例子项目。

 

导入到eclipse,晕死 目录还真乱,我要改造他,当然也可以不改造,我只是想让他看起来更舒服。

 

刚生成时的目录结构:

改造后的目录结构。

 

 

好了,顺眼了,看看他都有什么东西吧。

 

1.user增删改差示例。

2.权限的示例。

 

先不管这些,先看看配置文件:

 

1.applicationContext.xml

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"  
  6.     default-lazy-init="true">  
  7.     <description>Spring公共配置文件</description>  
  8.   
  9.     <!-- 定义受环境影响易变的变量 -->  
  10.     <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  11.         <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />  
  12.         <property name="ignoreResourceNotFound" value="true" />  
  13.         <property name="locations">  
  14.             <list>  
  15.                 <value>classpath:application.properties</value>  
  16.                 <value>classpath:application.local.properties</value>  
  17.                 <!-- <value>file:/var/myapp/application.server.properties</value> -->  
  18.             </list>  
  19.         </property>  
  20.     </bean>  
  21.   
  22.     <!-- 使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入 -->  
  23.     <context:component-scan base-package="cn.xxn" />  
  24.   
  25.     <!-- 数据源配置,在开发测试环境直连数据库 -->  
  26.     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  27.         <property name="driverClassName" value="org.gjt.mm.mysql.Driver" />  
  28.         <property name="url" value="jdbc:mysql://localhost:3306/FMS?generateSimpleParameterMetadata=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />  
  29.         <property name="username" value="root" />  
  30.         <property name="password" value="123456" />  
  31.     </bean>  
  32.   
  33.     <!-- 数据源配置,在生产环境使用应用服务器的数据库连接池 -->  
  34.     <!--<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/ExampleDB" />-->  
  35.   
  36.     <!-- Hibernate配置 -->  
  37.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  38.         <property name="dataSource" ref="dataSource" />  
  39.         <property name="namingStrategy">  
  40.             <bean class="org.hibernate.cfg.ImprovedNamingStrategy" />  
  41.         </property>  
  42.         <property name="hibernateProperties">  
  43.             <props>  
  44.                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
  45.                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
  46.                 <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider  
  47.                 </prop>  
  48.                 <prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.ehcache_config_file}</prop>  
  49.                 <prop key="hibernate.hbm2ddl.auto">update</prop>  
  50.             </props>  
  51.         </property>  
  52.         <property name="packagesToScan" value="cn.xxn.entity.*" />  
  53.     </bean>  
  54.   
  55.     <!-- 事务管理器配置,单数据源事务 -->  
  56.     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  57.         <property name="sessionFactory" ref="sessionFactory" />  
  58.     </bean>  
  59.   
  60.     <!-- 事务管理器配置,多数据源JTA事务-->  
  61.     <!--  
  62.         <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager or  
  63.         WebLogicJtaTransactionManager" />  
  64.     -->  
  65.   
  66.     <!-- 使用annotation定义事务 -->  
  67.     <tx:annotation-driven transaction-manager="transactionManager" />  
  68. </beans>  

 生成的很完美,我只需要改下数据源配置就可以了。

 

注意:在sessionFactory中

Xml代码   收藏代码
  1. <property name="packagesToScan" value="cn.xxn.entity.*" />  

恩,太爽了,这个目录下实体文件都会被映射,不用像以前一样添加实体了。这样一来,这个文件我们以后不用动他了。

 

2.struts.xml

 

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"  
  3.         "http://struts.apache.org/dtds/struts-2.1.dtd">  
  4. <struts>  
  5.     <constant name="struts.convention.default.parent.package" value="crud-default" />  
  6.     <constant name="struts.convention.package.locators" value="web" />  
  7.   
  8.     <package name="crud-default" extends="convention-default">  
  9.         <!-- 基于paramsPrepareParamsStack,增加store interceptor -->  
  10.         <interceptors>  
  11.             <interceptor-stack name="crudStack">  
  12.                 <interceptor-ref name="store">  
  13.                     <param name="operationMode">AUTOMATIC</param>  
  14.                 </interceptor-ref>  
  15.                 <interceptor-ref name="paramsPrepareParamsStack" />  
  16.             </interceptor-stack>  
  17.         </interceptors>  
  18.   
  19.         <default-interceptor-ref name="crudStack" />  
  20.     </package>  
  21.   
  22.     <!--   
  23.         使用ZeroConfig + CodeBehind插件,实现约定大于配置的零配置文件风格.  
  24.                特殊的Result路径在Action类中使用@Result设定.   
  25.     -->  
  26. </struts>  
 

这个配置也很强大,在不用对Action进行配置了。

 

疑问1,如何跳转。简单,例如:UserAction中有方法

Java代码   收藏代码
  1. public String school() throws Exception {  
  2.     return "school";  
  3. }  

 他就会跳转到user-school.jsp中。

 

哪么为什么会这样呢?

 

你会在lib中发现struts2-convention-plugin-2.1.6.jar,没错就是他干的。怎么实现的?我怎么知道。

Ruby代码   收藏代码
  1. 从struts2.1版本开始,Convention Plugin作为替换替换Codebehind Plugin来实现Struts2的零配置。  
  2.   
  3.     * 包命名习惯来指定Action位置  
  4.     * 命名习惯制定结果(支持JSP,FreeMarker等)路径  
  5.     * 类名到URL的约定转换  
  6.     * 包名到命名空间(namespace)的约定转换  
  7.     * 遵循SEO规范的链接地址(即:使用my-action 来替代 MyAction)  
  8.     * 基于注解的Action名  
  9.     * 基于注解的拦截机(Interceptor)  
  10.     * 基于注解的命名空间(Nameespace)  
  11.     * 基于注解的XWork包  
  12.     * 默认action以及默认的结果(比如:/products 将会尝试寻找com.example.actions.Products 或  
  13.  com.example.actions.products.Index进行处理)  
  14.   
  15. 无需配置Convention即可使用Convention,Convention的某些约束习惯可以通过配置属性来控制,  
  16. 您也可以在类中覆写其中的方法来达到扩展目地。  
 

 

疑问2,我要是跳转到别的ACTION去,不到页面怎么办。

 

嘻嘻,当然可以,不过这些东西不会让你去改变配置文件的。

 

你可以写在这里:

Java代码   收藏代码
  1. @Results({   
  2.     @Result(name = CRUDActionSupport.RELOAD, location = "user.action?page.pageParam=${page.pageParam}", type = "redirect") ,  
  3.     })  
  4. public class UserAction extends CRUDActionSupport<User> {  

 不要说你不知道这是什么位置。

你可以写多个

Java代码   收藏代码
  1. @Result(name = CRUDActionSupport.RELOAD1, location = "user.action?page.pageParam=${page.pageParam}", type = "redirect") ,  
  2. @Result(name = CRUDActionSupport.RELOAD2, location = "user.action?page.pageParam=${page.pageParam}", type = "redirect") ,  

其中,name:方法的返回值。 location:跳转的方法或页面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值