[议论]J2EE项目自动生成工具

[讨论]J2EE项目自动生成工具
最近在做一个代码自动生成工具,下面的代码是自动生成的,欢迎大家讨论生成的代码有什么地方需要修改的。
变量名和包名等信息都是生成的时候配置文件配置的。
在线演示地址:http://java.jshuwei.org.cn:8080
代码看得闲累的话直接下载源代码吧:查看源代码(代码附件太大,只能放我自己博客中提供下载了,请见谅!)
BaseAction.java:
package cn.org.jshuwei.j2ee.test.action;

import cn.org.jshuwei.j2ee.test.core.JshuweiContext;
import cn.org.jshuwei.j2ee.util.StringUtil;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

public class BaseAction extends ActionSupport  implements ServletRequestAware, ServletResponseAware {
	private static final long serialVersionUID = 1L;

    protected HttpServletRequest request;
    protected HttpServletResponse response;
    private String serviceId;
	private String serviceName;
	private int eventCode;
	protected Object requestObj;
	private int id;
	private int start;
	private int limit = 25;

    public void setServletRequest(HttpServletRequest httpServletRequest) {
        request = httpServletRequest;
    }

    public void setServletResponse(HttpServletResponse httpServletResponse) {
        response = httpServletResponse;
    }

    public HttpServletRequest getRequest() {
        return request;
    }

    public void setRequest(HttpServletRequest request) {
        this.request = request;
    }

    public HttpServletResponse getResponse() {
        return response;
    }

    public void setResponse(HttpServletResponse response) {
        this.response = response;
    }

    public String getServiceId() {
        return serviceId;
    }

    public void setServiceId(String serviceId) {
        this.serviceId = serviceId;
    }

    public String getServiceName() {
        return serviceName;
    }

    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }

    public int getEventCode() {
        return eventCode;
    }

    public void setEventCode(int eventCode) {
        this.eventCode = eventCode;
    }

    public Object getRequestObj() {
        return requestObj;
    }

    public void setRequestObj(Object requestObj) {
        this.requestObj = requestObj;
    }
    
    public int getId() {
    	return id;
    }
    
    public void setId(int id) {
    	this.id = id;
    }
    
    public int getStart() {
    	return start;
    }
    
    public void setStart(int start) {
    	this.start = start;
    }
    
    public int getLimit() {
    	return limit;
    }
    
    public void setLimit(int limit) {
    	this.limit = limit;
    }
    
    @SuppressWarnings("unchecked")
    public JshuweiContext generateJshuweiContext() {
    	JshuweiContext jshuweiContext = new JshuweiContext();
    	if (serviceId != null || !"".equals(serviceId))
            jshuweiContext.setServiceId(serviceId);
    	if (serviceName != null || !"".equals(serviceName))
            jshuweiContext.setServiceName(serviceName);
    	if (eventCode != 0)
            jshuweiContext.setEventCode(eventCode);
        if (eventCode % 100 ==1)
    		setRequestObj(new Integer[]{start,limit});
    	if (eventCode % 100 ==2 || eventCode % 100 ==6)
    		setRequestObj(new Integer(id));
    	if (eventCode % 100 ==3) {
    		List list = new ArrayList();
    		list.add(generateEntity());
    		list.add(new Integer[]{start,limit});
    		setRequestObj(list);
    	}
    	if (eventCode % 100 ==4 || eventCode % 100 ==5)
    		setRequestObj(generateEntity());
    	if (requestObj != null)
            jshuweiContext.setRequestObj(requestObj);
        return jshuweiContext;
    }
    
    @SuppressWarnings("unchecked")
    public Object generateEntity() {
    	Map map = request.getParameterMap();
    	String className = StringUtil.firstToUpper(serviceName.substring(0,serviceName.lastIndexOf("Service")));
    	try {
			Class c = Class.forName("cn.org.jshuwei.j2ee.test.entity." + className);
			Object obj = c.newInstance();
			Field[] fields = c.getDeclaredFields();
            for (Field field:fields) {
                String fieldName = field.getName();
                if(null!=map.get(fieldName)){
                	field.setAccessible(true);
                	Method method = obj.getClass().getMethod("set"+StringUtil.firstToUpper(fieldName), field.getType());
                	Constructor con = field.getType().getConstructor(String.class);
					Object o = con.newInstance(((Object[])(map.get(fieldName)))[0]);
					method.invoke(obj, o);
                }
            }
            return obj;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
    }
    
    public void outputResult(String result){
    	try {
    		response.setCharacterEncoding("utf-8");
			PrintWriter out = response.getWriter();
			out.write(result);
			out.flush();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
}

AddressAction.java
package cn.org.jshuwei.j2ee.test.action;

import cn.org.jshuwei.j2ee.test.service.IAddressService;
import cn.org.jshuwei.j2ee.util.JsonUtils;
import cn.org.jshuwei.j2ee.test.core.JshuweiContext;
import cn.org.jshuwei.j2ee.test.entity.Address;
import cn.org.jshuwei.j2ee.test.core.Constant;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */
@SuppressWarnings("unchecked")
public class AddressAction extends BaseAction {
	private static final long serialVersionUID = 1L;
	@Autowired
    private IAddressService addressService;
    JshuweiContext jshuweiContext;
    private String ret = "";
    
	public void list(){
		doExecute();
		if(doPre()){
			ret = "{total:"+jshuweiContext.getTotalNum()+",results:"+JsonUtils.listToJson((List<Address>)jshuweiContext.getReturnObject())+"}";
		}else{
			ret = "{success:true,message:'"+jshuweiContext.getReturnMsg()+"'}";
		}
		outputResult(ret);
	}
	public void add(){
		doExecute();
		ret = "{success:true,message:'"+jshuweiContext.getReturnMsg()+"'}";
		outputResult(ret);
	}
	public void mod(){
		doExecute();
		ret = "{success:true,message:'"+jshuweiContext.getReturnMsg()+"'}";
		outputResult(ret);
	}
	public void del(){
		doExecute();
		ret = jshuweiContext.getReturnMsg();
		outputResult(ret);
	}
	public void get(){
		doExecute();
		if(doPre()){
			ret = "{total:"+jshuweiContext.getTotalNum()+",results:"+JsonUtils.beanToJson(jshuweiContext.getReturnObject())+"}";
		}else{
			ret = "{success:true,message:'"+jshuweiContext.getReturnMsg()+"'}";
		}
		outputResult(ret);
	}
	
	private void doExecute(){
		jshuweiContext = generateJshuweiContext();
		addressService.execute(jshuweiContext);
	}
	private boolean doPre(){
		String returnCode = jshuweiContext.getReturnCode();
		if(Constant.BAD_RETURN_CODE.equals(returnCode)){
			return false;
		}
		return true;
	}
}

Constant.java
package cn.org.jshuwei.j2ee.test.core;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

public class Constant {
	public static final String BAD_RETURN_CODE = "500";//请求错误
	public static final String GOOD_RETURN_CODE = "200";//请求处理正常
	public static final String BAD_SERVICE_MESSAGE = "请求的服务不存在";//服务请求不存在
	public static final String FAIL_SERVICE_MESSAGE = "服务处理错误";//服务处理错误
	public static final String SAVE_SECCESS = "保存成功";
	public static final String Update_SECCESS = "修改成功";
	public static final String Delete_SECCESS = "删除成功";
	public static final String ADDRESS_SERVICE_ID = "1001";
	public static final int ADDRESS_SERVICE_GETALL_EVENT = 101;
	public static final int ADDRESS_SERVICE_GETBYID_EVENT = 102;
	public static final int ADDRESS_SERVICE_GETBYPROPERTY_EVENT = 103;
	public static final int ADDRESS_SERVICE_Update_EVENT = 104;
	public static final int ADDRESS_SERVICE_SAVE_EVENT = 105;
	public static final int ADDRESS_SERVICE_Delete_EVENT = 106;
	public static final int ADDRESS_SERVICE_GETNUM_EVENT = 107;
}

JshuweiContext.java
package cn.org.jshuwei.j2ee.test.core;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

public class JshuweiContext {
	private String serviceId;//请求服务ID号
	private String serviceName;//服务名称
	private int eventCode;//请求代码
	private Object requestObj;//请求用到的参数封装后对象
	private String returnCode;//返回代码
	private String returnMsg;//返回消息
	private Object returnObject;//返回对象
	private int totalNum;//记录总数
	public String getServiceId() {
		return serviceId;
	}
	public void setServiceId(String serviceId) {
		this.serviceId = serviceId;
	}
	public String getServiceName() {
		return serviceName;
	}
	public void setServiceName(String serviceName) {
		this.serviceName = serviceName;
	}
	public int getEventCode() {
		return eventCode;
	}
	public void setEventCode(int eventCode) {
		this.eventCode = eventCode;
	}
	public Object getRequestObj() {
		return requestObj;
	}
	public void setRequestObj(Object requestObj) {
		this.requestObj = requestObj;
	}
	public String getReturnCode() {
		return returnCode;
	}
	public void setReturnCode(String returnCode) {
		this.returnCode = returnCode;
	}
	public String getReturnMsg() {
		return returnMsg;
	}
	public void setReturnMsg(String returnMsg) {
		this.returnMsg = returnMsg;
	}
	public Object getReturnObject() {
		return returnObject;
	}
	public void setReturnObject(Object returnObject) {
		this.returnObject = returnObject;
	}
	public int getTotalNum(){
		return totalNum;
	}
	public void setTotalNum(int totalNum){
		this.totalNum = totalNum;
	}
}

MyFilter.java
package cn.org.jshuwei.j2ee.test.core;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */
public class MyFilter implements Filter {
	private String characterEncoding = "utf-8";

	public void init(FilterConfig config) throws ServletException {
		if (config.getInitParameter("characterEncoding") != null
				&& !config.getInitParameter("characterEncoding").equals("")) {
			this.characterEncoding = config
					.getInitParameter("characterEncoding");
		}
	}

	public void doFilter(ServletRequest request0, ServletResponse response0,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)request0;
		HttpServletResponse response = (HttpServletResponse)response0;
		request.setCharacterEncoding(this.characterEncoding);
		response.setCharacterEncoding(this.characterEncoding);
		response.setHeader("Cache-Control", "no-store");
		response.setHeader("Pragma", "no-cache");
		response.setDateHeader("Expires", 0);
		chain.doFilter(request, response);
	}


	public void destroy() {
	}
}

IAddressDao.java
package cn.org.jshuwei.j2ee.test.dao;

import cn.org.jshuwei.j2ee.test.entity.Address;

import java.util.List;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

public interface IAddressDao extends IBaseDao {
	Address loadAddressById(int id);
	List<Address> getAllAddresss(int start, int limit);
	List<Address> getAllAddresss();
}

IBaseDao.java
package cn.org.jshuwei.j2ee.test.dao;

import java.util.List;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

public interface IBaseDao {
	void save(Object obj);
	void delete(Object obj);
	void update(Object obj);
	@SuppressWarnings("unchecked")
	List queryByExample(Object obj, int start, int limit);
}

AddressDao.java
package cn.org.jshuwei.j2ee.test.dao.impl;

import org.springframework.stereotype.Repository;

import cn.org.jshuwei.j2ee.test.entity.Address;
import cn.org.jshuwei.j2ee.test.dao.IAddressDao;

import java.util.List;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

@Repository
public class AddressDao extends BaseDao implements IAddressDao {
	public Address loadAddressById(int id){
		String hql = "from Address where id=:id";
		return (Address)sessionFactory.getCurrentSession().createQuery(hql).setInteger("id", id).uniqueResult();
	}
	@SuppressWarnings("unchecked")
	public List<Address> getAllAddresss(int start, int limit){
		String hql = "from Address";
		if(limit==0)
			limit=20;
		return sessionFactory.getCurrentSession().createQuery(hql).setFirstResult(start).setMaxResults(limit).list();
	}
	@SuppressWarnings("unchecked")
	public List<Address> getAllAddresss(){
		String hql = "from Address";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}
}

BaseDao.java
package cn.org.jshuwei.j2ee.test.dao.impl;

import java.util.List;

import cn.org.jshuwei.j2ee.test.core.JshuweiContext;
import cn.org.jshuwei.j2ee.test.core.Constant;

import org.hibernate.SessionFactory;
import org.hibernate.criterion.Example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.apache.log4j.Logger;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

@Repository
public class BaseDao {
	@Autowired
	protected SessionFactory sessionFactory;
	static Logger log = Logger.getLogger(BaseDao.class);
	public void save(Object obj){
		sessionFactory.getCurrentSession().save(obj);
	}
	public void delete(Object obj){
		sessionFactory.getCurrentSession().delete(obj);
	}
	public void update(Object obj){
		sessionFactory.getCurrentSession().update(obj);
	}
	@SuppressWarnings("unchecked")
	public List queryByExample(Object obj, int start, int limit){
		try {
			if(limit==0)
				limit=20;
			List results = sessionFactory.getCurrentSession().createCriteria(obj.getClass().getName()).add(Example.create(obj)).setFirstResult(start).setMaxResults(limit).list();
			return results;
		} catch (Exception e) {
			log.error(e.getMessage());
			new JshuweiContext().setReturnCode(Constant.BAD_RETURN_CODE);
			return null;
		}
	}
}

Address.java
package cn.org.jshuwei.j2ee.test.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */
@Entity
@Table(name = "address")
public class Address {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "ID")
	private Integer id;//数据库流水号
	private String name;//姓名
	private Integer age;//年龄
	private String tel;//联系电话
	private String email;//邮箱
	//设置数据库流水号
	public void setId(Integer id){
		this.id = id;
	}
	//获取数据库流水号
	public Integer getId(){
		return id;
	}
	//设置姓名
	public void setName(String name){
		this.name = name;
	}
	//获取姓名
	public String getName(){
		return name;
	}
	//设置年龄
	public void setAge(Integer age){
		this.age = age;
	}
	//获取年龄
	public Integer getAge(){
		return age;
	}
	//设置联系电话
	public void setTel(String tel){
		this.tel = tel;
	}
	//获取联系电话
	public String getTel(){
		return tel;
	}
	//设置邮箱
	public void setEmail(String email){
		this.email = email;
	}
	//获取邮箱
	public String getEmail(){
		return email;
	}
}

IAddressService.java
package cn.org.jshuwei.j2ee.test.service;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

public interface IAddressService extends IBaseService {
	void getAllAddresss();
	void getAddressById();
	void getAddresssByProperty();
	void updateAddress();
	void saveAddress();
	void deleteAddress();
	void getTotal();
}

IBaseService.java
package cn.org.jshuwei.j2ee.test.service;

import cn.org.jshuwei.j2ee.test.core.JshuweiContext;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

public interface IBaseService {
	void exec(JshuweiContext jshuweiContext);
	void execute(JshuweiContext jshuweiContext);
	String getServiceId();
}

AddressService.java

package cn.org.jshuwei.j2ee.test.service.impl;

import cn.org.jshuwei.j2ee.test.entity.Address;
import cn.org.jshuwei.j2ee.test.service.IAddressService;
import cn.org.jshuwei.j2ee.test.dao.IAddressDao;
import cn.org.jshuwei.j2ee.test.core.Constant;
import cn.org.jshuwei.j2ee.test.core.JshuweiContext;
import cn.org.jshuwei.j2ee.util.StringUtil;
import cn.org.jshuwei.j2ee.util.VOUtils;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */
@Service("addressService")
public class AddressService extends BaseService implements IAddressService {
	private JshuweiContext jshuweiContext;
	@Autowired
    private IAddressDao addressDao;
    
    static final Logger log = Logger.getLogger(AddressService.class);
    static final String serviceName = "addressService";
    
    public String getServiceId() {
        return Constant.ADDRESS_SERVICE_ID;
    }
    public void execute(JshuweiContext jshuweiContext) {
    	this.jshuweiContext = jshuweiContext;
    	this.jshuweiContext.setTotalNum(addressDao.getAllAddresss().size());
        switch (jshuweiContext.getEventCode()) {
            case Constant.ADDRESS_SERVICE_GETALL_EVENT:
                getAllAddresss();
                break;
            case Constant.ADDRESS_SERVICE_GETBYID_EVENT:
                getAddressById();
                break;
            case Constant.ADDRESS_SERVICE_GETBYPROPERTY_EVENT:
                getAddresssByProperty();
                break;
            case Constant.ADDRESS_SERVICE_Update_EVENT:
                updateAddress();
                break;
            case Constant.ADDRESS_SERVICE_SAVE_EVENT:
                saveAddress();
                break;
            case Constant.ADDRESS_SERVICE_Delete_EVENT:
                deleteAddress();
                break;
            case Constant.ADDRESS_SERVICE_GETNUM_EVENT:
                getTotal();
                break;
            default:
                getAllAddresss();
                break;
        }
    }
    
    public void getAllAddresss(){
    	try{
    		Integer[] parms = (Integer[])jshuweiContext.getRequestObj();
    		List<Address> list = addressDao.getAllAddresss(parms[0],parms[1]);
    		jshuweiContext.setReturnCode(Constant.GOOD_RETURN_CODE);
    		jshuweiContext.setReturnObject(list);
    	}catch(Exception e){
			log.error(e.getMessage());
			jshuweiContext.setReturnCode(Constant.BAD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.FAIL_SERVICE_MESSAGE);
		}
    }
	public void getAddressById(){
    	try{
    		Address address = addressDao.loadAddressById(Integer.parseInt(jshuweiContext.getRequestObj()+""));
    		jshuweiContext.setReturnCode(Constant.GOOD_RETURN_CODE);
    		jshuweiContext.setReturnObject(address);
    	}catch(Exception e){
			log.error(e.getMessage());
			jshuweiContext.setReturnCode(Constant.BAD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.FAIL_SERVICE_MESSAGE);
		}
	}
	@SuppressWarnings("unchecked")
	public void getAddresssByProperty(){
    	try{
    		List parms = (List)jshuweiContext.getRequestObj();
    		Address address = (Address)parms.get(0);
    		Integer[] pageParms = (Integer[])parms.get(1);
    		List<Address> list = addressDao.queryByExample(address,pageParms[0],pageParms[1]);
    		jshuweiContext.setReturnCode(Constant.GOOD_RETURN_CODE);
    		jshuweiContext.setReturnObject(list);
    	}catch(Exception e){
			log.error(e.getMessage());
			jshuweiContext.setReturnCode(Constant.BAD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.FAIL_SERVICE_MESSAGE);
		}
	}
	@SuppressWarnings("unchecked")
	public void updateAddress(){
    	try{
    		Address address = (Address)jshuweiContext.getRequestObj();
    		Map<String, String> map = VOUtils.beanToMap(address);
    		Address newAddress = addressDao.loadAddressById(address.getId());
    		Class c = newAddress.getClass();
    		Field[] fields = c.getDeclaredFields();
			for (Field field : fields) {
				String fieldName = field.getName();
				if ("id".equals(fieldName))
					continue;
				field.setAccessible(true);
				Method method = c.getMethod("set"
						+ StringUtil.firstToUpper(fieldName), field.getType());
				Constructor con = field.getType().getConstructor(String.class);
				Object o = con.newInstance(map.get(fieldName));
				method.invoke(newAddress, o);
			}    		
    		addressDao.update(newAddress);
    		jshuweiContext.setReturnCode(Constant.GOOD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.Update_SECCESS);
    	}catch(Exception e){
			log.error(e.getMessage());
			jshuweiContext.setReturnCode(Constant.BAD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.FAIL_SERVICE_MESSAGE);
		}
	}
	public void saveAddress(){
    	try{
    		addressDao.save(jshuweiContext.getRequestObj());
    		jshuweiContext.setReturnCode(Constant.GOOD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.SAVE_SECCESS);
    	}catch(Exception e){
			log.error(e.getMessage());
			jshuweiContext.setReturnCode(Constant.BAD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.FAIL_SERVICE_MESSAGE);
		}
	}
	public void deleteAddress(){
    	try{
    		addressDao.delete(addressDao.loadAddressById(Integer.parseInt(jshuweiContext.getRequestObj()+"")));
    		jshuweiContext.setReturnCode(Constant.GOOD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.Delete_SECCESS);
    	}catch(Exception e){
			log.error(e.getMessage());
			jshuweiContext.setReturnCode(Constant.BAD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.FAIL_SERVICE_MESSAGE);
		}	
	}
	public void getTotal(){
		try{
    		List<Address> list = addressDao.getAllAddresss();
    		jshuweiContext.setReturnCode(Constant.GOOD_RETURN_CODE);
    		jshuweiContext.setReturnObject(list);
    	}catch(Exception e){
			log.error(e.getMessage());
			jshuweiContext.setReturnCode(Constant.BAD_RETURN_CODE);
    		jshuweiContext.setReturnMsg(Constant.FAIL_SERVICE_MESSAGE);
		}
	}
}

BaseService.java
package cn.org.jshuwei.j2ee.test.service.impl;

import cn.org.jshuwei.j2ee.test.core.JshuweiContext;
import cn.org.jshuwei.j2ee.test.service.IBaseService;
import cn.org.jshuwei.j2ee.test.core.Constant;

import org.apache.log4j.Logger;
/**
 * Copyright 2009 huwei(jshuwei.org.cn)
 * Generate by huwei's generate Util
 * 本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论, 
 * <p>联系方式:<br>Web:http://jshuwei.org.cn <br>Email:huwei@jshuwei.org.cn<br>QQ:772627301<p/>
 */

public abstract class BaseService implements IBaseService {
	static Logger log = Logger.getLogger(BaseService.class);
	public void exec(JshuweiContext jshuweiContext){
		String serviceId = this.getServiceId();
		String _serviceId = jshuweiContext.getServiceId();
		if(!serviceId.equals(_serviceId)){
			log.error("目标serviceId:"+_serviceId+",却分发至"+serviceId);
			jshuweiContext.setReturnCode(Constant.BAD_RETURN_CODE);
			jshuweiContext.setReturnMsg(Constant.BAD_SERVICE_MESSAGE);
			return;
		}
		try{
			execute(jshuweiContext);
		}catch(Exception e){
			log.error(e.getMessage());
		}
	}
}

省去配置文件和web端代码,实在是太多了,各位还是直接下载源代码直接查看讨论吧!
附件太大了,这里上传不了,只能发到我自己的博客里下载!
1 楼 axxxx2000 2009-09-19  
别那么虚伪好不,没源代码就别写   查看源代码
不开源没关系,但装b就是你不对了
2 楼 jshuwei 2009-09-19  
楼上的,不知道是该说你是个傻逼好呢,还是说你根本就不懂java!源代码和编译好的代码都打成了war包提供下载了,你还说没有!你说你是什么?
3 楼 jshuwei 2009-09-21  
难道就没有人有点什么看法和建议?
4 楼 gmizr 2009-09-21  
这也叫有源码?
下载下来的东西是有源代码,不过都是
引用
本类由胡伟j2ee自动生成工具生成,欢迎与作者交流讨论,

这种生成出来的东西。

而且,下载下来的文件那么大,99%都是jar文件,ext js,还有图片。

你这个
引用
J2EE项目自动生成工具

没人会对生成出来的东西的完整运行环境感兴趣的

核心的东西没有,发上来的全是大且无用的东西
5 楼 jshuwei 2009-09-21  
楼上的,请看清楚帖子啊,我没说发的是生成工具的代码啊。在还没有测试完全好的情况下,发出来工具源码也没有用啊。
jshuwei 写道
最近在做一个代码自动生成工具,下面的代码是自动生成的,欢迎大家讨论生成的代码有什么地方需要修改的。

6 楼 findhappy7 2009-09-22  
jshuwei 写道
楼上的,请看清楚帖子啊,我没说发的是生成工具的代码啊。在还没有测试完全好的情况下,发出来工具源码也没有用啊。
jshuwei 写道
最近在做一个代码自动生成工具,下面的代码是自动生成的,欢迎大家讨论生成的代码有什么地方需要修改的。


楼主,你工作是不是2年左右啊?
7 楼 jshuwei 2009-09-22  
呵呵,为什么问这种问题啊?
8 楼 pujia12345 2009-09-22  
说实话,我不懂你写的这个有何意思,但是我认为,你这个没什么利用价值
9 楼 herowzz 2009-09-22  
这...写的...惨不忍睹......
10 楼 jansel 2009-09-22  
如果是SSH2,如果是简单的CRUD,的确可以通过生成代码的方式来搞定。

但是每个项目组对各自的使用方式不太一样,就比如LZ提出来一个Context,但是不一定每个项目组都会使用,而且LZ的生成的代码中还竟然有HttpServletRequest,这些东东UT如何去测试,除非LZ也能生成UT代码,否则还不见得有人敢用。当然除非不要求UT。

如果稍微复杂一点,在生成的代码基础上再添加业务逻辑,我估计没人愿意这么干。还有一点就是后台的东西既然用到了SSH2,写起来基本比较简单,那么View呢?

我这个觉得重点是View如何做的问题,LZ可以生成View吗?
11 楼 jshuwei 2009-09-22  
jansel 写道
我这个觉得重点是View如何做的问题,LZ可以生成View吗?

我也是这么认为的,在写这个工具的时候就感觉view端比较的难写。但还是生成了简单的view。用extjs做的,只有增删改查,还有权限控制。
12 楼 jshuwei 2009-09-22  
herowzz 写道
这...写的...惨不忍睹......

这只是第一版本,而且是常规的SSH2版本,分布式部署的还没有发布。现在只是测试,写的好的话就不用费神了。就是想让这个工具变得好才拿出来让大家讨论下改进的。不凡说说你的具体看法
13 楼 wangdgsc 2009-09-22  
不太清楚你这个生成的代码能在干什么情况下使用,
14 楼 fireflyk 2009-09-22  
lz,真巧,我最近也在做这个代码生成器啊~
我现在做了个支持模板定义的功能

也就是说,按照规则,定义一个模板,即可生成
优点是,每个人的类里的内容都不一样,你想生成什么样的都可以,满足个性化需求~

当然可以生成不仅仅Java代码,只要你愿意,php、.Net都可以
并且不限于类文件,xml什么的都行~

归根结底,目的是为了减少CRUD代码……