struts2+spring+hibernate使用中遇到的问题(转载)

来源:互联网 发布:教育学考研网络培训班 编辑:程序博客网 时间:2024/05/20 18:41
1. struts2和spring框架整合。
某些service需要注入到action中,但是在spring的配置文件中并未发现如何相应的<bean>配置。
struts2-spring-plugin插件包是随struts2一起发布,用于解决以上问题的。
第一种方式:
当struts创建action时,装配器将自动为action进行装配。装配原则是,在action中寻找setter方法,并分离出setter()方法的对象名。例如,setSecurityService(),将被分离出securityService。然后在spring中寻找id为securityService的<bean>,并将该<bean>注入action中。
第二种方式:
在action配置时,指定class,该class可以不必是真正的java类,而应该是spring配置文件中的一个<bean>的id。此时的<action>是由spring创建,并且以<bean>的形式出现在spring配置文件中。例如:
<action name="showAction" class="logAction"/>
<bean id="logAction" class="com.auto.LoginAction"/>
此时的action和bean是同一个对象。
 
2. Hibernate无法序列化could not serialize.
一般来说,是由于实体中某些field无法序列化。
 
3. getHibernateTemplate().findAll()可以找到所有的对象,但通过findBy无法查询出需要的对象。
可能是由于数据库中的实际数据的大小写和查询条件中的大小写没有一致起来。
 
4。strtus2标签中,可以直接将对应action的field当作变量,直接引用,同时这个field必须有对应的get/set
 
5,在一个实体中关联的另一个实体无法序列化。
原因,第二个实体没有利用注解进行实例化。查看hibernate或spring的配置。
 
6. frame的marginHeight默认值不是0,因此,会造成不必要的间隙。
 
7,<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
 
8,国际化信息的属性配置文件全部存放于classes目录下。
 
9,如何利用<s:property>来调用session中的DTO?
可以使用<s:property vaue="#session['loginDTO'].employeeName"/>
 
10,JS中的location对象。
该对象用于返回窗口或框架的URL。location.search则用于返回location的查询部分,即参数部分。例如,URL=http://www.automark.com?a=1&b=2,search返回?a=1&b=2,注意在JS中字符串位置是从0开始,而不是从1开始。
 
11,JS中如何定义类。
可以使用如下所示的方法。
function Object1(name,age){
  this.name=name;
  this.age=age;
}
利用new新建对象,例如,object1=new Object1('Dick',20);
object2=new Object1('Mike',30);
 
12,利用Ext拷贝对象属性,例如,
Ext.apply(object1,object2)。注意,object2参数可以缺省,但object2不可以是undefined的。最完整的模式为Ext.apply(object1,object2,default。如果有同名属性,则覆盖其值。
 
13,JS实现状态栏文字,使用status="欢迎光临";
        页面跳转,location.href="http://www.sohu.com"进行处理。
 
14,关于JSON.
JSON(JavaScript Object Notation),是一种简单的数据格式,比XML更轻巧。JSON是JS的原生格式。JSON数据对象是一个集合,集合中的元素是无序的“名称/值”对。JSON对象以“{”开始,以“}”结束。名称与值之间使用“:”分隔,“名称/值”对之间使用“,”分隔。
 
15,JS,注意JS代码的执行顺序。
在<head>中定义的S代码不能通过document.getElementById()来获得<body>中的元素。这里的JS代码值,只直接执行的,非fuction()内部的代码。
 
16,JS中eval()的功能。
   ① 将普通字符变成运算表达式。
   ②将普通字符转变为对象
   ③用于执行JS代码,注意此处的JS代码无需<script>声明。
 
17,注意innerHTML在IE6.0中支持不好。innerHTML代表标签内部的子标签和文本,而innerText则代表标签内部的文本。另外,FF不支持innerHTML。
 
18,Struts2启动时,需要的最小类库组合。
commons-logging.jar, freemark.jar, ognl.jar, struts2-core.jar,xwork.jar。
当然每个jar包都有各自的版本号。
 
19, 使用session跟踪用户信息。
为了访问HttpSession实例,struts2提供了一个ActionContext类。该类提供了一个getSession()方法,即ActionContext.getContext().getSession()。该方法返回一个Map,如果为该Map添加一个属性/值对,那么可以使用getSession().put("user",getUserName())  将某个属性值压入Map中。在JSP页中可以使用${sessionScope.user}来获得user的值。
 
20,Action.field的值如何与JSP页进行信息交互。(摘自李刚的Struts权威指南)
当Action设置了某个属性值后,struts2将这些属性全部封装于一个叫做struts.valueStack的请求属性中。可以通过request.getAttribute("struts.valueStack")来获得该对象。
①valueStack vs=(ValueStack)request.getAttribute("struts.valueStack");
//其中包含了所有field的值。
String[] books=(String[])vs.findValue("books");
//获得某个数组属性books
②使用OGNL进行访问。
<s:iterator value="books" status="index">
    <s:if test=""#index.odd == true">
        ...........................
    </s:if>
</s:iterator>
原创粉丝点击