您的位置:首页 > 编程语言 > Java开发

[转]Struts2+hibernate例子

2011-06-21 09:51 260 查看
流程:



Hibernate的工作方式:
核心:Session,SessionFactory, configuration。
操作:在myeclispse中,先添加Hibernate capabilities,然后就是在Database Explore中,找到数据库的表, 进行映射处理。

Struts2:
关键:添加相应的jar包,配制web.xml,配制struts.xml。

说明:在Struts2+Hibernate时要注意,在相关的action(LoginAction)类中,一定要重写其构造函数LoginAction() { setDao(new OrderImpl())},注意要把操作类(DAO)的对象初始化,以便操作类进行相关操作。
另外:就是执行顺序问题,在struts.xml中的
<action name = “login” class = “com.test.action.LoginAction” method = “save”>
<result type = “redirect-action ”>/result.jsp</result>
</action>
如果action里有method的方法,则只会执行LoginAction中的save()方法,不会执行其execute()方法。如果action里没有method的方法,就会执行其execute()方法。不论有没有method的,程序都会先执行action的构造函数(LoginAction()),再去执行指定的方法。

Struts2+hibernate显示数据库中的数据:show.jsp
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<%@ taglib prefix = "s" uri = "/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title here</title>
</head>
<body topmargin="30%">
<table border="1" width="80%" align="center">
<caption align="right"><input type="button" value="新增" onclick="location='save.jsp'"></caption>
<tr align="center">
<td>订单编号</td><td>订单名称</td><td>订单数量</td><td>订单签署日期</td><td>操作</td>
</tr>
<%-- 这种方式也可以显示数据,os是从操作类获得的数据集
<s:iterator value="os" id="user" status="status">
<tr><td><s:property value="os[#status.index].orderid" />
</td></tr>
</s:iterator>
--%>
<s:iterator value="os" id="one" status="index">
<tr align="center" bgcolor="${index.odd?'00aaff':'' }">
<td>${orderid}</td><td>${ordername}</td>
<td>${ordernum}</td>
<td><s:date name="orderdate" format="yyyy/MM/dd"/></td>
<td><a href="one.action?order.orderid=${orderid}">修改</a>  
<a href="delete.action?order.orderid=${orderid}">删除</a></td>
</tr>
</s:iterator>
</table>
</body>
</html>

数据增加:sava.jsp,body部分
<body topmargin="30%">
<s:form action="save" method="post">
<table border="1" cellspacing="0" align="center">
<caption align="center"> 订单新增表</caption>
<tr>
<td><s:textfield name="order.ordername" label="订单名称" /> </td>
</tr>
<tr>
<td><s:textfield name="order.ordernum" label="订单数量" /></td>
</tr>
<tr>
<td><s:textfield name="order.orderdate" label="订单日期"/></td>
<%--<td><s:datetimepicker name="order.orderdate" toggleType="explode" label="订单日期" language="us_en"/> </td> --%>
</tr>
<tr>
<td>s:submit value="提交" /></td>
</tr>
</table>
</s:form>
</body>

数据修改部分:update.jsp
<body topmargin="30%">
<s:form action="update" method="post">
<table border="1" cellspacing="0" align="center">
<caption align="center">订单新增表</caption>
<tr>
<td><s:textfield name="order.orderid" value="%{order.orderid}" readonly="true" label="订单名称"/></td>
</tr>
<tr>
<td><s:textfield name="order.ordername" value="%{order.ordername}" label="订单名称"/></td>
</tr>
<tr>
<td><s:textfield name="order.ordernum" value="%{order.ordernum}" label="订单数量"/></td>
</tr>
<tr>
<td><s:textfield name="order.orderdate" value="%{order.orderdate}" readonly="true" label="订单日期"/></td>
</tr>
<tr>
<td><s:submit value="提交"/></td>
</tr>
</table>
</s:form>
</body>

控制的action: LoginAction.java

package com.test.action;

import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.test.dao.OrderDao;
import com.test.impl.OrderImpl;
import com.test.po.Orders;

public class LoginAction extends ActionSupport {

private List os;
private Orders order;
private OrderDao dao;
public void setDao(OrderDao dao)
{
this.dao = dao;
}
public LoginAction()
{

//构造函数,在构造loginAction时,初始化操作对象dao (setDao,OrderImpl)
os = new ArrayList();
setDao(new OrderImpl());
}

public OrderDao getDao()
{
return dao;
}

public String save()
{
boolean b = getDao().save(order);
if(b) return SUCCESS;
else return INPUT;
}

public String delete()
{
boolean b = getDao().delete(order);
if(b) return SUCCESS;
else return INPUT;
}

public String update()
{
boolean b = getDao().update(order);
if(b) return SUCCESS;
else return INPUT;
}

public String updateone()
{
order = getDao().getOne(order);
if(order != null)
return "success";
else
return "input";
}
@Override
public String execute() throws Exception {
os = getDao().getOrder();
if(os != null)
return "success";
else
return "error";
}
public List getOs() {
return os;
}
public void setOs(List os) {
this.os = os;
}
public Orders getOrder() {
return order;
}
public void setOrder(Orders order) {
this.order = order;
}
}

Struts.xml:
<?xml version="1.0" encoding="gbk" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

<constant name="struts.custome.i18n.resources" value="message"></constant>
<constant name="struts.i18n.encoding" value="gbk"></constant>

<package name="Hstruts2" extends = "struts-default">

<action name = "login" class = "com.test.action.LoginAction">
<result name = "success">/show.jsp</result>
<result name = "error">/login.jsp</result>
</action>

<action name="save" class = "com.test.action.LoginAction" method ="save">
<result type="redirect-action">login</result>
<result name="input">/save.jsp</result>
</action>

<action name="delete" class="com.test.action.LoginAction" method="delete">
<result type="redirect-action">login</result>
<result name="input">/show.jsp</result>
</action>
<action name="one" class="com.test.action.LoginAction" method="updateone">
<result>/update.jsp</result>
<result name="input">/show.jsp</result>
</action>
<action name="update" class="com.test.action.LoginAction" method="update">
<result type="redirect-action">login</result>
<result name="input">/update.jsp</result>
</action>

</package>
</struts>

Web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
<filter-name>struts-cleanUP</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanUP</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: