欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个简单的Struts2+Hibernate整合应用(一)

程序员文章站 2022-04-23 13:11:16
...

     经常看到网上许多人发表了许多很精彩,很有用的博文,我一直也想写写博文,发发心情。
     平时很少玩博客,这是我第一次写博文,有不好的地方,希望读者多多给建议,非喜勿喷!一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序

    这是一篇技术博文,一个简单网站框架的搭建,不关心界面的优化,以后台程序技术实现的可能为主,主要功能需求如下:
     1、写一个简单的新闻消息网站,该网站包含内容插入、检索、以及修改等操作;
     2、插入几条新闻到数据库中
     3、查询所有新闻,并在页面中显示新闻的标题、发布时间,要求对标题设置超链接,点击该链接后新开一个页面显示该新闻标题、发布时间、内容和来源;
     4、能够修改和删除新闻显示页面中指定的新闻 ;支持对消息内容的模糊查询,也可根据发布时间查询对应新闻消息;
     5、要求使用Struts2 校验框架按以下要求进行有效性校验:

        1) 对新闻标题、新闻内容作非空校验;2) 对新闻标题、新闻来源作长度校验
    
==================================================================================================
好,下面我们来进行技术实现的可能:一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序
    首先来看一下整个项目文件:
    一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序
    从上面可以看出,整个项目的实现并不复杂,只包含了四个独立的页面,所应用到的Java文件也就那么5个。呵呵,虽然看起来不复杂,可是整个逻辑思维并不容易实现,当然如果读者就是这个行业的,那就多多包含啦,呵呵,小小项目,不成文章,愿意与各位一起交流学习!

    一、首先,咱们来写个简单的首页,笔者的首页很简单,就头部三个连接标题

一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序

    以上首页的代码如下:
   
 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>新闻主页</title>
<style type="text/css">
a:hover {
    background-color: yellow;
    font-size: 15pt;
}
td {
    padding-bottom: 3pt;
    padding-top: 3pt;
}
a {
    text-decoration: none;
}
</style>
</head>

<body style="background-image: url('images/huo.jpg');">
    <table align="center" border="1" style="background-color: white;">
        <tr align="left">
            <td><a href="news_index.jsp"> <b>&nbsp;编辑新闻&nbsp;
            </a>
            </td>
            <td><a href="findAllAction"> <b>&nbsp;查看所有新闻&nbsp;
            </a>
            </td>
            <td><a href="findAllAction?name=search"> <b>&nbsp;查找新闻&nbsp;
            </a>
            </td>
        </tr>
    </table>
</body>
</html>




   二、现在咱们来实现第一个简单的功能模块“编辑新闻
       该模块主要实现新闻的插入,将数据插入数据库,并实现插入校验,不允许空插入和限制标题长度,先来实现客户端界面,客户端如下:
    一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序

   1、插入数据前,先搭建数据库和表格,笔者我就采用Hibernate框架技术来实现
       首先配置好hibernate.cfg.xml文件,该文件放置在源文件目录下,即src目录下:

      一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序

     以上配置的代码读者根据自己本机环境进行修改,具体可根据笔者代码的注释进行理解,小豪童鞋采用的是MySQL数据库,关于其他数据库的配置这里不做详解,大同小异!
   
     2、好,数据库的连接的框架,我们这里已经基本搭建好了,这里建议读者可以考虑c3p0连接池技术,通过连接池可以更加高效、快捷的进行数据库的相关操作。从上面可以看出,我们建立了一个名为“hibernate ”的数据库,这个数据库需要读者自己通过MySQL命令进行建立。

     接下来我没来建议一个名为news的表
    
      学习过的SSH框架技术的娃都应该明白,SSH框架搭建时,命名一定要严格的按照命名规范。
      我们需要建立一个名为“news ”的数据表,该表包含的字段如下:
     

字段名

类型

长度

说明

id

int

 

主键,自动递增

title

varchar

60

新闻标题

content

text

 

新闻内容

source

varchar

30

来源

issue_time

date

 

发布时间


       注意:这里的表格我们在hibernate.cfg.xml文件里已经申明了,当程序运行时会自动建立表格,所以这里我们不需要手动建立,只需要配置好接下来的持久化类OK了。
   

    下面贴出持久化类(POJO)的代码,(注意类的命名 )
 一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序
一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序

持久化类的建立相当简单,注意属性一定要和数据库的字段名匹配才能正确的插入。我们可以讲持久化类简单的理解为一张数据表,里面的每个属性都是一个字段。

     3、写好持久化类的代码后,接下来如何将持久化类和数据库表联系起来呢,所以,接下来我们还需要配置一个映射文件,用来提供提供持久化类与数据库表之间的映射关系。(Hibernate本身就是一个面向Java环境的对象/关系数据库映射工具)。
      好,下面我们建立这样的一个映射文件,把它规范的命名为“News.hbm.xml
  一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序



    

关于这个映射文件配置的规范,读者有不明白的可以提问或者去学习或者百度,因为看起来这个代码量不多,但是这个配置文件共能十分的强大,知识量并不少。
--------------------------------------------------------------------------------------------------
注意:我们必须要将持久化类和映射文件放在同一个目录下:


      4、好了,后台的程序也弄得差不多了,下面,咱们来书写页面的代码,为了大家方便,直接贴代码
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>新闻插入页面</title>
<style type="text/css">
.tdLabel {
    background-color: yellow;
    font-weight: bold;
    width: 50pt;
    padding-left: 10pt;
}

a {
    text-decoration: none;
}

a:hover {
    background-color: #bb0;
    font-weight: bold;
}

.sd {
    border-top-style: none;
}

.a1,.a2 {
    border-style: none;
}
.errorMessage{
  color: red;
  font-weight: bold;
}
</style>
<script type="text/javascript">
    function con() {
        b = document.getElementById_x_x_x_x("ct").value.trim();
        a = "请输入内容信息...";
        if (a == b) {
            document.getElementById_x_x_x_x("ct").value = "";
        }

    }
    function con2() {
        b = document.getElementById_x_x_x_x("ct").value.trim();
        if (b == "") {
            document.getElementById_x_x_x_x("ct").value = "请输入内容信息...";
        }
    }
    function modify(){
        tForm=document.forms[0];
        id=document.getElementById_x_x_x_x("InsertNewsAction_newsID").value;
        tForm.action="ModifyAction?modify="+id;
    }
</script>
</head>

<body style="background-image: url('images/liu.jpg');">
   <div align="right"><a href="index.jsp">
   <img alt="home_icon" src="images/home_icon.png" width="30" height="30" /></a>
   <br /><a href="index.jsp" style="margin-right: 6px;font-size: 8;"><b>首页</b></a>
   </div>
  
    <s:form action="InsertNewsAction">
        <table border="1" align="center" style="margin-top: 30pt;" class="sd">
            <tr>
                <td align="left" class="a1"><a href="findAllAction">查看新闻</a>
                </td>
                <td align="right" class="a2"><a href="findAllAction?name=search">检索新闻</a>
                </td>
            </tr>

            <tr align="center">
                <td align="center" colspan="2"><h2>&nbsp;&nbsp;请输入新闻信息&nbsp;&nbsp;</h2>
                </td>
            </tr>

            <s:if test="#parameters.modify!=null" >
                <s:iterator value="news" id="n" >
                    <s:set name="ids"><s:property value="#n.id" /></s:set>
                    <s:set name="title" ><s:property value="#n.title" /></s:set>
                    <s:set name="content"><s:property value="#n.content" /></s:set>
                    <s:set name="source"><s:property value="#n.source" /></s:set>
                    <s:textfield name="title" label="标题" value="%{title}" />
                    <s:textarea name="content" cols="50" rows="10" label="内容"
                    value="%{content}" />
                    <s:textfield name="source" label="来源" value="%{source}" />
                    <s:hidden name="newsID" value="%{ids}" />
                </s:iterator>
                <td colspan="2" align="center"><s:submit value="提交"
                    theme="simple" onclick="modify()" /> <s:reset value="重置" theme="simple" /></td>
                   
            </s:if>
            <s:else>
                <s:textfield name="title" label="标题" />
                <s:textarea name="content" cols="50" rows="10" label="内容" id="ct"
                    value="请输入内容信息..." onclick="con()" onblur="con2()" />
                <s:textfield name="source" label="来源" />
               
                <td colspan="2" align="center"><s:submit value="提交"
                    theme="simple" /> <s:reset value="重置" theme="simple" /></td>
            </s:else>

            <tr align="center">
                <td align="right" colspan="2" style="color:#0000CD;font-weight: bold;">当前时间: <s:bean var="now"
                        name="java.util.Date" /> <s:date name="#now" />&nbsp;</td>
            </tr>
        </table>
        <c:if test="${param.mess=='success' }">
            <div align="center"
                style="color: red;padding-top: 3pt;font-weight: bold;">插入成功</div>
        </c:if>
       
        <c:if test="${param.mess=='error' }">
            <div align="center"
                style="color: red;padding-top: 3pt;font-weight: bold;">插入失败,请重新提交数据</div>
        </c:if>
    </s:form>

</body>
</html>


好了,晕,这么迟了?好吧,今天就先写到这了,上面的程序已经完成了整个项目的1/4进度,还不能正常的运行网站。具体的,下次再贴上吧。呵呵。。。。。。。。。。。。。

************************************************************************************************
读者注意一定要导入相关的包,相关的包可以官网进行下载,目前这个项目所需要的包如下:

一个简单的Struts2+Hibernate整合应用(一)
            
    
    博客分类: IT技术,Java strutsHibernateSHH框架技术数据库操作简单网站程序



==========================================================================================