项目积累——Strus、Hibernate

在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的存取操作

}

}

时间: 2024-08-28 18:21:54

项目积累——Strus、Hibernate的相关文章

项目积累(二)细节问题,提高用户体验

前两天和同事讨论公司系统一个身份证录入文本框,发现还有一个要录入年龄的文本框,都感觉挺麻烦的.其实当录入身份证号后,年龄就是固定的,想到这就动手写jQuery来改进系统,提高用户体验. 首先,身份证从第七位开始时年龄段,如:410223199910210000,这样,就获取身份证的从第七位开始和接下来的八位.在获取当前时间,相减获取年龄.这样 做还是不是准确的,还要考虑月份和具体每天.代码如下: 1 var nowDate = new Date(); 2 var month = nowDate.

项目积累——Blockingqueue,ConcurrentLinkedQueue,Executors

背景 通过做下面一个小的接口系统gate,了解一下mina和java并发包里的东西.A系统为javaweb项目,B为C语言项目,gate是本篇需要完成的系统. 需求 1. A为集群系统,并发较高,会批量发送给gate消息,并且接受gate返回的消息: 2. gate独立部署,将从A接受到的消息压入队列,与B建立连接后,将每条消息验证签名等工作后,发送给B,需要保证性能: 3. B负责处理消息,并返回处理结果,B为gate提供提供六个端口,一个端口可有三个长连接(须由gate发送心跳保持长连接,否

项目积累——Mina

继续上一篇,这篇主要讲通过mina往B端发送消息,并接受消息,mina是一个网络通信框架,封装了javaNIO,简单易用,网上有很多关于他的介绍,在此不赘述了. 如上篇所介绍,完成功能,需要五个类: PoolListener:监听,用来在系统启动的时候创建连接: SessionPool:连接池: SendHandler:处理类: CharsetEncoder:编码: CharsetDecoder:解码: B为我们提供了6个端口,每个端口可建立3个长连接,因此,在系统时,就要创建长连接,下面是一个

SSH 项目中 用Hibernate底层 简单的封装DAO层

废话不多少了,主要是使用hibernate的查询方法,自己封装了DAO层,供service来方便使用. 首先:必须要继承的 public class CommonDao extends HibernateDaoSupport 紧接着是要注入必须的数据源: @Resource private SessionFactory sessionFactory; @PostConstruct public void initSessionFactory() { super.setSessionFactory

当项目需要使用Hibernate框架技术时,对项目进行的配置

1.在需要使用Hibernate框架技术的项目上单击鼠标右键,在弹出的菜单中选择MyEclipse-->Add Hibernate Capabilities,打开Add Hibernate Capabilities对话框 2.在Hibernate Specification后面的单选按钮中选择你需要使用的Hibernate框架的版本,我这里使用的是Hibernate 3.1版本,然后点击Next>按钮进行下一步操作: 3.点击Next>进行下一步操作: 4.在下图中的DB Driver:

Eclipse中在web项目中添加hibernate

创建web项目 创建一个web项目,FirstHibernatePro 创建数据库连接 创建一个数据库连接,这里使用的是Mysql数据库:window-->show View-->Data Source Explorer,然后在Database Connections右键 New,选择Mysql,然后去添加自己的数据库连接,并且添加详细的配置和加入相应的数据库驱动包 然后选择ok,开始测试自己的数据库连接,最后finish如果Database Source Exploer中出现了自己的数据库以

搭建项目Maven+springMVC+hibernate时,JUnit測试出现报ClassNotFoundException错误的解决

近期在搭建Maven+springMVC+hibernate项目,正常启动项目时一切正常.但JUNIT測试时出现报ClassNotFoundException错误,经过细致排查发现没有生成class文件. 如今解决例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDE2MTA4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" &g

eclipse 新建 maven 项目 添加 spring hibernate 的配置文件 详情

主要配置文件 pom.xml 项目的maven 配置文件 管理项目所需 jar 依赖支持 web.xml 项目的总 配置文件  :添加 spring和hibernate 支持 applicationContext.xml   hibernate的配置文件 sping-servlet.xml spring的配置文件 jdbc-properties 数据库连接属性 文件 ------------------------------pom.xml 开始-------------------------

SSH电力项目一 搭建Hibernate框架

Hibernate所需要的基本文件: ElectText.java ElecText.hbm.xml hibernate.cfg.xml 第一步:创建测试表Elec_Text: create table Elec_Text(textID varchar(50) not null primary key,textName varchar(50),textDate datetime,textRemark varchar(500) ); 第二步:创建项目,导入jar包 第三步:持久层 (1)在com.