public String perform(HttpServletRequest request) {
		// Set up error list
		List<String> errors = new ArrayList<String>();
		request.setAttribute("errors", errors);

		try {

			// Load the form parameters into a form bean
			ChangePwdForm form = formBeanFactory.create(request);

			// If no params were passed, return with no errors so that the form
			// will be
			// presented (we assume for the first time).
			if (!form.isPresent()) {
				return "c_change-pwd.jsp";
			}

			// Check for any validation errors
			errors.addAll(form.getValidationErrors());
			if (errors.size() != 0) {
				return "c_change-pwd.jsp";
			}

			CustomerBean customer = (CustomerBean) request.getSession()
					.getAttribute("customer");
			// try {
			Transaction.begin();
			// Change the password
			customerDAO.changePassword(customer.getCustomer_id(),
					form.getNewPassword());

			request.setAttribute("message",
					"Password changed for " + customer.getUsername());
			Transaction.commit();
			return "c_success.jsp";

		} catch (RollbackException e) {
			errors.add(e.toString());
			return "c_change-pwd.jsp";
		} catch (FormBeanException e) {
			errors.add(e.toString());
			return "c_change-pwd.jsp";
		} catch (Exception e) {
			errors.add(e.getMessage());
			return "c_change-pwd.jsp";
		} finally {
			if (Transaction.isActive())
				Transaction.rollback();
		}
	}