项目5_ssh_crm_day4

用户注册:

将鼠标放上去,显示小手模样

 

解决用户注册失败,在regist页面抛出异常

解决用户登录失败,在login页面抛出异常

方法一:自定义异常,然后配置对应的页面显示错误即可。(不适应,原因是如果页面有多个异常,那么就要写多个自定义异常)

方法二:将将异常信息捕捉,然后跳转到页面显示即可

public String regist(){
 //1 调用Service保存注册用户
 try {
  userService.register(user);
 } catch (Exception e) {
	e.printStackTrace();
	ActionContext.getContext().put("error", e.getMessage());
	return "regist";
  }
	//2 重定向到登陆页面
	return "toLogin";
}



public void register(User user) {
 //1调用Dao根据注册的登陆名获得用户对象
	User existU=userDao.getUserByUsercode(user.getUser_code());
	if(existU !=null){
		//2 如果获得到user对象,用户名已经存在,抛出异常
		throw new RuntimeException("用户名已存在!!");
	}
	userDao.save(user);
}


public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao {
	
	public User getUserByUsercode(final String usercode) {
		//HQL   由于是匿名内部类因此参数变成final类型
		/*return getHibernateTemplate().execute(new HibernateCallback<User>() {
			@Override
			public User doInHibernate(Session session) throws HibernateException {
				String hql="from User where user_code=?";
				Query query = session.createQuery(hql);
				query.setParameter(0,usercode);
				User user=(User) query.uniqueResult();
				return user;
			}
		});*/

		DetachedCriteria dc=DetachedCriteria.forClass(User.class);
		dc.add(Restrictions.eq("user_code", usercode));
		List<User> list = (List<User>) getHibernateTemplate().findByCriteria(dc);
		if(list !=null && list.size()>0){
			return list.get(0);
		}else{
			return null;
		}
	}

}

登陆校验:

public class PrivilegeInterceptor extends MethodFilterInterceptor {
  protected String doIntercept(ActionInvocation invocation) throws Exception {
	User user = (User) ActionContext.getContext().getSession().get("user");
	 if(user !=null){
	   return invocation.invoke();
	 }
	   return "toHome";
	}
}

用户拜访客户的增加修改查询:

一:首先配置实体类和映射文件

public class SaleVisit {
  private String visit_id;
  private String visit_interviewee;
  private String visit_addr;
  private String visit_detail;
  private Date visit_time;
  private Date visit_nexttime;
  //表达所属客户对象 多对一
  private Customer customer;
  //表达所属用户对象 多对一
  private User	user;
}

<hibernate-mapping package="cn.itcast.domain" >
	<class name="SaleVisit" table="sale_visit" >
		<id name="visit_id"  >
			<generator class="uuid"></generator>
		</id>
		<property name="visit_interviewee"  ></property>
		<property name="visit_addr"  ></property>
		<property name="visit_detail"  ></property>
		<property name="visit_time"  ></property>
		<property name="visit_nexttime"  ></property>
		
		<!-- 多对一 -->
		<many-to-one name="customer" column="visit_cust_id" class="Customer" ></many-to-one>
		<!-- 多对一 -->
		<many-to-one name="user" column="visit_user_id" class="User" ></many-to-one>
	</class>
</hibernate-mapping>


//分别在用户和User的实体类和配置文件中添加关系,这里只写了一个
//表达客户与拜访记录的一对多
private Set<SaleVisit> saleVisits = new HashSet<SaleVisit>();
<!-- 一对多 -->
<set name="saleVisits">
	<key column="visit_user_id" ></key>
	<one-to-many class="SaleVisit" />
</set>

用户拜访客户记录-添加

日期控件(可惜这个日期控件的今天点击有问题,无法显示数据,以后尽量别用这个,或者以后有空自己写一个没有问题的)

这是个Demo

<HTML>
	<!-- 日期插件,使用jquery -->
	<script type="text/javascript" src="jquery/jquery-1.4.2.js"></script>
	<link rel="stylesheet" href="jquery/jquery.datepick.css" type="text/css">
	<script type="text/javascript" src="jquery/jquery.datepick.js"></script>
	<script type="text/javascript" src="jquery/jquery.datepick-zh-CN.js"></script>

	<script type="text/javascript">
		$(document).ready(function(){
			//使用class属性处理  'yy-mm-dd' 设置格式"yy/mm/dd"
			$('#birthday').datepick({dateFormat: 'yy-mm-dd'}); 
		});
	</script>
<body>
	<input type="text" id="birthday"/>
</body>
</HTML>
public class SaleVisitAction extends ActionSupport implements ModelDriven<SaleVisit>{
  private SaleVisitService saleVisitService;
  private SaleVisit saleVisit=new SaleVisit();
  //添加客户拜访记录
  public String save(){
  //取出登陆用户,放入SaleVisit实体.表达关系
  User u=(User) ActionContext.getContext().getSession().get("user");
  saleVisit.setUser(u);
  saleVisitService.save(saleVisit);
  return "toList";
}

  public SaleVisit getModel() {
	return saleVisit;
  }
  public void setSaleVisitService(SaleVisitService saleVisitService) {
	this.saleVisitService = saleVisitService;
  }
}

public class SaleVisitServiceImpl implements SaleVisitService{
  private SaleVisitDao saleVisitDao;
  public void save(SaleVisit saleVisit) {
   saleVisitDao.saveOrUpdate(saleVisit);
  }
  public void setSaleVisitDao(SaleVisitDao saleVisitDao) {
   this.saleVisitDao = saleVisitDao;
 }
}

添加的时候,控制台报错了,问题如下(虽然我解决了这个问题,但是不知道这个问题怎么出现的)

ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush 
[Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1]

解决方法一:

解决方法二:

用户拜访客户记录列表(和前面一样代码省略

怎么将时间变成后面的那种,需要添加两个get方法

用户拜访客户记录(方法和前面一样省略) 注意这个时间回显用新增的那个get方法才可以正常回显

MD5加密:典型的不可逆的加密方式

package cn.itcast.utils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Utils {
	/**
	 * 使用md5的算法进行加密
	 */
	public static String md5(String plainText) {
		byte[] secretBytes = null;
		try {
			secretBytes = MessageDigest.getInstance("md5").digest(
					plainText.getBytes());
		} catch (NoSuchAlgorithmException e) {
			throw new RuntimeException("没有md5这个算法!");
		}
		String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字
		// 如果生成数字未满32位,需要前面补0
		for (int i = 0; i < 32 - md5code.length(); i++) {
			md5code = "0" + md5code;
		}
		return md5code;
	}

	public static void main(String[] args) {
		System.out.println(md5("123"));
	}

}

MD5加密主要是用在用户注册和登录的时候

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guoyebing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值