当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 如何实现Hibernate_Struts
 

 

    摘要:j2ee frameworkspring 1.1.4, ofbiz 3.0.0 persistence frameworkhibernate 2.1.8 , ibatis 2.0.9 web frameworkstruts 1.2.4 , tapestry 3.0.1 , webwork2 2.1.7 , echo 1.1.4 riaflex 1.5(商业) , laszlo ......
 ·谈谈j2se中的序列化(二)     »显示摘要«
    摘要: 谈谈j2se中的序列化(二) 作者:favo yang favoyang@yahoo.com 当序列化遇到继承… 当一个父类实现serializable接口后,他的子类都将自动的实现序列化。 以下验证了这一点: package serial; import java.io.serializable; public class superc impl......


Hibernate+Struts应用程序的JavaWebStudio 2005下快速、可视化开发
如何实现hibernate_struts v\:* { behavior: url(#default#vml) } o\:* { behavior: url(#default#vml) } .shape { behavior: url(#default#vml) } hibernate+struts应用程序的javawebstudio 2005下快速.可视化开发

javawebstudio.com>struts中文论坛:http://www.javawebstudio.com/ 【程序编程相关:谈谈J2SE中的序列化

【推荐阅读:用java实现外部调用exe文件

  【扩展信息:jboss4+ejb3下使用JAAS

javawebstudio.com/bbs/dispbbs.asp?boardid=5&id=3&page=1>javawebstudio 2005下载地址:http://www.javawebstudio.com/bbs/dispbbs.asp?boardid=5&id=3&page=1

 

[目标]

本例的目标是实现一个简单的struts 数据库应用程序.其功能是从sql server 2000中读取数据,并以表格的形式在输出页中显示出来.

定义一个名为“test”表的字段:

录入一些测试数据:

  

[效果]

(1)全部显示:

输入页面:

输出页面:

 

(2)查询显示:

 

[背景知识]

 

 

[步骤]

 

1.打开visual struts开发环境:

从桌面javawebstudio快揵或bin目录下的javawebstudio.exe文件启动javawebstudio的visual struts开发环境.

 

2.建立一个“空的hibernate_struts项目模板”应用程序:

    选择菜单“文件”—“新建”—“新建项目”,弹出新建项目对话框,如图3-1所示:

 

在对话框中选择“空的struts数据库应用模板”,在项目名称中输入“myhibernate”,package (包名)与位置(项目的路径)采用默认的值就行,当然也可以根据需要改变.最后点击“确定”按钮完成新项目的建立.

 

从文件管理器中可看出myhibernate项目的文件结构如下:

在myhibernate项目根目录下包含四个子目录与两个文件,这是javawebstudio项目的标准结构,最好不要改变它们默认的名称,否则会出现问题.

 

3.利用struts数据库应用文件向导建立新的应用:

在javawebstudio文件管理器内点击鼠标右键,在弹出的菜单中选择“hibernate”—“hibernate_struts文件向导”进入struts文件向导对话框,也可以选择菜单“文件向导”—“ hibernate_struts文件向导”进入hibernate文件向导对话框.如下图所示:

(1)输入文件名:

(2)从数据源中导入sql语句及数据表的字段信息(字段名与字段类型):

 

(3)从数据据表中选择所需的表“test”.

需要特别注意的是,这里的“从数据源中导入sql语句及数据表的字段信息”及“从数据据表中选择所需的表”仅仅是为了自动生成sql语句及读取字段信息,这里完成可以直接手工输入,与该项目的数据库连接池的配置无关,下面第(4)点将另行配置数据库连接池.

 

dao文件.输入jsp文件.actionform文件.action文件等选择默认就行了,主要是设置一下jspout文件,让它自动分页.每页显示4条记录,选择删除.编辑.链接与添加新记录功能.

 

接下来配置数据库连接池,其它属性页可采用默认的就行了,下面直接转去数据连接配置属性页即可.

(4)配置数据库连接池:

 

这里要特别注意的是hibernate的数据库连接池配置文件是hibernate.properties,并且dialect类名是org.hibernate.dialect.sqlserverdialect.

 

4.项目文件结构

 

项目目录结构分析见«如何实现最简单的struts程序»,这次hibernate文件向导自动生成了八个文件,其中web目录下是输入.输出两个jsp文件,src目录下是java文件.除了文件名是我们输入之外,所有程序源代码都是文件向导自动生成的,所有的配置也是自动完成的.

刷新javawebstudio文件管理器,这时发现web目录下自动生成了两个文件,分别是test.jsp.jsp.testinsert.jsp与testout.jsp.jsp,分别是查询条件输入jsp文件.新记录添加jsp文件与表格输出jsp文件;src\emptyprj目录下自动生成了五个文件,分别是testaction.java与testform.java,前者是action文件,后者是formaction文件;还有是数据库操作文件test.java与testdao.java,前者用于保存数据表记录的bean,后者是数据库操作dao文件;还要特别注意的是还有一个xml文件,就是test.hbm.xml,用于hibernate对象与数据库的映射.

 

test.jsp文件:

 

testinsert.jsp文件:

 

testout.jsp文件:

 

 

服务器.运行:">5.编译.启动服务器.运行:

  通过工具条上的按键分别编译项目及启动服务器,然后把开test.jsp并通过工具条上的“运行”按键运行test.jsp.

这里将采用调试状态下的运行方式:

(1)       显示调试工具条:

 

注:单步执行可跟踪进原函数执行;单过程执行按语句跟踪,一般选择单过程执行即可.

 

(2)选择调试状态下的“编译”:

输出栏中输出如下提示信息:

c:\documents and settings\administrator\桌面>f:

f:\>cd f:\javawebstudio\javawebstudioworkdir\myhibernate

f:\javawebstudio\javawebstudioworkdir\myhibernate>ant -buildfile build.xml

buildfile: build.xml

prepare:

     [copy] copying 1 file to f:\javawebstudio\jakarta-tomcat-5.5.4\webapps\myhibernate\web-inf\classes

compile:

    [javac] compiling 5 source files to f:\javawebstudio\jakarta-tomcat-5.5.4\webapps\myhibernate\web-inf\classes

    [javac] f:\javawebstudio\javawebstudioworkdir\myhibernate\src\emptyprj\testaction.java:68: setuserid(int) in emptyprj.test cannot be applied to (java.lang.string)

    [javac]                  m_test.setuserid(expression);

    [javac]                        ^

    [javac] 1 error

build failed

f:\javawebstudio\javawebstudioworkdir\myhibernate\build.xml:34: compile failed; see the compiler error output for details.

total time: 9 seconds

出现一个错误,原因是因为前面我们设置userid为整数类型,而这里的expression是字符串类型,所以要修改一下testaction.java文件:

package  emptyprj;

 

 

import emptyprj.testdao;

 

import java.lang.reflect.invocationtargetexception;

import java.util.locale;

import javax.servlet.servletexception;

import javax.servlet.http.httpsession;

import javax.servlet.http.httpservletrequest;

import javax.servlet.http.httpservletresponse;

import org.apache.commons.beanutils.propertyutils;

import org.apache.commons.logging.log;

import org.apache.commons.logging.logfactory;

import org.apache.struts.action.action;

import org.apache.struts.action.actionerror;

import org.apache.struts.action.actionerrors;

import org.apache.struts.action.actionform;

import org.apache.struts.action.actionforward;

import org.apache.struts.action.actionmapping;

import org.apache.struts.action.actionservlet;

import org.apache.struts.util.moduleexception;

import org.apache.struts.util.messageresources;

 

import java.io.ioexception;

import java.sql.connection;

import java.sql.sqlexception;

import java.util.collection;

 

public final class testaction extends action

{

    // 变量定义:

    private log log = logfactory.getlog("org.apache.struts.webapp.example");

    public testaction() {

      

    }

 

 

    //函数定义:

    public actionforward execute(actionmapping mapping,

                             actionform form,

                             httpservletrequest request,

                             httpservletresponse response)

       throws exception

    {

       // extract attributes and parameters we will need

       locale locale = getlocale(request);

       messageresources messages = getresources(request);

       httpsession session = request.getsession();

       testform m_testform = (testform) form;

      

                testdao m_testdao = testdao.getinstance();  //定义hibernate__dao对象,用于实现数据库的各种操作

 

                string action=request.getparameter("action");  //动作类型                 

                string search=request.getparameter("search");  //数据库查找方式

                string expression=request.getparameter("expression");    //参数,这里用于保存记录(行)的id数据

               

                if(action==null)action="find";

              if(search==null)search="unsearch";

              if(expression==null)expression="";

              expression=tochinese(expression);  //处理中文问题,实现编码转换

             

            /////////

              if("delete".equals(action))    //删除记录操作 

            {

                 test m_test= new test();

                 //<delete>

                 m_test.setuserid(expression);

                 //</delete>             

                   m_testdao.removeid(m_test);

             }

 

            ////////////

             if("update".equals(action)||"insert".equals(action))    //更新.添加记录操作

             {

                 test m_test= new test();

                     //<update>

                   m_test.setuserid(m_testform.getuserid());

                   m_test.setusername(m_testform.getusername());

                   m_test.setpassword(m_testform.getpassword());

                   m_test.setrole(m_testform.getrole());


...   下一页
    摘要:我的shark的版本为:shark-1.0-1 一、用户及组管理 1、涉及的模块: 用户与组管理及对内部开放,也对外部开放,涉及的模块为sharkapi、sharkkernel、sharkusergroup 2、相关的数据库表: 如果用户与组信息存储到数据库,使用到的表为:usertable、grouptable、usergrouptable、groupgrouptable 3、实现说......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE