技术开发 频道

myeclipse和struts2+spring+hibernate混合编程

    【IT168 技术文档】struts2释出已经很久了,虽然自己现在作GUI开发,不过有时间还是学习下web开发,现在就将我使用myeclipse工具应用struts2 + spring + hibernate 实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!
       首先,myeclipse中web工程目录结构如下图:


    使用myeclipse开发hibernate和spring的操作我就不详细说了,网上的教程很多,如果有不明白的可以咨询我,呵呵.
    其中持久类AbstractTest,Test,TestDAO,Test.hbm.xml都是myeclipse的hibernate工具生成的.TestAction类是struts2的核心处理类,代码如下:
package com.yangqiang.strutsdemo.web;

import
 java.util.Collection;
import
 java.util.List;

import
 org.apache.log4j.Logger;

import
 com.opensymphony.xwork2.ActionSupport;
import
 com.yangqiang.strutsdemo.domain.Test;
import
 com.yangqiang.strutsdemo.domain.TestDAO;

/**
 * 描述:
 * 
@author Stone yang  创建日期:2007-4-24 
 * 
@version
 pattern Study
 * 技术支持: <a href="
http://blog.csdn.net/yq76034150">http://blog.csdn.net/yq76034150
</a>
 
*/

public class TestAction extends ActionSupport {
    
private static final Logger log = Logger.getLogger(TestAction.class
);

    
private
 Integer id;
    
private
 Integer[] ids;
    
protected
 TestDAO testDao;
    
private
 Test test;
    
private Collection<Test>
 testColl;
    
    
/**
     * 描述 return 返回 ids。
     * 
@author Stone yang
     * @date 2007-4-24
     
*/

    
public Integer[] getIds() {
        
return
 ids;
    }

    
/**
     * 描述:设置ids的值。
     * 
@param ids
     * 
@author
 Stone yang
     * @date 2007-4-24
     
*/

    
public void setIds(Integer[] ids) {
        
this.ids =
 ids;
    }

    
/**
     * 描述 return 返回 testColl。
     * 
@author Stone yang
     * @date 2007-4-24
     
*/

    
public Collection<Test> getTestColl() {
        
return
 testColl;
    }

    
/**
     * 描述:设置testColl的值。
     * 
@param testColl
     * 
@author
 Stone yang
     * @date 2007-4-24
     
*/

    
public void setTestColl(Collection<Test> testColl) {
        
this.testColl =
 testColl;
    }

    
/**
     * 描述 return 返回 id。
     * 
@author Stone yang
     * @date 2007-4-24
     
*/

    
public Integer getId() {
        
return
 id;
    }

    
/**
     * 描述:设置id的值。
     * 
@param id
     * 
@author
 Stone yang
     * @date 2007-4-24
     
*/

    
public void setId(Integer id) {
        
this.id =
 id;
    }

    
/**
     * 描述 return 返回 testDao。
     * 
@author Stone yang
     * @date 2007-4-24
     
*/

    
public TestDAO getTestDao() {
        
return
 testDao;
    }

    
/**
     * 描述:设置testDao的值。
     * 
@param testDao
     * 
@author
 Stone yang
     * @date 2007-4-24
     
*/

    
public void setTestDao(TestDAO testDao) {
        
this.testDao =
 testDao;
    }

    
/**
     * 描述 return 返回 test。
     * 
@author Stone yang
     * @date 2007-4-24
     
*/

    
public Test getTest() {
        
return
 test;
    }

    
/**
     * 描述:设置test的值。
     * 
@param test
     * 
@author
 Stone yang
     * @date 2007-4-24
     
*/

    
public void setTest(Test test) {
        
this.test =
 test;
    }

    
    
public String load() {
        test 
=
 getTestDao().findById(id);
           
return
 SUCCESS;
       }


       @SuppressWarnings(
"unchecked")
    
public String list() 
{
           testColl 
= getTestDao().findByExample(new
 Test());
           
return
 SUCCESS;
       }

           
       
public String store() {
           getTestDao().merge(test);
           
return
 SUCCESS;
       }

       
       
public String remove() {
        
for (int i = 0, size = ids.length; i < size; i++
{
            getTestDao().delete(getTestDao().findById(ids[i]));
        }

        
return SUCCESS;
    }


    
}


applicationContext.xml 主要是工具生成 的,只是将配置文件路径改下,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>


    
<bean id="struts"
        class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
<property name="configLocation">
                        
<!-- 改变了一下-->
            
<value>/WEB-INF/classes/hibernate.cfg.xml</value>
        
</property>
    
</bean>
    
<bean id="testDao"
        class
="com.yangqiang.strutsdemo.domain.TestDAO">
        
<property name="sessionFactory">
            
<ref bean="struts" />
        
</property>
    
</bean></beans>


struts.xml  (变化不大,写过以前struts配置文件的不难理解)
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"
>


<struts>
    
<package name="struts_crud" extends="struts-default" namespace="/test">
        
<action name="List" class="com.yangqiang.strutsdemo.web.TestAction" method="list">
            
<result>list.jsp</result>
        
</action>
        
<action name="Edit" class="com.yangqiang.strutsdemo.web.TestAction" method="load">
            
<result>edit.jsp</result>
        
</action>
        
<action name="Store" class="com.yangqiang.strutsdemo.web.TestAction" method="store">
            
<result type="redirect">List.action</result>
        
</action>
        
<action name="Remove" class="com.yangqiang.strutsdemo.web.TestAction" method="remove">
            
<result type="redirect">List.action</result>
        
</action>
    
</package>
</struts>

struts.properties
struts.objectFactory = spring

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"
>

    
<display-name>Struts2 crud 例程</display-name>
    
    
<context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>classpath*:*.xml</param-value>
    
</context-param>
    
    
<listener>
        
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    
</listener>
    
    
<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>

    
<welcome-file-list>
        
<welcome-file>list.jsp</welcome-file>
    
</welcome-file-list>
</web-app>

list.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    
<title>Book List</title>
    
<style type="text/css">
        table 
{
            border
: 1px solid black;
            border-collapse
: collapse;
        
}

        
        table thead tr th 
{
            border
: 1px solid black;
            padding
: 3px;
            background-color
: #cccccc;
        
}

        
        table tbody tr td 
{
            border
: 1px solid black;
            padding
: 3px;
        
}

    
</style>
</head>
<body>    
    
<h2>Book List</h2>

    
<s:form action="Remove" theme="simple">
        
<table cellspacing="0">
            
<thead>
                
<tr>
                    
<th>勾选</th>
                    
<th>ID</th>
                    
<th>名称</th>
                    
<th>作者</th>
                
</tr>
            
</thead>
            
<tbody>
                
<s:iterator value="testColl">
                    
<tr>
                        
<td><input type="checkbox" name="ids" value='<s:property value="id" />' /></td>
                        
<td><s:property value="id" /></td>
                        
<td><s:property value="name" /></td>
                        
<td><s:property value="author" /></td>
                        
<td>
                            
<href='<s:url action="Edit"><s:param name="id" value="id" /></s:url>'>
                                Edit
                            
</a>

                            
&nbsp;
                            
<href='<s:url action="Remove"><s:param name="ids" value="id" /></s:url>'>
                                Delete
                            
</a>

                        
</td>
                    
</tr>
                
</s:iterator>
            
</tbody>
        
</table>
        
<s:submit value="Remove" /><href="edit.jsp">Add Test</a>
    
</s:form>    
</body>

</html>

edit.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    
<title>Book</title>
</head>
<body>    
    
<h2>

        
<s:if test="null == test">
            Add Book
        
</s:if>
        
<s:else>
            Edit Book
        
</s:else>
    
</h2>
    
<s:form action="Store" >
        
<s:hidden name="test.id" label="ID" />
        
<s:textfield name="test.name" label="书名" />
        
<s:textfield name="test.author" label="作者" />
        
<s:submit />
    
</s:form>
</body>
</html>
0
相关文章