Struts(19)Struts集成

Struts2 MVC架构

 

模型视图控制器(Model View Controller)或MVC,MVC是俗称,是一种软件设计模式,用于开发Web应用程序。模型 - 视图 - 控制器模式是由以下三个部分组成:

  • Model - 模型是负责维护数据最低级别。

  • View - 这是负责向用户显示的全部或部分数据。

  • Controller - 软件代码,控制模型和视图之间的相互作用。

MVC是受欢迎的,因为它从用户界面层,应用逻辑隔离,并支持关注点分离。在这里,控制器接收所有请求的应用和模型准备视图所需要的任何数据。查看,然后使用编制的数据由控制器生成最终像样的回应。 MVC抽象可以以图形方式显示如下。

Struts MVC

模型

该模型是负责管理应用程序的数据。它响应视图的请求,也响应从控制器的指示进行自我更新。

视图

在一个特定格式的数据,一个演示控制器的决定,显示数据所引发的。他们是基于脚本的模板系统,如JSP,ASP,PHP,并且很容易整合AJAX技术。

控制器

该控制器负责响应用户输入和执行数据模型对象的相互作用。控制器接收输入,验证输入,然后进行业务操作,修改数据模型的状态。

 

 

Struts2与Spring集成

 

Spring是一个流行的Web框架,它提供易于集成与很多常见的网络任务。所以,问题是,为什么我们需要Spring,当我们有Struts2?Spring是超过一个MVC框架 - 它提供了许多其它好用的东西,这是不是在Struts。例如:依赖注入可以是有用的任何框架。在本章中,我们将通过一个简单的例子来看看如何集成Spring和Struts2一起。

首先,需要添加下列文件到项目的构建路径从Spring安装。您可以下载并安装最新版本的Spring框架从 http://www.springsource.org/download

  • org.springframework.asm-x.y.z.M(a).jar

  • org.springframework.beans-x.y.z.M(a).jar

  • org.springframework.context-x.y.z.M(a).jar

  • org.springframework.core-x.y.z.M(a).jar

  • org.springframework.expression-x.y.z.M(a).jar

  • org.springframework.web-x.y.z.M(a).jar

  • org.springframework.web.servlet-x.y.z.M(a).jar

最后加入struts2-spring-plugin-x.y.z.jar在WEB-INF/lib从struts的lib目录。如果使用的是Eclipse,那么可能会面临一个异常的java.lang.ClassNotFoundException异常:org.springframework.web.context.ContextLoaderListener。为了解决这个问题,应该在一类依赖的标记标签右上点击快速修复发布/导出所有的依赖关系。最后,确保不存在依赖冲突标记“选项卡下。

Struts and Sprint Integration

现在让我们来设置web.xml中的Struts-Spring集成如下:

<span class="pun" style="margin: 0px; padding: 0px;"><?</span><span class="pln" style="margin: 0px; padding: 0px;">xml version</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"1.0"</span><span class="pln" style="margin: 0px; padding: 0px;"> encoding</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"UTF-8"</span><span class="pun" style="margin: 0px; padding: 0px;">?></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"><web-app</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">xmlns:xsi</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"http://www.w3.org/2001/XMLSchema-instance"</span><span class="pln" style="margin: 0px; padding: 0px;">
	</span><span class="atn" style="margin: 0px; padding: 0px;">xmlns</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"http://java.sun.com/xml/ns/javaee"</span><span class="pln" style="margin: 0px; padding: 0px;"> 
	</span><span class="atn" style="margin: 0px; padding: 0px;">xmlns:web</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span><span class="pln" style="margin: 0px; padding: 0px;">
	</span><span class="atn" style="margin: 0px; padding: 0px;">xsi:schemaLocation</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"</span><span class="pln" style="margin: 0px; padding: 0px;">
	</span><span class="atn" style="margin: 0px; padding: 0px;">id</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"WebApp_ID"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">version</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"3.0"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
	
   </span><span class="tag" style="margin: 0px; padding: 0px;"><display-name></span><span class="pln" style="margin: 0px; padding: 0px;">Struts 2</span><span class="tag" style="margin: 0px; padding: 0px;"></display-name></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><welcome-file-list></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><welcome-file></span><span class="pln" style="margin: 0px; padding: 0px;">index.jsp</span><span class="tag" style="margin: 0px; padding: 0px;"></welcome-file></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"></welcome-file-list></span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="tag" style="margin: 0px; padding: 0px;"><listener></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><listener-class></span><span class="pln" style="margin: 0px; padding: 0px;">
         org.springframework.web.context.ContextLoaderListener
      </span><span class="tag" style="margin: 0px; padding: 0px;"></listener-class></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"></listener></span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="tag" style="margin: 0px; padding: 0px;"><filter></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><filter-name></span><span class="pln" style="margin: 0px; padding: 0px;">struts2</span><span class="tag" style="margin: 0px; padding: 0px;"></filter-name></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><filter-class></span><span class="pln" style="margin: 0px; padding: 0px;">
         org.apache.struts2.dispatcher.FilterDispatcher
      </span><span class="tag" style="margin: 0px; padding: 0px;"></filter-class></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"></filter></span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="tag" style="margin: 0px; padding: 0px;"><filter-mapping></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><filter-name></span><span class="pln" style="margin: 0px; padding: 0px;">struts2</span><span class="tag" style="margin: 0px; padding: 0px;"></filter-name></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><url-pattern></span><span class="pln" style="margin: 0px; padding: 0px;">/*</span><span class="tag" style="margin: 0px; padding: 0px;"></url-pattern></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"></filter-mapping></span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="tag" style="margin: 0px; padding: 0px;"></web-app></span>

这里要注意的最重要的事情是我们已经配置了监听器。 ContextLoaderListener的需要加载Spring上下文文件。 Spring的配置文件名为applicationContext.xml文件,它必须放置在同一水平web.xml文件

让我们创建一个简单的动作类称为User.java的两个属性 - firstName和lastName。

<span class="kwd" style="margin: 0px; padding: 0px;">package</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">yiibai</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">struts2</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">class</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">User</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">private</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> firstName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">private</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> lastName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> execute</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">"success"</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> getFirstName</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> firstName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">void</span><span class="pln" style="margin: 0px; padding: 0px;"> setFirstName</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> firstName</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">this</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">firstName </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> firstName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> getLastName</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> lastName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">void</span><span class="pln" style="margin: 0px; padding: 0px;"> setLastName</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> lastName</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">this</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">lastName </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> lastName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="pun" style="margin: 0px; padding: 0px;">}</span>

现在,让我们一起创造了applicationContext.xml spring 配置文件并创建实例User.java类。正如前面提到的,这个文件应该在WEB-INF文件夹下:

<span class="pun" style="margin: 0px; padding: 0px;"><?</span><span class="pln" style="margin: 0px; padding: 0px;">xml version</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"1.0"</span><span class="pln" style="margin: 0px; padding: 0px;"> encoding</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"UTF-8"</span><span class="pun" style="margin: 0px; padding: 0px;">?></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="dec" style="margin: 0px; padding: 0px;"><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd"></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><beans></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><bean</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">id</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"userClass"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">class</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"com.yiibai.struts2.User"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"firstName"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">value</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"Michael"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="tag" style="margin: 0px; padding: 0px;">/></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"lastName"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">value</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"Jackson"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="tag" style="margin: 0px; padding: 0px;">/></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"></bean></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"></beans></span>

正如上面看到的,我们已经配置了用户bean,我们放值MichaelJackson到bean。我们也给这个bean名称“userClass”,这样我们就可以重用在其他地方。接下来,让我们在WebContent文件夹中创建由user.jsp:

<span class="pun" style="margin: 0px; padding: 0px;"><%@</span><span class="pln" style="margin: 0px; padding: 0px;"> page language</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"java"</span><span class="pln" style="margin: 0px; padding: 0px;"> contentType</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"text/html; charset=ISO-8859-1"</span><span class="pln" style="margin: 0px; padding: 0px;">
	pageEncoding</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"ISO-8859-1"</span><span class="pln" style="margin: 0px; padding: 0px;">%>
</span><span class="pun" style="margin: 0px; padding: 0px;"><%@</span><span class="pln" style="margin: 0px; padding: 0px;"> taglib prefix</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"s"</span><span class="pln" style="margin: 0px; padding: 0px;"> uri</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"/struts-tags"</span><span class="pln" style="margin: 0px; padding: 0px;">%>
</span><span class="dec" style="margin: 0px; padding: 0px;"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"></span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="tag" style="margin: 0px; padding: 0px;"><html></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"><head></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"><title></span><span class="pln" style="margin: 0px; padding: 0px;">Hello World</span><span class="tag" style="margin: 0px; padding: 0px;"></title></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"></head></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"><body></span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="tag" style="margin: 0px; padding: 0px;"><h1></span><span class="pln" style="margin: 0px; padding: 0px;">Hello World From Struts2 - Spring integration</span><span class="tag" style="margin: 0px; padding: 0px;"></h1></span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="tag" style="margin: 0px; padding: 0px;"><s:form></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><s:textfield</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"firstName"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">label</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"First Name"</span><span class="tag" style="margin: 0px; padding: 0px;">/><br/></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><s:textfield</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"lastName"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">label</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"Last Name"</span><span class="tag" style="margin: 0px; padding: 0px;">/><br/></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"></s:form></span><span class="pln" style="margin: 0px; padding: 0px;">
	
</span><span class="tag" style="margin: 0px; padding: 0px;"></body></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"></html></span>

由user.jsp文件相当直接。它只有一个目的 - 显示的名字和姓氏的用户对象的值。最后,让我们把所有的实体一起使用struts.xml文件。

<span class="pun" style="margin: 0px; padding: 0px;"><?</span><span class="pln" style="margin: 0px; padding: 0px;">xml version</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"1.0"</span><span class="pln" style="margin: 0px; padding: 0px;"> encoding</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"UTF-8"</span><span class="pun" style="margin: 0px; padding: 0px;">?></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="dec" style="margin: 0px; padding: 0px;"><!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"></span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="tag" style="margin: 0px; padding: 0px;"><struts></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><constant</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"struts.devMode"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">value</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"true"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="tag" style="margin: 0px; padding: 0px;">/></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><package</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"helloworld"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">extends</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"struts-default"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><action</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"user"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">class</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"userClass"</span><span class="pln" style="margin: 0px; padding: 0px;"> 
         </span><span class="atn" style="margin: 0px; padding: 0px;">method</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"execute"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
         </span><span class="tag" style="margin: 0px; padding: 0px;"><result</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"success"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">/User.jsp</span><span class="tag" style="margin: 0px; padding: 0px;"></result></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"></action></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"></package></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"></struts></span>

重要的是要注意的是,我们使用id userClass的引用类。这意味着,我们使用的是spring 做的User类的依赖注入。

现在右击项目名称,并单击Export > WAR File创建一个WAR文件。然后部署这个WAR在Tomcat的webapps目录下。最后,启动Tomcat服务器和尝试访问URL http://localhost:8080/HelloWorldStruts2/User.jsp。这会给你以下画面:

Struts and Spring Integration

现在我们已经看到了如何将两个伟大的框架 Struts - Spring集成。

 

Struts2和Hibernate集成

 

 

Hibernate是一个高性能的对象/关系持久性和查询服务许可下的开源GNU通用公共许可证(LGPL),并免费下载。在这一章中,我们要学习如何实现Struts2与Hibernate集成。如果你不熟悉与Hibernate,那么可以查看我们的Hibernate教程

数据库设置:

在本教程中,我会使用“struts2_tutorial”MySQL数据库。我连接到我的机器上使用这个数据库的用户名“root”,并且没有密码。首先,你需要运行下面的脚本。此脚本创建称为student ,并创建一个新的表,此表中的记录数:

<span class="pln" style="margin: 0px; padding: 0px;">CREATE TABLE IF NOT EXISTS </span><span class="str" style="margin: 0px; padding: 0px;">`student`</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="pln" style="margin: 0px; padding: 0px;">
  </span><span class="str" style="margin: 0px; padding: 0px;">`id`</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">int</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="lit" style="margin: 0px; padding: 0px;">11</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> NOT NULL AUTO_INCREMENT</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;">
  </span><span class="str" style="margin: 0px; padding: 0px;">`first_name`</span><span class="pln" style="margin: 0px; padding: 0px;"> varchar</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="lit" style="margin: 0px; padding: 0px;">40</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> NOT NULL</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;">
  </span><span class="str" style="margin: 0px; padding: 0px;">`last_name`</span><span class="pln" style="margin: 0px; padding: 0px;"> varchar</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="lit" style="margin: 0px; padding: 0px;">40</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> NOT NULL</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;">
  </span><span class="str" style="margin: 0px; padding: 0px;">`marks`</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">int</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="lit" style="margin: 0px; padding: 0px;">11</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> NOT NULL</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;">
  PRIMARY KEY </span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="str" style="margin: 0px; padding: 0px;">`id`</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="pun" style="margin: 0px; padding: 0px;">);</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="pun" style="margin: 0px; padding: 0px;">--</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="pun" style="margin: 0px; padding: 0px;">--</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">Dumping</span><span class="pln" style="margin: 0px; padding: 0px;"> data </span><span class="kwd" style="margin: 0px; padding: 0px;">for</span><span class="pln" style="margin: 0px; padding: 0px;"> table </span><span class="str" style="margin: 0px; padding: 0px;">`student`</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="pun" style="margin: 0px; padding: 0px;">--</span><span class="pln" style="margin: 0px; padding: 0px;">

INSERT INTO </span><span class="str" style="margin: 0px; padding: 0px;">`student`</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="str" style="margin: 0px; padding: 0px;">`id`</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">`first_name`</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">`last_name`</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">`marks`</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> 
  VALUES</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="lit" style="margin: 0px; padding: 0px;">1</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">'George'</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">'Kane'</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="lit" style="margin: 0px; padding: 0px;">20</span><span class="pun" style="margin: 0px; padding: 0px;">);</span><span class="pln" style="margin: 0px; padding: 0px;">
INSERT INTO </span><span class="str" style="margin: 0px; padding: 0px;">`student`</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="str" style="margin: 0px; padding: 0px;">`id`</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">`first_name`</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">`last_name`</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">`marks`</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> 
  VALUES</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="lit" style="margin: 0px; padding: 0px;">2</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">'Melissa'</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">'Michael'</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="lit" style="margin: 0px; padding: 0px;">91</span><span class="pun" style="margin: 0px; padding: 0px;">);</span><span class="pln" style="margin: 0px; padding: 0px;">
INSERT INTO </span><span class="str" style="margin: 0px; padding: 0px;">`student`</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="str" style="margin: 0px; padding: 0px;">`id`</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">`first_name`</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">`last_name`</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">`marks`</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> 
  VALUES</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="lit" style="margin: 0px; padding: 0px;">3</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">'Jessica'</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">'Drake'</span><span class="pun" style="margin: 0px; padding: 0px;">,</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="lit" style="margin: 0px; padding: 0px;">21</span><span class="pun" style="margin: 0px; padding: 0px;">);</span>

Hibernate的配置:

接下来让我们创建这是Hibernate的配置文件hibernate.cfg.xml中。

<span class="pun" style="margin: 0px; padding: 0px;"><?</span><span class="pln" style="margin: 0px; padding: 0px;">xml version</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">'1.0'</span><span class="pln" style="margin: 0px; padding: 0px;"> encoding</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">'utf-8'</span><span class="pun" style="margin: 0px; padding: 0px;">?></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="dec" style="margin: 0px; padding: 0px;"><!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"></span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="tag" style="margin: 0px; padding: 0px;"><hibernate-configuration></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"><session-factory></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"hibernate.connection.driver_class"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">c
      om.mysql.jdbc.Driver
   </span><span class="tag" style="margin: 0px; padding: 0px;"></property></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"hibernate.connection.url"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
      jdbc:mysql://www.yiibai.com/struts_tutorial
   </span><span class="tag" style="margin: 0px; padding: 0px;"></property></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"hibernate.connection.username"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">root</span><span class="tag" style="margin: 0px; padding: 0px;"></property></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"hibernate.connection.password"</span><span class="tag" style="margin: 0px; padding: 0px;">></property></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"hibernate.connection.pool_size"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">10</span><span class="tag" style="margin: 0px; padding: 0px;"></property></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"show_sql"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">true</span><span class="tag" style="margin: 0px; padding: 0px;"></property></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"dialect"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
      org.hibernate.dialect.MySQLDialect
   </span><span class="tag" style="margin: 0px; padding: 0px;"></property></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"hibernate.hbm2ddl.auto"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">update</span><span class="tag" style="margin: 0px; padding: 0px;"></property></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><mapping</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">class</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"com.yiibai.hibernate.Student"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="tag" style="margin: 0px; padding: 0px;">/></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"></session-factory></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"></hibernate-configuration></span><span class="pln" style="margin: 0px; padding: 0px;"> </span>

让我们通过hibernate的配置文件。首先,我们正在使用的MySQL驱动程序。然后,我们声明 JDBC URL连接到数据库。然后,声明连接的用户名,密码以及池的大小。我们也表示,我们希望“show_sql”转向真正看到SQL的日志文件中。请经过Hibernate教程,了解这些属性是什么意思。最后,我们设置了的映射类com.yiibai.hibernate.Student,我们将本章中创建。

环境设置:

接下来,这个项目需要一大堆的jar文件。附所需的JAR文件的完整列表的截图:

Struts and Hibernate Jars

大部分的JAR文件可以作为Struts的分布的一部分。如果有一个如GlassFish应用服务器,WebSphere或JBoss安装,那么可以得到的大部分jar文件从应用服务器的lib文件夹。如果没有,可以单独下载的文件:

其余的文件,应该能够从struts2的分发得到。

Hibernate 类:

现在让我们来创建Hibernate集成所需的Java类。以下内容Student.java:

<span class="kwd" style="margin: 0px; padding: 0px;">package</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">yiibai</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">hibernate</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> javax</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">persistence</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">Column</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> javax</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">persistence</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">Entity</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> javax</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">persistence</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">GeneratedValue</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> javax</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">persistence</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">Id</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> javax</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">persistence</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">Table</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="lit" style="margin: 0px; padding: 0px;">@Entity</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="lit" style="margin: 0px; padding: 0px;">@Table</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="pln" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"student"</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">class</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
	
   </span><span class="lit" style="margin: 0px; padding: 0px;">@Id</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="lit" style="margin: 0px; padding: 0px;">@GeneratedValue</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">private</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">int</span><span class="pln" style="margin: 0px; padding: 0px;"> id</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="lit" style="margin: 0px; padding: 0px;">@Column</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="pln" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"last_name"</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">private</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> lastName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="lit" style="margin: 0px; padding: 0px;">@Column</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="pln" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"first_name"</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">private</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> firstName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">private</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">int</span><span class="pln" style="margin: 0px; padding: 0px;"> marks</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">int</span><span class="pln" style="margin: 0px; padding: 0px;"> getId</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
    </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> id</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">void</span><span class="pln" style="margin: 0px; padding: 0px;"> setId</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="kwd" style="margin: 0px; padding: 0px;">int</span><span class="pln" style="margin: 0px; padding: 0px;"> id</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
    </span><span class="kwd" style="margin: 0px; padding: 0px;">this</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">id </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> id</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> getLastName</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> lastName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">void</span><span class="pln" style="margin: 0px; padding: 0px;"> setLastName</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> lastName</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">this</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">lastName </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> lastName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> getFirstName</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> firstName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">void</span><span class="pln" style="margin: 0px; padding: 0px;"> setFirstName</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> firstName</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">this</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">firstName </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> firstName</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">int</span><span class="pln" style="margin: 0px; padding: 0px;"> getMarks</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> marks</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">void</span><span class="pln" style="margin: 0px; padding: 0px;"> setMarks</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="kwd" style="margin: 0px; padding: 0px;">int</span><span class="pln" style="margin: 0px; padding: 0px;"> marks</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">this</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">marks </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> marks</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="pun" style="margin: 0px; padding: 0px;">}</span>

这是一个POJO类,Hibernate的规范表。它拥有属性id,firstName和lastName学生表中的列名对应。接下来让我们创建StudentDAO.java文件如下:

<span class="kwd" style="margin: 0px; padding: 0px;">package</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">yiibai</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">hibernate</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> java</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">util</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">ArrayList</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> java</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">util</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">List</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> org</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">hibernate</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">Session</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> org</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">hibernate</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">Transaction</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">googlecode</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">s2hibernate</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">struts2</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">plugin</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">\
                     annotations</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">SessionTarget</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">googlecode</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">s2hibernate</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">struts2</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">plugin</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">\
                     annotations</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">TransactionTarget</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">class</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">StudentDAO</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
	
   </span><span class="lit" style="margin: 0px; padding: 0px;">@SessionTarget</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="typ" style="margin: 0px; padding: 0px;">Session</span><span class="pln" style="margin: 0px; padding: 0px;"> session</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="lit" style="margin: 0px; padding: 0px;">@TransactionTarget</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="typ" style="margin: 0px; padding: 0px;">Transaction</span><span class="pln" style="margin: 0px; padding: 0px;"> transaction</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="lit" style="margin: 0px; padding: 0px;">@SuppressWarnings</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="str" style="margin: 0px; padding: 0px;">"unchecked"</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">List</span><span class="pun" style="margin: 0px; padding: 0px;"><</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;"> getStudents</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="typ" style="margin: 0px; padding: 0px;">List</span><span class="pun" style="margin: 0px; padding: 0px;"><</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;"> students </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">new</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">ArrayList</span><span class="pun" style="margin: 0px; padding: 0px;"><</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">>();</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">try</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
         students </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> session</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">createQuery</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="str" style="margin: 0px; padding: 0px;">"from Student"</span><span class="pun" style="margin: 0px; padding: 0px;">).</span><span class="pln" style="margin: 0px; padding: 0px;">list</span><span class="pun" style="margin: 0px; padding: 0px;">();</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">catch</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="typ" style="margin: 0px; padding: 0px;">Exception</span><span class="pln" style="margin: 0px; padding: 0px;"> e</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
         e</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">printStackTrace</span><span class="pun" style="margin: 0px; padding: 0px;">();</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> students</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">void</span><span class="pln" style="margin: 0px; padding: 0px;"> addStudent</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pln" style="margin: 0px; padding: 0px;"> student</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      session</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">save</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="pln" style="margin: 0px; padding: 0px;">student</span><span class="pun" style="margin: 0px; padding: 0px;">);</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="pun" style="margin: 0px; padding: 0px;">}</span>

StudentDAO类,学生类是数据访问层。它有一些方法来列出所有学生,然后保存一个新的学生记录。

动作类:

以下文件AddStudentAction.java定义我们的动作类。我们这里有两个动作方法 - execute() 和 listStudents()。 execute()方法是用来添加新的学生记录。使用DAO的save()方法来实现这一目标。另一种方法,listStudents()用来列出学生。我们使用DAO的的列表方法得到所有学生的名单。 

<span class="kwd" style="margin: 0px; padding: 0px;">package</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">yiibai</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">struts2</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> java</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">util</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">ArrayList</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> java</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">util</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">List</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">opensymphony</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">xwork2</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">ActionSupport</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">opensymphony</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">xwork2</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">ModelDriven</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">yiibai</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">hibernate</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="kwd" style="margin: 0px; padding: 0px;">import</span><span class="pln" style="margin: 0px; padding: 0px;"> com</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">yiibai</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">hibernate</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="typ" style="margin: 0px; padding: 0px;">StudentDAO</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">class</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">AddStudentAction</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">extends</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">ActionSupport</span><span class="pln" style="margin: 0px; padding: 0px;"> 
            </span><span class="kwd" style="margin: 0px; padding: 0px;">implements</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">ModelDriven</span><span class="pun" style="margin: 0px; padding: 0px;"><</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">>{</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pln" style="margin: 0px; padding: 0px;"> student  </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">new</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">();</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="typ" style="margin: 0px; padding: 0px;">List</span><span class="pun" style="margin: 0px; padding: 0px;"><</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;"> students </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">new</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">ArrayList</span><span class="pun" style="margin: 0px; padding: 0px;"><</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">>();</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="typ" style="margin: 0px; padding: 0px;">StudentDAO</span><span class="pln" style="margin: 0px; padding: 0px;"> dao </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">new</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">StudentDAO</span><span class="pun" style="margin: 0px; padding: 0px;">();</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="lit" style="margin: 0px; padding: 0px;">@Override</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pln" style="margin: 0px; padding: 0px;"> getModel</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> student</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> execute</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      dao</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">addStudent</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="pln" style="margin: 0px; padding: 0px;">student</span><span class="pun" style="margin: 0px; padding: 0px;">);</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">"success"</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">String</span><span class="pln" style="margin: 0px; padding: 0px;"> listStudents</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      students </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> dao</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">getStudents</span><span class="pun" style="margin: 0px; padding: 0px;">();</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="str" style="margin: 0px; padding: 0px;">"success"</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pln" style="margin: 0px; padding: 0px;"> getStudent</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> student</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">void</span><span class="pln" style="margin: 0px; padding: 0px;"> setStudent</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pln" style="margin: 0px; padding: 0px;"> student</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">this</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">student </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> student</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="typ" style="margin: 0px; padding: 0px;">List</span><span class="pun" style="margin: 0px; padding: 0px;"><</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;"> getStudents</span><span class="pun" style="margin: 0px; padding: 0px;">()</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">return</span><span class="pln" style="margin: 0px; padding: 0px;"> students</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="kwd" style="margin: 0px; padding: 0px;">public</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="kwd" style="margin: 0px; padding: 0px;">void</span><span class="pln" style="margin: 0px; padding: 0px;"> setStudents</span><span class="pun" style="margin: 0px; padding: 0px;">(</span><span class="typ" style="margin: 0px; padding: 0px;">List</span><span class="pun" style="margin: 0px; padding: 0px;"><</span><span class="typ" style="margin: 0px; padding: 0px;">Student</span><span class="pun" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;"> students</span><span class="pun" style="margin: 0px; padding: 0px;">)</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="pun" style="margin: 0px; padding: 0px;">{</span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="kwd" style="margin: 0px; padding: 0px;">this</span><span class="pun" style="margin: 0px; padding: 0px;">.</span><span class="pln" style="margin: 0px; padding: 0px;">students </span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="pln" style="margin: 0px; padding: 0px;"> students</span><span class="pun" style="margin: 0px; padding: 0px;">;</span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="pun" style="margin: 0px; padding: 0px;">}</span><span class="pln" style="margin: 0px; padding: 0px;">
	
</span><span class="pun" style="margin: 0px; padding: 0px;">}</span>

实现ModelDriven接口你会注意到,这是用来当你的操作类处理一个具体的模型类(如学生),而不是个人属性(如名字,姓氏)。的ModelAware接口需要实现的方法,以返回到模型。在我们的例子中,我们返回“学生”对象。

创建视图文件:

现在让我们创建student.jsp视图文件包含以下内容:

 

 

<span class="pun" style="margin: 0px; padding: 0px;"><%@</span><span class="pln" style="margin: 0px; padding: 0px;"> page contentType</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"text/html; charset=UTF-8"</span><span class="pln" style="margin: 0px; padding: 0px;">%>
</span><span class="pun" style="margin: 0px; padding: 0px;"><%@</span><span class="pln" style="margin: 0px; padding: 0px;"> taglib prefix</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"s"</span><span class="pln" style="margin: 0px; padding: 0px;"> uri</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"/struts-tags"</span><span class="pln" style="margin: 0px; padding: 0px;">%>
</span><span class="tag" style="margin: 0px; padding: 0px;"><html></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"><head></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"><title></span><span class="pln" style="margin: 0px; padding: 0px;">Hello World</span><span class="tag" style="margin: 0px; padding: 0px;"></title></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"><s:head</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="tag" style="margin: 0px; padding: 0px;">/></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"></head></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"><body></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><s:form</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">action</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"addStudent"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><s:textfield</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"firstName"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">label</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"First Name"</span><span class="tag" style="margin: 0px; padding: 0px;">/></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><s:textfield</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"lastName"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">label</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"Last Name"</span><span class="tag" style="margin: 0px; padding: 0px;">/></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><s:textfield</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"marks"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">label</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"Marks"</span><span class="tag" style="margin: 0px; padding: 0px;">/></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><s:submit/></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><hr/></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><table></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><tr></span><span class="pln" style="margin: 0px; padding: 0px;">
         </span><span class="tag" style="margin: 0px; padding: 0px;"><td></span><span class="pln" style="margin: 0px; padding: 0px;">First Name</span><span class="tag" style="margin: 0px; padding: 0px;"></td></span><span class="pln" style="margin: 0px; padding: 0px;">
         </span><span class="tag" style="margin: 0px; padding: 0px;"><td></span><span class="pln" style="margin: 0px; padding: 0px;">Last Name</span><span class="tag" style="margin: 0px; padding: 0px;"></td></span><span class="pln" style="margin: 0px; padding: 0px;">
         </span><span class="tag" style="margin: 0px; padding: 0px;"><td></span><span class="pln" style="margin: 0px; padding: 0px;">Marks</span><span class="tag" style="margin: 0px; padding: 0px;"></td></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"></tr></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"><s:iterator</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">value</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"students"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">	
         </span><span class="tag" style="margin: 0px; padding: 0px;"><tr></span><span class="pln" style="margin: 0px; padding: 0px;">
            </span><span class="tag" style="margin: 0px; padding: 0px;"><td><s:property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">value</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"firstName"</span><span class="tag" style="margin: 0px; padding: 0px;">/></td></span><span class="pln" style="margin: 0px; padding: 0px;">
            </span><span class="tag" style="margin: 0px; padding: 0px;"><td><s:property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">value</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"lastName"</span><span class="tag" style="margin: 0px; padding: 0px;">/></td></span><span class="pln" style="margin: 0px; padding: 0px;">
            </span><span class="tag" style="margin: 0px; padding: 0px;"><td><s:property</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">value</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"marks"</span><span class="tag" style="margin: 0px; padding: 0px;">/></td></span><span class="pln" style="margin: 0px; padding: 0px;">
           </span><span class="tag" style="margin: 0px; padding: 0px;"></tr></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"></s:iterator></span><span class="pln" style="margin: 0px; padding: 0px;">	
   </span><span class="tag" style="margin: 0px; padding: 0px;"></table></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"></s:form></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"></body></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="tag" style="margin: 0px; padding: 0px;"></html></span>

非常简单student.jsp。在上面的部分,我们有一个形式提交到“addStudent.action”。这需要在名字,姓氏和备注。因为addStudent 动作,自动绑到ModelAware的“AddSudentAction”,将创建一个学生bean的名字,姓氏和标记自动填充的值。

在底部,我们去通过的学生名单(见AddStudentAction.java)。我们遍历列表和显示的值在表中的姓氏,名称和备注。

Struts 配置:

让我们把它放在一起使用struts.xml:

<span class="pun" style="margin: 0px; padding: 0px;"><?</span><span class="pln" style="margin: 0px; padding: 0px;">xml version</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"1.0"</span><span class="pln" style="margin: 0px; padding: 0px;"> encoding</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="str" style="margin: 0px; padding: 0px;">"UTF-8"</span><span class="pun" style="margin: 0px; padding: 0px;">?></span><span class="pln" style="margin: 0px; padding: 0px;">
</span><span class="dec" style="margin: 0px; padding: 0px;"><!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd"></span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="tag" style="margin: 0px; padding: 0px;"><struts></span><span class="pln" style="margin: 0px; padding: 0px;">
   </span><span class="tag" style="margin: 0px; padding: 0px;"><constant</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"struts.devMode"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">value</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"true"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="tag" style="margin: 0px; padding: 0px;">/></span><span class="pln" style="margin: 0px; padding: 0px;">

   </span><span class="tag" style="margin: 0px; padding: 0px;"><package</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"myhibernate"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">extends</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"hibernate-default"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">

      </span><span class="tag" style="margin: 0px; padding: 0px;"><action</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"addStudent"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">method</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"execute"</span><span class="pln" style="margin: 0px; padding: 0px;">
         </span><span class="atn" style="margin: 0px; padding: 0px;">class</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"com.yiibai.struts2.AddStudentAction"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
         </span><span class="tag" style="margin: 0px; padding: 0px;"><result</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"success"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">type</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"redirect"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
               listStudents
         </span><span class="tag" style="margin: 0px; padding: 0px;"></result></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"></action></span><span class="pln" style="margin: 0px; padding: 0px;">

      </span><span class="tag" style="margin: 0px; padding: 0px;"><action</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"listStudents"</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">method</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"listStudents"</span><span class="pln" style="margin: 0px; padding: 0px;">
         </span><span class="atn" style="margin: 0px; padding: 0px;">class</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"com.yiibai.struts2.AddStudentAction"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">
         </span><span class="tag" style="margin: 0px; padding: 0px;"><result</span><span class="pln" style="margin: 0px; padding: 0px;"> </span><span class="atn" style="margin: 0px; padding: 0px;">name</span><span class="pun" style="margin: 0px; padding: 0px;">=</span><span class="atv" style="margin: 0px; padding: 0px;">"success"</span><span class="tag" style="margin: 0px; padding: 0px;">></span><span class="pln" style="margin: 0px; padding: 0px;">/students.jsp</span><span class="tag" style="margin: 0px; padding: 0px;"></result></span><span class="pln" style="margin: 0px; padding: 0px;">
      </span><span class="tag" style="margin: 0px; padding: 0px;"></action></span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="tag" style="margin: 0px; padding: 0px;"></package></span><span class="pln" style="margin: 0px; padding: 0px;">

</span><span class="tag" style="margin: 0px; padding: 0px;"></struts></span>

这里要注意的最重要的事情是,我们包函“myhibernate”扩展Struts2默认包称为“hibernate-default”。然后我们声明两个动作 - addStudent和listStudents。 addStudent调用execute()上AddStudentAction类,然后,它调用listStudents操作方法successs。

listStudent动作方法调用listStudents()上AddStudentAction类作为视图,并使用student.jsp

现在右击项目名称,并单击Export > WAR 文件创建一个WAR文件。然后部署这个WAR在Tomcat的webapps目录下。最后,启动Tomcat服务器和尝试访问URL http://localhost:8080/HelloWorldStruts2/student.jsp。这会给你以下画面: 

Struts and Hibernate Result

在上面的部分,我们得到的一种形式,进入一个新的学生记录和底部列出了学生在数据库中的值。继续并添加一个新的学生记录,按提交。屏幕将刷新并显示您的更新列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值