Eva*_*iam 6 java jsp hibernate struts2 xml-configuration
我正在尝试使用Hibernate将数据库记录显示到Struts 2中的JSP页面.我成功完成了检索部分.
但无论我做什么,我似乎都无法在JSP页面中显示数据.
我试过在互联网上找到各种解决方案.但是无法理解什么似乎是问题所在.我可以看到表列名,但其中没有数据.我在User POJO课程中拥有所有必需的getter和setter.
我附上了我的代码:
注册行动:
public class RegisterAction extends ActionSupport{
String name,pwd,email,address;
int phno;
public RegisterAction() {}
List<User> users = new ArrayList<User>();
UserDao udao = new UserDao();
//Getters and setters.
public String execute() throws Exception {
User u=new User();
u.setName(name);
u.setEmail(email);
u.setAddress(address);
u.setPhno(phno);
u.setPwd(pwd);
udao.addUser(u);
return "success";
}
public String listAllUsers(){
users = udao.getUsers();
System.out.println("In Action, "+users);
return "success";
}
}
Run Code Online (Sandbox Code Playgroud)
UserDao
:
public class UserDao{
List<User> allUsers = new ArrayList<User>();
public UserDao() {}
//Getter and setter.
public Session getSession(){
return HibernateUtil.getSession();
}
public void closeSession(){
HibernateUtil.closeSession();
}
public void addUser(User u) {
Session session= getSession();
Transaction t = session.beginTransaction();
int i = (Integer)session.save(u);
t.commit();
closeSession();
}
public List<User> getUsers() {
Session session=getSession();
Transaction t = session.beginTransaction();
allUsers = (List<User>)session.createQuery("from User").list();
t.commit();
closeSession();
System.out.print(allUsers);
return allUsers;
}
}
Run Code Online (Sandbox Code Playgroud)
User.java
//实体类:
@Entity
@Table(name="tbl_user")
public class User {
@Id
@GeneratedValue
@Column(name="user_id")
private int id;
@Column(name="user_phno")
int phno;
@Column(name="user_name")
private String name;
@Column(name="user_pwd")
private String pwd;
@Column(name="user_email")
private String email;
@Column(name="user_address")
private String address;
public User(){}
public User(String name,String pwd,String email,String address,int phno){
this.name = name;
this.pwd = pwd;
this.email = email;
this.address =address;
this.phno = phno;
}
//Getters and setters.
}
Run Code Online (Sandbox Code Playgroud)
home.jsp
:
<table>
<tr>
<th>Name</th>
<th>Email</th>
<th>Address</th>
<th>Phone No</th>
</tr>
<s:iterator value="users">
<tr>
<td><s:property value="name"/></td>
<td><s:property value="email"/></td>
<td><s:property value="address"/></td>
<td><s:property value="phno"/></td>
</tr>
</s:iterator>
</table>
Run Code Online (Sandbox Code Playgroud)
struts.xml
:
<action name="register" class="action.RegisterAction" method="execute">
<result name="success" type="redirect">listUsers</result>
</action>
<action name="listUsers" class="action.RegisterAction" method="listAllUsers">
<result name="success">/home.jsp</result>
</action>
Run Code Online (Sandbox Code Playgroud)
HibernateUtil
:
public class HibernateUtil {
static SessionFactory sessionFactory;
static Session session;
public static Session getSession() {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
session= sessionFactory.openSession();
return session;
}
public void setSession(Session session) {
this.session = session;
}
public static void closeSession(){
session.close();
}
}
Run Code Online (Sandbox Code Playgroud)
服务器日志包含
[models.User@9c0fad, models.User@1c94f2c, models.User@16d06ef]
INFO: In Action, [models.User@9c0fad, models.User@1c94f2c, models.User@16d06ef]
Run Code Online (Sandbox Code Playgroud)
也许你明白,但不知道为什么你没有尝试解决它。如果要显示数据,首先应该将其放入数据库中。检查数据是否可用,通过客户端应用程序连接到它。连接到数据库的方法有很多,包括 IDE 提供的 JDBC 客户端应用程序。它还可以直接从您那里获取连接属性hibernate.cfg.xml
,并且能够测试连接。另外,请确保用于连接数据库的凭据具有对架构的 DML/DDL 访问权限,该架构可能应该手动创建。
该文件用于hibernate配置,您应该注意它,因为与hibernate版本对应的正确DTD才有效。
然后,您正在使用基于注释的映射,并且也应该在配置文件中进行配置。
接下来,DAO 不应该扩展 ,HibernateUtil
并且为 放置static
财产是session
一场灾难。DAO 不应具有static
属性。如果您想获得会话使用HibernateUtil.getSession()
,并且不要忘记在事务结束时关闭会话。我想您仍然没有实现我在之前的答案中提出的建议,所以您不知道如何从线程获取会话。无论如何,在构造函数中打开会话仅在您第一次使用该会话时有效,并且在关闭它后它不再可用。在开始事务之前,在方法中打开一个会话。
接下来,ModelDriven
@Quaternion 更好地描述了关于您的模型的几句话:您的模型仅用于查看 auser
并且不包含要显示的属性users
。
最后,methodexecute
是action配置使用的默认方法,你不应该映射这个方法,除非你知道你在做什么。
归档时间: |
|
查看次数: |
24628 次 |
最近记录: |