在Struts-config.xml中对ActionForm Bean的生命周期用scope进行定义,可用的选项有:pageContext(缺省)、request(常用)、session、application,分别对应于页作用域、请求域、会话域和应用程序域。

TestForm testForm = (TestForm) request.getAttribute( “testForm” );//不推荐使用

Struts标记库

Bean标记(Struts-bean.tld):用来在JSP页面中管理bean,Struts中的ActionForm Bean就可以通过bean标记来管理和使用。

逻辑标记(Struts-logic.tld):用来在JSP页面中控制流程,可以实现简单的判断分支和循环等流程控制。

HTML标记(Struts-html.tld):用来生成HTML标记、在表单中显示数据,使用会话ID对URL进行编码。

模板标记(Struts-template.tld):使用动态模板构造普通格式的页。

作为ActionForm Bean属性存在的String或者int等基本数据类型的数据,可以直接在页面中用<bean:write name="formName" property="property" /> 输出。在Struts资源定义文件中定义的资源可以用<bean:message key="key.name" />输出

用html标记显示ActionForm Bean属性时,Struts会自动转换属性值到对应的HTML标签中。如:自动设置Select的当前选项,自动checked对应值的radio标签等。

复选框的使用

Struts中用<html:multibox>标记来标识复选框,复选框对应于ActionForm Bean中的一个字符串数组类型的属性,例如:TestForm有一个属性为String[] mList,则用以下标记可以将用户的选择情况传递到服务器。

<html:multibox name="testForm" property="mList">1</html:multibox>

<html:multibox name="testForm" property="mList">2</html:multibox>

<html:multibox name="testForm" property="mList">3</html:multibox>

<html:multibox name="testForm" property="mList">4</html:multibox>

<html:multibox name="testForm" property="mList">A</html:multibox>

<html:multibox name="testForm" property="mList">B</html:multibox>

则在Action中对testForm.mList的各元素进行访问即可知道用户提交的选择情况,mList中只存储被选中的元素。例:一种可能的选择是 mList[0]=”2”,mList[1]=”4”,mList[2]=”A”。

注意:在JavaSctipt中的mList的使用方式与此不同,只能通过mList[i].checked的值来判断某选项是否被选择。对应于上例应该有:

mList[0].checked               false

mList[1].checked               true

mList[2].checked               false

mList[3].checked               true

mList[4].checked               true

mList[5].checked               false

 

ActionMapping对象帮助进行框架内部的流程控制,它们可将请求URI映射到Action类,并且将Action类与ActionForm bean相关联。ActionServlet在内部使用这些映射,并将控制转移到特定Action类的实例。返回一个ActionForward对象,其中包括响应转发的目标资源名称。

Hibernate

级联(cascade)在Hibernate映射关系中是个非常重要的概念。它指的是当主控方执行操作时,关联对象(被动方)是否同步执行同一操作。如对主控对象调用save-update或delete方法时,是否同时对关联对象(被动方)进行save-update或delete。

inverse用于标识双向关联中的被动方一端。inverse=false的一方(主控方)负责维护关联关系。默认值: false

在 one-to-many 关系中,将many 一方设为主动方(inverse=false)将有助性能的改善。

VO经过Hibernate进行处理,就变成了PO。

在sessionFactory.openSession()中,hibernate会初始化数据库连接,与此同时,将其AutoCommit 设为关闭状态(false)

悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。乐观锁机制避免了长事务中的数据库加锁开销(操作员A和操作员B操作过程中,都没有对数据库数据加锁),大大提升了大并发量下的系统整体性能表现。

其中SwarmCache和JBossCache均提供了分布式缓存实现(Cache集群)。

Hibernate 的数据库查询机制。我们从查询结果中取出数据的时候,

用的最多的是两个方法:

Query.list();

Query.iterate();

ThreadLocal的独特之处,它会为每个线程维护一个私有的变量空间

public class TestServlet extends HttpServlet {

private ThreadLocal localSession = new ThreadLocal();

public void doGet( HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

localSession.set(getSession());

doSomething();

session.flush();

}

public void doSomething(){

Session session = (Session)localSession.get();

......//基于session的存取操作

}

}

最新文章

  1. js jquery 页面加载初始化方法
  2. Java 分割文件 注意事项
  3. asp.net数据库操作类(二)
  4. CodeForces462B
  5. webuploader插件,我踩得坑
  6. Git的一些知识
  7. ad network 和 ad exchange 的对比
  8. Html5 Canvas介绍
  9. 查询数据库游标使用情况以及sql
  10. 编写高效的 CSS 选择器
  11. OpenCV 填充(ROI)+模糊操作
  12. http协议的学习
  13. STL其他--&lt;tuple&gt;用法【C11】
  14. FlexPaper:使用flash在线展示pdf
  15. mysql存储过程中使用事务
  16. pycharm 提示性信息
  17. 析构方法 deinit
  18. 更新Python以及随后的nose,easy_install,pip,numpy,scipy和theano
  19. sharepoint 2013 补丁升级步骤
  20. 【hdoj_1715】大菲波数(大数+100000000进制)

热门文章

  1. SQL2008安装自动退出
  2. [mysql] ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.
  3. App开发者必备的运营、原型、UI设计工具整理
  4. mootools upgrate from 1.2 to 1.3 or 1.4
  5. IOS开发-键盘通知自定义键盘
  6. HTML5 中已经可以用 Ajax 上传文件了,而且代码非常简单,借助 FormData 类即可发送文件数据。
  7. linux svn迁移备份的三种方法
  8. sudo gem install cocoapods
  9. (转)HelloWorld CMake CMake中构建静态库与动态库及其使用
  10. 一个优秀的C#开源绘图软件 DrawTools