博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(二十六)Struts2 Hibernate集成
阅读量:4342 次
发布时间:2019-06-07

本文共 6513 字,大约阅读时间需要 21 分钟。

Hibernate是一个高性能的对象/关系留存和查询服务,它是根据开源GNU宽通用公共许可证(LGPL)许可的,可以免费下载。在这一章。 我们将学习如何实现Struts2 与Hibernate的集成。

数据库设置

对于本教程,我们将使用“struts2_tutorial”MySQL数据库,使用用户名“root”连接到机器上的这个数据库,不设密码。首先,你需要运行以下脚本。此脚本创建一个名为student的新表,并在此表中创建少量记录:

CREATE TABLE IF NOT EXISTS `student` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `first_name` varchar(40) NOT NULL,  `last_name` varchar(40) NOT NULL,  `marks` int(11) NOT NULL,  PRIMARY KEY (`id`));---- Dumping data for table `student`--INSERT INTO `student` (`id`, `first_name`, `last_name`, `marks`)   VALUES(1, 'George', 'Kane', 20);INSERT INTO `student` (`id`, `first_name`, `last_name`, `marks`)   VALUES(2, 'Melissa', 'Michael', 91);INSERT INTO `student` (`id`, `first_name`, `last_name`, `marks`)   VALUES(3, 'Jessica', 'Drake', 21);

  

Hibernate配置

接下来让我们创建hibernate.cfg.xml,它是hibernate配置文件。

c om.mysql.jdbc.Driver
jdbc:mysql://www.w3cschool.cn/struts_tutorial
root
10
true
org.hibernate.dialect.MySQLDialect
update

  

让我们过一下hibernate配置文件。首先,我们声明使用MySQL驱动程序。然后我们声明了jdbc url用于连接到数据库。接着我们声明连接的用户名,密码和池大小。我们还指出希望通过将“show_sql”打开为true来查看日志文件中的SQL。

环境搭建

这个项目需要很多jar文件,以下的是所需的JAR文件的完整列表的屏幕截图:

Struts和Hibernate的jar

大多数JAR文件可以作为struts分发的一部分获取。如果你有安装一个应用程序服务器,如glassfish,websphere或jboss,那么你可以从appserver的lib文件夹中获取大多数剩余的jar文件。如果没有,你可以单独下载文件:

  • Hibernate的jar文件- 

  • Struts的Hibernate插件- 

  • JTA文件- 

  • Dom4j文件- 

  • SLF4J文件- 

  • log4j文件- 

其余的文件,你应该能够从struts2 中分配。

Hibernate类

现在让我们为hibernate集成创建所需的java类。按照Student.java的内容:

package cn.w3cschool.hibernate;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="student")public class Student {	   @Id   @GeneratedValue   private int id;   @Column(name="last_name")   private String lastName;   @Column(name="first_name")   private String firstName;   private int marks;   public int getId() {    return id;   }   public void setId(int id) {    this.id = id;   }   public String getLastName() {      return lastName;   }   public void setLastName(String lastName) {      this.lastName = lastName;   }   public String getFirstName() {      return firstName;   }   public void setFirstName(String firstName) {      this.firstName = firstName;   }   public int getMarks() {      return marks;   }   public void setMarks(int marks) {      this.marks = marks;   }}

  

这是一个POJO类,根据Hibernate规范表示的student表。它具有对应于student表列名的属性id,firstName和lastName。接下来让我们创建StudentDAO.java文件,如下所示:

package cn.w3cschool.hibernate;import java.util.ArrayList;import java.util.List;import org.hibernate.Session;import org.hibernate.Transaction;import com.googlecode.s2hibernate.struts2.plugin.                     annotations.SessionTarget;import com.googlecode.s2hibernate.struts2.plugin.                     annotations.TransactionTarget;public class StudentDAO {	   @SessionTarget   Session session;   @TransactionTarget   Transaction transaction;   @SuppressWarnings("unchecked")   public List
getStudents() { List
students = new ArrayList
(); try { students = session.createQuery("from Student").list(); } catch(Exception e) { e.printStackTrace(); } return students; } public void addStudent(Student student) { session.save(student); }}

  

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

Action类

下面的文件AddStudentAction.java定义了我们的action类。我们在这里有两个action方法:execute()和listStudents()。execute()方法用于添加新的学生记录。我们使用dao的save()方法来实现这一点。另一种listStudents()方法用于列出学生。我们使用dao的列表方法来获取所有学生的列表。

package cn.w3cschool.struts2;import java.util.ArrayList;import java.util.List;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import cn.w3cschool.hibernate.Student;import cn.w3cschool.hibernate.StudentDAO;public class AddStudentAction extends ActionSupport             implements ModelDriven
{ Student student = new Student(); List
students = new ArrayList
(); StudentDAO dao = new StudentDAO(); @Override public Student getModel() { return student; } public String execute() { dao.addStudent(student); return "success"; } public String listStudents() { students = dao.getStudents(); return "success"; } public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } public List
getStudents() { return students; } public void setStudents(List
students) { this.students = students; } }

  

你会注意到我们正在实现ModelDriven接口。这是在你的action类处理一个具体的模型类(如Student)而不是个别的属性(如firstName,lastName)时使用。ModelAware接口需要你实现一个方法来返回模型。在我们的例子中,我们返回“student”对象。

创建视图文件

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

<%@ page contentType="text/html; charset=UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%>Hello World

First Name Last Name Marks

  

 

student.jsp非常简单。在上面部分,我们有一个提交到“addStudent.action”的表单。它接受firstName,lastName和marks。因为addStudent action绑定到ModelAware的“AddSudentAction”,所以将自动创建一个学生bean,其值自动填充为firstName,lastName和marks。

在下面部分,我们浏览学生列表(参见AddStudentAction.java),并在表中显示firstname,lastname和marks的值。

 

Struts配置

让我们使用struts.xml

listStudents
/students.jsp

  

 

要注意的要点是,我们的包“myhibernate”扩展了名为“hibernate-default”的struts2默认包。然后我们声明两个action:addStudent和listStudents。addStudent调用AddStudentAction类的execute(),然后在成功时调用listStudents方法。listStudent方法调用AddStudentAction类上的listStudents(),并使用student.jsp作为视图。

 

 

现在,右键单击项目名称,然后单击“Export”> “WAR File”以创建WAR文件。然后在Tomcat的webapps目录中部署WAR文件。最后,启动Tomcat服务器并尝试访问URL http://localhost:8080/HelloWorldStruts2/student.jsp,将显示以下界面:

Struts和Hibernate的集成

在上面部分,我们得到一个表单,输入新学生记录的值,下面部分列出数据库中的学生。继续添加一个新的学生记录,然后按提交。屏幕将刷新,并在每次单击提交时向你显示更新了的列表。

转载于:https://www.cnblogs.com/w894819398/p/7298352.html

你可能感兴趣的文章
django登录验证码操作
查看>>
(简单)华为Nova青春 WAS-AL00的USB调试模式在哪里开启的流程
查看>>
图论知识,博客
查看>>
[原创]一篇无关技术的小日记(仅作暂存)
查看>>
20145303刘俊谦 Exp7 网络欺诈技术防范
查看>>
原生和jQuery的ajax用法
查看>>
iOS开发播放文本
查看>>
20145202马超《java》实验5
查看>>
JQuery 事件
查看>>
main(argc,argv[])
查看>>
第四阶段 15_Linux tomcat安装与配置
查看>>
NAS 创建大文件
查看>>
学习笔记-模块之xml文件处理
查看>>
接口测试用例
查看>>
Sybase IQ导出文件的几种方式
查看>>
案例:手动输入一个字符串,打散放进一个列表,小写字母反序 大写字母保持不变...
查看>>
linux 系统下 tar 的压缩与解压缩命令
查看>>
阿里负载均衡,配置中间证书问题(在starcom申请免费DV ssl)
查看>>
转:How to force a wordbreaker to be used in Sharepoint Search
查看>>
MySQL存储过程定时任务
查看>>