注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

码农

用最简单的办法解决问题,用最奇怪的办法创造BUG

 
 
 

日志

 
 

s2sh+extjs+json实现增删改查  

2010-03-19 15:18:00|  分类: J2EE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

上一篇进行了配置,下面开始正式书写第一个增删改查,千万别照抄,没用的,公司有的规定不准乱发,我处理了一下包结构,晓得意思就行咯

包结构如下:

com.xxx.action  普通ACTION操作

com.xxx.ajaxaction AJAXaction操作

com.xxx.api 供外域调用数据用接口

com.xxx.beans 实体BEAN

com.xxx.dao 数据持久化接口

com.xxx.dao.impl 数据持久化接口实现类

com.xxx.service 服务层接口

com.xxx.service.impl 服务接口实现类

com.xxx.servlet servlet备用

com.xxx.utils 公用工具类

index.jtpl是JAVA的模板引擎,用户将页面的JAVA逻辑与页面分离。有点JSTL的意思。这里我们把页面逻辑使用JS来实现,页面逻辑通过ID绑定页面中的DOM对象来实现,具体通过JQUERY来做。页面分为HTML+CSS+JS+img/flash四个部分。所有需要使用JAVA逻辑均以AJAX方式调用action来完成

1、在beans包下建立数据库表的*.hbm.xml,可以直接通过hibernate视图来生成也可以手写,需要注意的是数据库中如果ID是自增的则需要对于如下XML进行配置

<id name="Id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="increment" />
</id>

generator具体含义

identity:用于MySql数据库。特点:递增

<id name="id" column="id">

    <generator class="identity"/>

</id>

注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。

sequence:用于Oracle数据库

<id name="id" column="id">

   <generator class="sequence">

     <param name="sequence">序列名</param>

   </generator>

</id>

native:跨数据库时使用,由底层方言产生。

Default.sequence为hibernate_sequence

<id name="id" column="id">

   <generator class="native"/>

</id>

注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。

如果Oracle中没有该序列,连Oracle数据库时会报错。

hilo:通过高低位合成id,先建表hi_value,再建列next_value。必须要     

       有初始值。

<id name="id" column="id">

    <generator class="hilo">

      <param name="table">high_val</param>

       <param name="column">nextval</param>

      <param name="max_lo">5</param>

    </generator>

</id>

sequencehilo:同过高低位合成id,建一个sequence序列,不用建表。

<id name="id" column="id">

<generator class="hilo">

<param name="sequence">high_val_seq</param>

<param name="max_lo">5</param>

</generator>

</id>

assigned:用户自定义id;

<id name="id" column="id">

<generator class="assigned"/>

</id>

foreign:用于一对一关系共享主健时,两id值一样

increment:自增序列,我用的是SQLserver

续:因为系统崩溃了全部重做了一遍,下面把几个JAVA类发出来

BEAN就不发了,反正每个人库都不一样

DAO接口

package com.jssjys.xxyw.dao;

import java.util.List;

import com.jssjys.xxyw.beans.MeropArticle;

public interface meropArticleDAO {
 //新增文章
 public int saveArticle(MeropArticle meropArticle);
 //删除文章
 public void removeArticle(Integer id);
 //修改文章
 public int updateArticle(MeropArticle meropArticle);
 //通过ID找到文章
 public MeropArticle findArticleById(Integer id);
 //列出所有文章列表
 public List<MeropArticle> findAllArticles();
}

DAO实现

package com.jssjys.xxyw.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.jssjys.xxyw.beans.MeropArticle;
import com.jssjys.xxyw.dao.meropArticleDAO;

public class meropArticleDAOImpl extends HibernateDaoSupport implements meropArticleDAO {

 //获取所有文章
 @SuppressWarnings("unchecked")
 public List<MeropArticle> findAllArticles() {
  List loadAll = this.getHibernateTemplate().loadAll(MeropArticle.class);
  return loadAll;
 }

 //按ID查找文章
 public MeropArticle findArticleById(Integer id) {
  return (MeropArticle) this.getHibernateTemplate().get(MeropArticle.class, id);
 }

 //删除文章
 public void removeArticle(Integer id) {
  MeropArticle meropArticle = (MeropArticle)this.findArticleById(id);
  this.getHibernateTemplate().delete(meropArticle);
 }

 //保存文章
 public int saveArticle(MeropArticle meropArticle) {
  this.getHibernateTemplate().save(meropArticle);
  return 1;
 }

 //更新文章
 public int updateArticle(MeropArticle meropArticle) {
  this.getHibernateTemplate().update(meropArticle);
  return 1;
 }

}

SERVICE接口

package com.jssjys.xxyw.service;

import java.util.List;

import com.jssjys.xxyw.beans.MeropArticle;

public interface meropArticleService {
 //保存文章
 public void saveArticle(MeropArticle meropArticle) throws Exception;
 //删除文章
 public void removeArticle(Integer id) throws Exception;
 //修改文章
 public void updateArticle(MeropArticle meropArticle) throws Exception;
 //文章列表
 public List<MeropArticle> getAllArticles() throws Exception;
 //按ID获取文章
 public MeropArticle getArticleById(Integer id) throws Exception;
 
}

service实现

package com.jssjys.xxyw.service.impl;

import java.util.List;

import com.jssjys.xxyw.beans.MeropArticle;
import com.jssjys.xxyw.dao.meropArticleDAO;
import com.jssjys.xxyw.service.meropArticleService;

public class meropArticleServiceImpl implements meropArticleService {
 
 //调用DAO接口
 private meropArticleDAO meropArticleDao;
 
 public meropArticleDAO getMeropArticleDao() {
  return meropArticleDao;
 }
 //依赖注入DAO
 public void setMeropArticleDao(meropArticleDAO meropArticleDao) {
  this.meropArticleDao = meropArticleDao;
 }
 
 //获取所有用户信息
 public List<MeropArticle> getAllArticles() throws Exception {
  return this.getMeropArticleDao().findAllArticles();
 }
 //删除单个用户
 public void removeArticle(Integer id) throws Exception {
  this.getMeropArticleDao().removeArticle(id);
 }
 //保存单个用户
 public void saveArticle(MeropArticle meropArticle) throws Exception {
  this.getMeropArticleDao().saveArticle(meropArticle);
 }
 //更新用户信息
 public void updateArticle(MeropArticle meropArticle) throws Exception {
  this.getMeropArticleDao().updateArticle(meropArticle);
 }
 
 //
 public MeropArticle getArticleById(Integer id) throws Exception {
  return this.getMeropArticleDao().findArticleById(id);
 }

}

ACTION

package com.jssjys.xxyw.action;

import java.util.List;

import net.sf.json.JSONArray;

import com.jssjys.xxyw.beans.MeropArticle;
import com.jssjys.xxyw.service.meropArticleService;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class ArticleAction extends ActionSupport {
 //定义返回值
 private String jsonString = null;
 //定义单一数据模型
 private MeropArticle ma;
 //定义列表数据模型
 private List<MeropArticle> mal;
 //服务层接口
 private meropArticleService mas;

 public List<MeropArticle> getMal() {
  return mal;
 }

 public void setMal(List<MeropArticle> mal) {
  this.mal = mal;
 }

 public MeropArticle getMa() {
  return ma;
 }

 public void setMa(MeropArticle ma) {
  this.ma = ma;
 }

 public String getJsonString() {
  return jsonString;
 }

 public void setJsonString(String jsonString) {
  this.jsonString = jsonString;
 }

 public void setMas(meropArticleService mas) {
  this.mas = mas;
 }
 
 public meropArticleService getMas() {
  return mas;
 }
 
 //保存文章
 public String saveArticle(){
  System.out.println("保存数据id:"+this.getMa().getAId());
  try {
   this.mas.saveArticle(this.getMa());
   this.setJsonString("{success:true}");
  } catch (Exception e) {
   System.out.println("保存数据失败");
   e.printStackTrace();
  }
  return SUCCESS; 
 }
 
 //按序号删除文章
 public String removeArticleById(){
  System.out.println("删除数据id:"+this.getMa().getAId());
  try {
   this.mas.removeArticle(this.getMa().getAId());
  } catch (Exception e) {
   System.out.println("按序号删除数据失败");
   e.printStackTrace();
  } 
  return SUCCESS;
 }
 
 //按序列号查找文章
 public String findArticleById(Integer id){
  System.out.println("查找文章id:"+id);
  try {
   this.ma = this.getMas().getArticleById(id);
   
  } catch (Exception e) {
   System.out.println("查找文章失败id:"+id);
   e.printStackTrace();
  }
  //序列化数据
  JSONArray ary = JSONArray.fromObject(this.ma);
  this.setJsonString(ary.toString());
  return SUCCESS;
 }
 
 //获取所有文章信息
 public String getAllArticles(){
  System.out.println("查找所有文章");
  try {
   this.mal = this.getMas().getAllArticles();
  } catch (Exception e) {
   System.out.println("查找文章列表失败");
   e.printStackTrace();
  }
  return SUCCESS;
 }
 
 //修改文章
 public String updateArticle(){
  System.out.println("更新文章信息");
  try {
   this.mas.updateArticle(this.ma);
  } catch (Exception e) {
   System.out.println("更新文章失败");
   e.printStackTrace();
  }
  return SUCCESS;
 }
 }

struts.XML

<?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="xxyw" extends="struts-default">
  <!-- 新增文章 -->
  <action name="addArticle" class="articleAction" method="saveArticle"></action>
  <!-- 按ID删除文章 -->
  <action name="addArticle" class="articleAction" method="removeArticleById"></action>
  <!-- 更改文章 -->
  <action name="addArticle" class="articleAction" method="updateArticle"></action>
  <!-- 文章列表 -->
  <action name="addArticle" class="articleAction" method="getAllArticles"></action>
  <!-- 更改文章 -->
  <action name="addArticle" class="articleAction" method="findArticleById"></action>
  
 </package>


</struts>

 

applicationcontext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

 <!-- 配置数据源 --> 
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"></property>
  <property name="url" value="jdbc:jtds:sqlserver://localhost:1433/newxxywjssjyscom"></property>
  <property name="username" value="sa"></property>
  <property name="password" value=""></property>
 </bean>
 
 <!-- 配置spring的session工厂 -->
 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" destroy-method="close">
  <property name="dataSource">
   <ref bean="dataSource"/>
  </property>
  
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
    <!-- <prop key="hibernate.dialect">org.hibernate.dialect.SybaseDialect</prop> -->
    <prop key="hibernate.show_sql">true</prop>
   </props>
  </property>
  
  <property name="mappingResources">
   <list>
    <value>com/jssjys/xxyw/beans/MeropArticle.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropMenu.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropProduct.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropGuestBook.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropBook.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropNote.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropExam.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropReview.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropAd.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropVideo.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropFeedback.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropPicture.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropQuestion.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropResources.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropReNote.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropFeedBackValue.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropFeedBackOption.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropAnswer.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropBlog.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropIntergralRule.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropDwt.hbm.xml</value>
    <value>com/jssjys/xxyw/beans/MeropDwtBox.hbm.xml</value>
   </list>
  </property>  
 </bean>
 
 <!-- 依赖注入 -->
 <bean id="meropArticleDAO" class="com.jssjys.xxyw.dao.impl.meropArticleDAOImpl"  scope="singleton">
  <property name="sessionFactory">
   <ref bean="sessionFactory"/>
  </property>
 </bean>
 
 <bean id="meropArticleService" class="com.jssjys.xxyw.service.impl.meropArticleServiceImpl">
  <property name="meropArticleDao">
   <ref bean="meropArticleDAO"/>
  </property>
 </bean>
 
 <bean name="articleAction" class="com.jssjys.xxyw.action.ArticleAction" scope="prototype">
  <property name="mas">
   <ref bean="meropArticleService"/>
  </property>
 </bean>
 
</beans>

WEB.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <!-- spring监听器配置 -->
  <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
 
  <!-- struts-action清理 -->
  <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>
 
  <!-- struts2拦截器配置 -->
  <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>
 
  <!-- 配置openSessionInViewFilter过滤器,处理SESSION关闭 -->
  <filter>
   <filter-name>lazyLoadingFilter</filter-name>
   <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>
  <filter-mapping>
   <filter-name>lazyLoadingFilter</filter-name>
   <url-pattern>*.action</url-pattern>
  </filter-mapping>
 
  <!-- Spring Introspector防止内存泄露 -->
  <listener>
   <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  </listener>
 
  <!-- session定义10分钟超时 -->
  <session-config>
   <session-timeout>10</session-timeout>
  </session-config>
 
  <!-- default页面定义 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
以上是普通的增删改的一些东东,对了,公司没用这个来搭建系统,这就是我自己做了玩的。这两天比较忙,下面功能以后有时间再补吧

  评论这张
 
阅读(2016)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018