0 0

ssh集成后,hibernate做表单修改5

要修改的jsp表单内容
<%@ include file="../common/IncludeTop.jsp"%>

<div id="Catalog">
	<html:form action="account.do?method=editAccount" method="post">

		<h3>
			User Information
		</h3>

		<table>
			<tr>
				<td>
					User ID:
				</td>
				<td>
					${actionBean.username}
				</td>
			</tr>
			<tr>
				<td>
					New password:
				</td>
				<td>
					<html:text property="password"></html:text>
				</td>
			</tr>
			<tr>
				<td>
					Repeat password:
				</td>
				<td>
					<html:text property="repeatedPassword"></html:text>
				</td>
			</tr>
		</table>
		<h3>Account Information</h3>

<table>
	<tr>
		<td>First name:</td>
		<td><html:text property="firstName" /></td>
	</tr>
	<tr>
		<td>Last name:</td>
		<td><html:text property="lastName" /></td>
	</tr>
	<tr>
		<td>Email:</td>
		<td><html:text property="email" size="40" /></td>
	</tr>
	<tr>
		<td>Phone:</td>
		<td><html:text property="phone" /></td>
	</tr>
	<tr>
		<td>Address 1:</td>
		<td><html:text property="address1" size="40" /></td>
	</tr>
	<tr>
		<td>Address 2:</td>
		<td><html:text property="address2" size="40" /></td>
	</tr>
	<tr>
		<td>City:</td>
		<td><html:text property="city" /></td>
	</tr>
	<tr>
		<td>State:</td>
		<td><html:text property="state" size="4" /></td>
	</tr>
	<tr>
		<td>Zip:</td>
		<td><html:text property="zip" size="10" /></td>
	</tr>
	<tr>
		<td>Country:</td>
		<td><html:text property="country" size="15" /></td>
	</tr>
</table>

<h3>Profile Information</h3>

<table>
	<tr>
		<td>Language Preference:</td>
		<td>
		 	<html:select property="languagePreference">
				<logic:iterate id="language" name="LANGUAGE_LIST">
					<html:option value="language">
						<bean:write name="language"/>
					</html:option>
				</logic:iterate>
			</html:select>
		</td>
	</tr>
	<tr>
		<td>Favourite Category:</td>
		<td>
		 	<html:select property="favouriteCategoryId">
				<logic:iterate id="category" name="CATEGORY_LIST">
					<html:option value="category">
						<bean:write name="category"/>
					</html:option>
				</logic:iterate>
			</html:select>
		</td>
	</tr>
	<tr>
		<td>Enable MyList</td>
		<td>
		 	<html:checkbox property="listOption" />
		</td>
	</tr>
	<tr>
		<td>Enable MyBanner</td>
		<td>
		 	<html:checkbox property="bannerOption" />
		</td>
	</tr>

</table>

		
		<html:submit value="Save Account Information"></html:submit>
	</html:form>

	<html:link page="/order.do?method=listOrders">
		My Orders
	</html:link>
</div>

<%@ include file="../common/IncludeBottom.jsp"%>

struts-comfig.xml配置了action和form-bean
<form-beans>
		<form-bean name="accountForm" type="com.frankco.biz.web.form.AccountForm"></form-bean>
	</form-beans>

<action path="/account"
	  			type="com.frankco.biz.web.actions.AccountAction"
	  			scope="request"
	  			parameter="method"
	  			name="accountForm">
	  		<forward name="SIGNON" path="/WEB-INF/jsp/account/SignonForm.jsp"></forward>
	  		<forward name="CATALOG_VIEWMAIN" path="/catalog.do?method=viewMain"></forward>
	  		<forward name="EDIT_ACCOUNT" path="/WEB-INF/jsp/account/EditAccountForm.jsp"></forward>
	  	</action>


下面是AccountForm:
package com.frankco.biz.web.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class AccountForm extends ActionForm {
	private String username;
	private String password;
	private String repeatedPassword;

	private String email;
	private String firstName;
	private String lastName;
	private String status;
	private String address1;
	private String address2;
	private String city;
	private String state;
	private String zip;
	private String country;
	private String phone;
	private String favouriteCategoryId;
	private String languagePreference;
	private boolean listOption;
	private boolean bannerOption;
	private String bannerName;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getRepeatedPassword() {
		return repeatedPassword;
	}

	public void setRepeatedPassword(String repeatedPassword) {
		this.repeatedPassword = repeatedPassword;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getAddress1() {
		return address1;
	}

	public void setAddress1(String address1) {
		this.address1 = address1;
	}

	public String getAddress2() {
		return address2;
	}

	public void setAddress2(String address2) {
		this.address2 = address2;
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

	public String getZip() {
		return zip;
	}

	public void setZip(String zip) {
		this.zip = zip;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getFavouriteCategoryId() {
		return favouriteCategoryId;
	}

	public void setFavouriteCategoryId(String favouriteCategoryId) {
		this.favouriteCategoryId = favouriteCategoryId;
	}

	public String getLanguagePreference() {
		return languagePreference;
	}

	public void setLanguagePreference(String languagePreference) {
		this.languagePreference = languagePreference;
	}

	public boolean isListOption() {
		return listOption;
	}

	public void setListOption(boolean listOption) {
		this.listOption = listOption;
	}

	public boolean isBannerOption() {
		return bannerOption;
	}

	public void setBannerOption(boolean bannerOption) {
		this.bannerOption = bannerOption;
	}

	public String getBannerName() {
		return bannerName;
	}

	public void setBannerName(String bannerName) {
		this.bannerName = bannerName;
	}
	
	/**
	 * 不推荐使用ActionErrors
	 */
	/*
	@Override
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		ActionErrors errors = new ActionErrors();
        if(getUsername() == null || 
                getUsername().length() < 1) {

            errors.add(ActionMessages.GLOBAL_MESSAGE, 
                new ActionMessage("error.invalidUsername"));
        }
        
        if(getPassword() == null || 
                getPassword().length() < 1) {

            errors.add(ActionMessages.GLOBAL_MESSAGE, 
                new ActionMessage("error.invalidPassword"));
        }
        
        return errors;
	}
	*/
}


我这里怎么把form中用户提交的Account信息在数据库做修改(数据库已经存在数据记录)

我想到几种方式;
1.将form的Account信息通过反射填充到Account的pojo,pojo取得这些信息后
传到dao层给修改;但这里修改有些疑问。

public void update(Account account) throws DataAccessException {
	getHibernateTemplate().update(account);
}

直接这样修改?
hibernate的修改,我记得好像要先将Account中数据库中取出,此时Account为persistent状态,修改account的数据,再update到数据库。

但是我这里已经有了Account的对象作为参数传进来了,难道我要先从数据库get或load  Account的对象出来,再把参数的account信息set到刚get或load出来的Account对象属性中(这里有两Account的pojo)再修改?

那太麻烦了。

我从Form填充到pojo,在dao层又要从pojo填充到get或load出的persistent状态的pojo,再做修改。蛋疼!!eggache!!

2.将AccountForm中用户提交的数据,复制到AccountDTO。数据传输对象。
AccountDTO作为参数传递到dao层用原生sql修改。
public void updateAccount(AccountDTO accountDTO) {
	
	UPDATE ACCOUNT SET
	      EMAIL = #{email},
	      FIRSTNAME = #{firstName},
	      LASTNAME = #{lastName},
	      STATUS = #{status},
	      ADDR1 = #{address1},
	      ADDR2 = #{address2,jdbcType=VARCHAR},
	      CITY = #{city},
	      STATE = #{state},
	      ZIP = #{zip},
	      COUNTRY = #{country},
	      PHONE = #{phone}
	    WHERE USERID = #{username}
 .........
	}

但我用这种方法完全体会不到hibernate给我带来的好处。

大家平时系统中是怎么实现的呢?
hibernate做修改真心麻烦啊!!还不如写jdbc呢!!!
目前还没有答案

相关推荐

    SSH2_Hibernate3.2jar包

    SSH2_Hibernate3.2jar包是用于Java开发的一个整合框架,主要包含了Struts、Spring和Hibernate这三个组件,常被称为SSH。在早期的Java Web应用开发中,SSH框架因其强大的功能和灵活性而被广泛采用。虽然现在随着...

    用Eclipse SSH 集成项目

    **SSH集成项目详解** 在IT行业中,SSH是一个广泛使用的Java Web开发框架组合,它由Spring、Hibernate和Struts三个开源框架组成。这三个框架协同工作,为开发者提供了强大的后端服务和用户界面管理能力,使得复杂的...

    ssh集成开发样板工程(struts2+spring+hibernate)

    这个“ssh集成开发样板工程”提供了完整的开发环境和配置,帮助开发者快速搭建基于SSH的项目结构。 Struts2是MVC(Model-View-Controller)设计模式的实现,它负责处理用户请求并展示结果。Struts2的核心是Action,...

    Struts1.2+hibernate3.2+spring2.5ssh集成详细过程

    ### Struts1.2 + Hibernate3.2 + Spring2.5 (SSH) 集成详细过程 #### 一、前言 随着企业级应用的需求不断增长,单一框架已难以满足复杂的业务逻辑处理与数据持久化的高效管理。因此,集成多个框架成为了解决这一...

    ssh整合架包 hibernate版本为3

    Spring框架是整个SSH集成的核心,它负责管理对象的生命周期和依赖注入,同时提供了AOP(面向切面编程)和声明式事务管理等功能。Spring与Hibernate的结合可以让开发者更方便地进行数据库操作,而无需过多关注底层...

    SSH集成(北大青鸟FaceLook)

    SSH集成是Java Web开发中的一种常见技术组合,指的是Struts2、Hibernate和Spring三大框架的整合。这三者分别负责MVC(Model-View-Controller)架构中的表现层、持久层和业务层,构建出一个高效、灵活且可扩展的企业...

    SSH集成所需要的jar

    SSH集成是Java开发中常见的三大框架整合,包括Struts2、Hibernate和Spring。这些框架的组合使得企业级应用的开发更为高效,提供了模型-视图-控制器(MVC)架构、对象关系映射(ORM)以及依赖注入(DI)等功能。 **...

    JBPM4.4+SSH2 业务流 绑定表单Demo

    【JBPM4.4+SSH2 业务流 绑定表单Demo】是一个结合了Java企业级框架Spring(SSH2中的S和H)与工作流引擎JBPМ4.4的实战示例,用于演示如何在业务流程中集成自定义表单。这个Demo主要涵盖了以下几个关键知识点: 1. *...

    ssh框架项目,内含简单例子 Struts Spring Hibernate

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个项目提供了一个包含Struts2、Spring和Hibernate简单应用实例的压缩包,帮助开发者了解和学习如何在实际项目中整合...

    SSH 集成 bbs项目

    SSH集成在IT行业中通常指的是Spring、Struts和Hibernate这三个开源框架的集成,它们是Java Web开发中的常用组件,用于构建高效、可维护的企业级应用程序。在这个"SSH 集成 bbs项目"中,我们将深入探讨如何将这三个...

    SSH2框架集成

    SSH2框架,全称为Spring、Struts和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了全面的企业级应用解决方案,适用于构建高效、可维护性高的Web应用程序。Spring作为核心容器,负责...

    ssh集成实现对学生信息的管理

    在本项目"ssh集成实现对学生信息的管理"中,SSH框架被用来创建一个功能完善的学生信息管理系统,实现了对学生数据的CRUD(Create、Read、Update、Delete)操作,并能直观地展示在前端。 首先,让我们详细了解一下...

    step by step 06 ssh整合hibernate

    SSH整合是Java开发中一种常见的框架集成方式,它将Struts2、Spring和Hibernate三个流行的开源框架结合在一起,用于构建高效、可维护的企业级Web应用。在这个“step by step 06 ssh整合hibernate”教程中,我们将深入...

    SSH框架集成

    **SSH框架集成** SSH(Struts2 + Spring + Hibernate)是一种经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这三个框架分别负责不同的职责:Struts2处理前端展示逻辑,Spring管理依赖和业务...

    SSH1框架集成

    SSH1框架是Web开发中的一种经典组合,由Spring、Struts和Hibernate三个开源框架整合而成。这个框架集合了模型-视图-控制器(MVC)的设计模式,为开发者提供了强大的后端逻辑处理、业务对象管理和数据持久化能力,...

    ssh框架(spring+struts2+hibernate)

    SSH框架,全称为Spring、Struts2和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,数据库持久化,以及强大的前端展示能力,使得开发者能高效地构建...

    ssh(三大框架)集成

    ### SSH(Struts2, Spring, Hibernate)三大框架集成详解 #### 一、概述 SSH框架,即Struts2、Spring以及Hibernate三个框架的集成,是Java Web开发中非常流行的一种解决方案。它结合了MVC架构的优势,通过Struts2...

    SSH集成的三大框架

    SSH集成的三大框架,指的是Spring、Struts2和Hibernate,这是一套经典的Java Web开发组合,常用于构建高效、稳定的企业级应用。Spring作为核心框架,负责管理对象和依赖注入,Struts2作为表现层框架,处理HTTP请求和...

    Webwork+spring+hibernate集成实例

    SSH(Spring、Struts、Hibernate)或WSH(Webwork、Spring、Hibernate)集成是Java企业级应用开发的常见实践,旨在构建高效、模块化且易于维护的系统。 首先,Webwork是Action-based的MVC框架,它的核心在于Action...

    最新的SSH JAR包( struts2.3.20 spring4.1.1 hibernate4.3.7)

    SSH是Java开发中常见的三个框架的缩写,分别代表Struts、Spring和Hibernate。这个压缩包包含的是这三个框架的特定版本:Struts2.3.20、Spring4.1.1和Hibernate4.3.7。这些版本在当时是相对稳定的,并广泛应用于企业...

Global site tag (gtag.js) - Google Analytics