`
bit6211
  • 浏览: 73227 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

新疆商务领航项目所得

阅读更多

        前段时间(2010年9月-2011年3月底),参加了新疆商务领航项目的开发,该项目主要有三个门户,管理门户、客户门户和SI门户。在这个项目中,我主要负责写service层和dao层。在此把项目中学到的一些零碎知识点,做个记录,权当项目完结的纪念吧。

 

1.MultiActionController绑定Command
1)首先jsp页面
<form:form modelAttribute="product" action="listProduct.do" method="post">
<table width="100%" class="editTable">
 <tbody>
  <tr>
    <td width="10%" height="30" class="editTD01"><div align="right">产品名称:</div></td>
    <td width="25%" class="editTD02"><form:input path="name"/></td><!-- <input type="text" value="${productNameStr}" name="productName" > -->
  </tr>
 </tbody>
</table>
2)Controller里的方法
public ModelAndView listProduct(HttpServletRequest request, HttpServletResponse response, Product product) throws Exception {
        // TODO Auto-generated method stub

        ModelAndView mav = new ModelAndView("listProduct.index");
       
        mav.addObject("product", product);//要加入这一行绑定对象
        return mav;
    }
只在第三个参数定义 Product product,而不加入mav.addObject("product", product);则会报异常:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'product' available as request attribute

而看网上的资料说,并不需要加入mav.addObject("product", product);语句,存疑。
并且还可以“靠第3个参数来绑定比较缺乏灵活性,还是建议你调用它的bind()函数来绑定”,也不会,存疑。

 

2.RuntimeException是可以被捕获的。空指针异常是一种运行时异常。

 

3.OpenSessionInViewFilter的作用 http://oranges.javaeye.com/blog/557847

 

4.No row with the given identifier exists
解决方法1. http://blog.csdn.net/zhengsj/archive/2009/05/14/4182119.aspx
解决方法2. 使用 not-found="ignore|exception",not-found (可选 - 默认为 exception)含义: 指明引用的外键中缺少某些行该如何处理。
ignore 会把缺失的行作为一个空引用处理,而exception则会抛出异常(即异常No row with the given identifier exists )。
例子:<many-to-one name="telecomAdmin" column="MANAGER_ID" class="com.ismp.model.manager.TelecomAdmin" not-found="ignore"/>

 

5.在DAO配置时,是否可以在配置文件中实例化父类(虚类),然后子类继承该父类,一些重复注入的属性就不需要,在子类中分别注入了。
可以。一个配置的例子是(其中OriginalBillDAO、UserExperienceDAO继承AbstractGeneralDao这个虚类,sessionFactory为共有的属性):
 <bean id="abstractGeneralDao" class="com.ismp.dao.v3.AbstractGeneralDao" abstract="true">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 <bean id="originalBillDAO" class="com.ismp.dao.hb.OriginalBillDAO" parent="abstractGeneralDao">
 </bean>
 <bean id="userExperienceDAO" class="com.ismp.dao.hb.UserExperienceDAO" parent="abstractGeneralDao">
 </bean>

 

6.      if(title != null && !title.trim().equals("")) {
     titleTemp = "'%" + title.trim().replaceAll("'", "") + "%'";
     sb.append(" and cg.title like ").append(titleTemp);
 }
能否改成like :titleTemp形式?
可以改为:
 sb.append(" and cg.title like : title");
 if(title != null && !title.trim().equals("")) {
  titleTemp = "%" + title.trim().replaceAll("'", "") + "%";//没有'符号
  query.setString("title", titleTemp);
 }

 

7.写oracle的sql语句时,用到时间比较时,可以这样把字符串变为时间:to_date('2009-09-21 05:19:07','yyyy-mm-dd hh24:mi:ss')

 

8.
1)mvn创建非web maven工程
mvn archetype:create -DgroupId=com.xjgzbj -DartifactId=mymvn -DarchetypeGroupId=org.apache.maven.archetypes
2)mvn创建web工程
mvn archetype:create -DgroupId=com.xjgzbj -DartifactId=mymvn-webapp -DarchetypeArtifactId=maven-archetype-webapp
其中archetypeGroupId代表哪个公司,archetypeArtifactId代表哪个公司的哪个模版(如果不填默认是maven-archetype-quickstart)。

 

9.mvn一些字段的含义
1)modules用于声明本工程的子工程,module中的值对应于子工程的artifact名。而且本工程中pom.xml的packaging类型必须为pom,如下:<packaging>pom</packaging>。参考自http://blogold.chinaunix.net/u1/55983/showart_2093354.html
2)dependencyManagement元素中为你提供了一种方式来统一依赖版本号。你经常会在一个组织或者项目的最顶层的父POM中看到 dependencyManagement元素。使用pom.xml中的dependencyManagement元素能让你在子项目中引用一个依赖而不用显式的列出版本号。参考自http://hi.baidu.com/brnz/blog/item/03a7cb146019b34720a4e9cc.html

 

10.
在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:

* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

 

11.接口和接口实现分别创建不同的工程,这样后期可以把接口单独对外开放API。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics