User user = OperateData.GetUserBylinux usernamee(linux usernamee);

实现邮箱激活账号
我们在注册大型网站的时候,比如像新浪,阿里巴巴网站的时候,填写完注册信息后,都会给用户的邮箱发送一个激活注册账号的邮件,让我们激活,然后才可以使用,那么这么做的好处是什么呢,个人认为有下面两个好处:
01 (01)validateCodeaddTime
idUserName()
iduserName1
web.config&appSetting
key=”IsValidate”& value=“0”
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。您的浏览器已禁用 JavaScript。
类 BmobUser
java.lang.Object
cn.bmob.v3.BmobUser
所有已实现的接口:
java.io.Serializable
public class BmobUser
User表操作对象
嵌套类概要
限定符和类型
static class&
第三方授权信息
构造器概要
构造器和说明
限定符和类型
方法和说明
static void
(Context&context,
&authInfo,
&listener)
关联当前用户的指定第三方账号
static void
(Context&context,
java.lang.String&type,
&listener)
取消当前用户所关联的指定第三方账号
(Context&context)
获取本地用户
static &T&&T
(Context&context,
java.lang.Class&T&&clazz)
获取本地用户,返回自定义用户对象
java.lang.String
java.lang.Boolean
获取Emial验证
java.lang.String
获取用户的手机号
java.lang.Boolean
手机号码是否被验证过
static java.lang.Object
(Context&context,
java.lang.String&key)
获取本地存储用户的指定key对应的值(注册/登陆成功后才可以调用)
java.lang.String
获取SessionToken
java.lang.String
java.lang.String
获取用户名
(Context&context,
&listener)
static &T&&void
(Context&context,
java.lang.String&account,
java.lang.String&password,
&T&&listener)
通过账号和密码登陆
static &T&&void
(Context&context,
java.lang.String&phoneNumber,
java.lang.String&smsCode,
&T&&listener)
通过手机验证码登陆
static void
(Context&context,
&authInfo,
&listener)
第三方账号授权登录
static void
(Context&context)
退出登录,清除本地用户信息
static void
(Context&context,
java.lang.String&email,
&listener)
请求验证邮箱
static void
(Context&context,
java.lang.String&email,
&listener)
通过邮箱重置密码
static void
(Context&context,
java.lang.String&smsCode,
java.lang.String&newPassword,
&listener)
通过短信验证码重置密码
(Context&context)
(Context&context,
&listener)
(java.lang.String&email)
(java.lang.Boolean&emailVerified)
设置Email验证
(java.lang.String&mobilePhoneNumber)
设置手机号码
(java.lang.Boolean&mobilePhoneNumberVerified)
设置手机号码是否验证过
(java.lang.String&password)
设置用户密码
(java.lang.String&sessionToken)
设置SessionToken
(java.lang.String&username)
设置用户名
(Context&context,
java.lang.String&smsCode,
&listener)
一键注册或登录(需传验证码)
static &T&&void
(Context&context,
java.lang.String&phoneNumber,
java.lang.String&smsCode,
&T&&listener)
手机号码一键注册登录
(Context&context,
&listener)
(Context&context)
更新当前用户信息
(Context&context,
java.lang.String&objectId,
&listener)
更新当前用户信息
(Context&context,
&listener)
更新当前用户信息
static void
(Context&context,
java.lang.String&oldPwd,
java.lang.String&newPwd,
&listener)
修改密码(根据提供的旧密码和新密码修改当前用户的密码)
从类继承的方法&cn.bmob.v3.
, , , , , , , , , , , , , , , , , , , , ,
从类继承的方法&java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
构造器详细资料
public&BmobUser()
方法详细资料
getTableName
public&java.lang.String&getTableName()
getUsername
public&java.lang.String&getUsername()
获取用户名
返回:返回用户名
setUsername
public&void&setUsername(java.lang.String&username)
设置用户名
参数:username - 用户名
setPassword
public&void&setPassword(java.lang.String&password)
设置用户密码
参数:password - 密码
public&java.lang.String&getEmail()
返回:返回Email
public&void&setEmail(java.lang.String&email)
参数:email - Email
getEmailVerified
public&java.lang.Boolean&getEmailVerified()
获取Emial验证
返回:返回Verified状态
setEmailVerified
public&void&setEmailVerified(java.lang.Boolean&emailVerified)
设置Email验证
参数:emailVerified -
getSessionToken
public&java.lang.String&getSessionToken()
获取SessionToken
返回:返回SessionToken
setSessionToken
public&void&setSessionToken(java.lang.String&sessionToken)
设置SessionToken
参数:sessionToken - SessionToken
getMobilePhoneNumber
public&java.lang.String&getMobilePhoneNumber()
获取用户的手机号
返回:String
setMobilePhoneNumber
public&void&setMobilePhoneNumber(java.lang.String&mobilePhoneNumber)
设置手机号码
参数:mobilePhoneNumber -
getMobilePhoneNumberVerified
public&java.lang.Boolean&getMobilePhoneNumberVerified()
手机号码是否被验证过
返回:Boolean
setMobilePhoneNumberVerified
public&void&setMobilePhoneNumberVerified(java.lang.Boolean&mobilePhoneNumberVerified)
设置手机号码是否验证过
参数:mobilePhoneNumberVerified -
signOrLogin
public&void&signOrLogin(Context&context,
java.lang.String&smsCode,
&listener)
一键注册或登录(需传验证码)
参数:context - :上下文对象smsCode - :验证码listener -
public&void&signUp(Context&context,
&listener)
参数:context - 应用程序上下文listener - 计算对象个数监听器
public&void&login(Context&context,
&listener)
参数:context - 应用程序上下文listener - 创建对象监听器
@Deprecated
public&void&save(Context&context)
从类复制的说明:&
保存当前对象
参数:context - 应用程序上下文
@Deprecated
public&void&save(Context&context,
&listener)
从类复制的说明:&
保存当前对象
参数:context - 应用程序上下文
public&void&update(Context&context)
更新当前用户信息
参数:context - 应用程序上下文
public&void&update(Context&context,
&listener)
更新当前用户信息
参数:context - 应用程序上下文listener - 更新对象监听器
public&void&update(Context&context,
java.lang.String&objectId,
&listener)
更新当前用户信息
参数:context - 应用程序上下文objectId - 当前用户objectIdlistener - 更新对象监听器
loginWithAuthData
public static&void&loginWithAuthData(Context&context,
&authInfo,
&listener)
第三方账号授权登录
参数:context - :上下文对象authInfo:组装的第三方授权信息 - listener:监听回调 -
associateWithAuthData
public static&void&associateWithAuthData(Context&context,
&authInfo,
&listener)
关联当前用户的指定第三方账号
参数:context - :上下文对象authInfo:组装的第三方授权信息 - listener:回调监听 -
dissociateAuthData
public static&void&dissociateAuthData(Context&context,
java.lang.String&type,
&listener)
取消当前用户所关联的指定第三方账号
参数:context - :上下文对象type - :snsType(只有三种取值:qq、weibo、weixin)listener:监听回调 -
requestEmailVerify
public static&void&requestEmailVerify(Context&context,
java.lang.String&email,
&listener)
请求验证邮箱
参数:context - 应用程序上下文email - Emil地址listener - 请求验证邮箱监听器
resetPasswordByEmail
public static&void&resetPasswordByEmail(Context&context,
java.lang.String&email,
&listener)
通过邮箱重置密码
参数:context - 应用程序上下文email - Emil地址listener - 重置密码监听器
resetPasswordBySMSCode
public static&void&resetPasswordBySMSCode(Context&context,
java.lang.String&smsCode,
java.lang.String&newPassword,
&listener)
通过短信验证码重置密码
参数:context - smsCode - :短信验证码newPassword:新密码 - listener -
loginByAccount
public static&&T&&void&loginByAccount(Context&context,
java.lang.String&account,
java.lang.String&password,
&T&&listener)
通过账号和密码登陆
参数:context - :上下文对象account - :可以为用户名、手机号码以及邮箱三者任意一个password:密码 - listener -
loginBySMSCode
public static&&T&&void&loginBySMSCode(Context&context,
java.lang.String&phoneNumber,
java.lang.String&smsCode,
&T&&listener)
通过手机验证码登陆
参数:context - :上下文对象phoneNumber:手机号码 - smsCode - :验证码listener -
signOrLoginByMobilePhone
public static&&T&&void&signOrLoginByMobilePhone(Context&context,
java.lang.String&phoneNumber,
java.lang.String&smsCode,
&T&&listener)
手机号码一键注册登录
参数:context - :上下文对象phoneNumber:手机号码 - smsCode - :验证码listener - :监听回调
updateCurrentUserPassword
public static&void&updateCurrentUserPassword(Context&context,
java.lang.String&oldPwd,
java.lang.String&newPwd,
&listener)
修改密码(根据提供的旧密码和新密码修改当前用户的密码)
参数:context - oldPwd:旧密码 - newPwd:新密码 - listener -
getCurrentUser
public static&&T&&T&getCurrentUser(Context&context,
java.lang.Class&T&&clazz)
获取本地用户,返回自定义用户对象
参数:context - 应用程序上下文clazz - 自定义BmobUser类型
返回:返回本地用户
getCurrentUser
public static&&getCurrentUser(Context&context)
获取本地用户
参数:context - 应用程序上下文
返回:返回本地用户
public static&void&logOut(Context&context)
退出登录,清除本地用户信息
参数:context - 应用程序上下文
getObjectByKey
public static&java.lang.Object&getObjectByKey(Context&context,
java.lang.String&key)
获取本地存储用户的指定key对应的值(注册/登陆成功后才可以调用)
参数:context - key -
返回:Object原文地址:
我们在注册大型网站的时候,比如像新浪,阿里巴巴网站的时候,填写完注册信息后,都会给用户的邮箱发送一个激活注册账号的邮件,让我们激活,然后才可以使用,那么这么做的好处是什么呢,个人认为有下面两个好处:
&诚心会员,可以保证不是恶意注册,都是一些希望体验网站的用户注册的&防注入,注册机注入有时候我们很难防住它,所以我们可以通过这种方法来分清哪些是用户注册,哪些是注册机注入,对于注册机注入的数据,我们定期删除就可以了
那么怎么样去实现这种功能呢,思路大概是这样的:
&&&&&&& 1.数据库表中添加一个激活的状态字段0或1 (0为未激活,1未激活),在添加一个验证码字段validateCode,最后在添加一个注册时间字段addTime
&&&&&&& 2.程序中,注册页面添加注册信息,随机生成注册验证码添加到数据库中,越复杂越好,然后对验证码进行加密,把用户id或者UserName和加过密的验证码作为参数发送到&& 邮箱中(有的时候只把验证码发送到邮箱,然后找到有没有匹配的,然后修改状态,我感觉这样不太好,防止有相同的验证码出现,所以最好在加一个参数)
&&&&&&& 3.发送到邮箱里以后,用户可以点击进行确认,这里有时间限制,比如48小时之内未能通过注册,则失效,只能重新注册,激活链接只能使用一次,一次后也将失效
&&&&&&& 4.处理页面中,首先验证链接是否过期,将注册的时间与当前的时间作比较,如果超过时间则提示验证码过期,重新注册或者重新发送验证码,然后再判断链接是否用过,只能使用一次,这个只要判断数据库中的验证码是否为空即可,验证都通过以后,根据id或userName从数据库中取回验证码与链接中的验证码作比较,通过了,修改状态为1,即启用,然后将注册码清空,转到登陆或者首页,否则提示验证失败!
&&&&&&& 5.为了方便是否进行邮箱验证的转换,可以在web.config中配置信息&appSetting key=”IsValidate” value=“0” /&然后在注册的时候判断一下即可!
&&&&&&& 6.为了防注册机注入,我们要判断邮箱的唯一性,要不然他们会伪造一个邮箱激活
代码如下:
数据库中加三个自段:时间addData,随机验证码validataCode,用户状态UserState
发送到邮箱里的邮件:
点击链接进入到处理页面operate.aspx
这样以来,邮箱激活账号的基本功能就实现了,有什么意见大家可以提提!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5206次
排名:千里之外
(2)(1)(3)(4)(1)(1)(2)Spring+Hibernate整合开发配置,完整实例
Spring+Hibernate整合开发配置,完整实例
一、beans.xml
com.wen.entity
org.hibernate.dialect.MySQLDialect
二、user-servlet.xml
三、jdbc.properties
jdbc.driverClassName=com..jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_user
jdbc.username=root
jdbc.password=root
com.wen.entity实体类
1、Pager.java
package com.wen.
import javax.persistence.E
import javax.persistence.GeneratedV
import javax.persistence.GenerationT
import javax.persistence.Id;
import javax.persistence.T
import org.hibernate.annotations.GenericG
@Table(name="t_user")
public class User {
@GeneratedValue
public int getId() {
public void setId(int id) {
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getPassword() {
public void setPassword(String password) {
this.password =
public String getEmail() {
public void setEmail(String email) {
this.email =
public String getNickname() {
public void setNickname(String nickname) {
this.nickname =
2、Pager.java
package com.wen.
import java.util.L
public class Pager {
private List
//每页记录数
private int totalS
public List getDatas() {
public void setDatas(List datas) {
this.datas =
public int getOffset() {
public void setOffset(int offset) {
this.offset =
public int getSize() {
public void setSize(int size) {
this.size =
public int getTotalSize() {
return totalS
public void setTotalSize(int totalSize) {
this.totalSize = totalS
public long getTotal() {
public void setTotal(long total) {
this.total =
3、SystemContext.java
package com.wen.
public class SystemContext {
private static ThreadLocal offset = new ThreadLocal();
private static ThreadLocal size = new ThreadLocal();
public static Integer getOffset() {
return offset.get();
public static void setOffset(Integer _offset) {
offset.set(_offset);
public static Integer getSize() {
return size.get();
public static void setSize(Integer _size) {
size.set(_size);
public static void removeSize() {
size.remove();
public static void removeOffset() {
offset.remove();
4、UserException.java
package com.wen.
public class UserException extends RuntimeException {
private static final long serialVersionUID = 1L;
public UserException() {
// TODO Auto-generated constructor stub
public UserException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
public UserException(String message) {
super(message);
// TODO Auto-generated constructor stub
public UserException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
com.wen.dao 数据库接口
1、IUserDao.java
package com.wen.
import java.util.L
import com.wen.entity.P
import com.wen.entity.U
public interface IUserDao {
public void add(User user);
public void update(User user);
public void delete(int id);
public User load(int id);
public List list();
public Pager find();
public User loadByUsername(String username);
2、UserDao.java
package com.wen.
import java.util.L
import javax.annotation.R
import org.hibernate.Q
import org.hibernate.SessionF
import org.springframework.orm.hibernate4.support.HibernateDaoS
import org.springframework.stereotype.R
import com.wen.entity.P
import com.wen.entity.SystemC
import com.wen.entity.U
@Repository("userDao")
public class UserDao extends HibernateDaoSupport implements IUserDao {
//SessionFactory 在包org.hibernate内
//private SessionFactory sessionF
//为SessionFactory添加set方法,Spring才能为其注入
//public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionF
public void setSuperSessionFactory(SessionFactory sessionFactory) {
this.setSessionFactory(sessionFactory);
public void add(User user) {
this.getHibernateTemplate().save(user);
public void update(User user) {
this.getHibernateTemplate().update(user);
public void delete(int id) {
User user = this.load(id);
this.getHibernateTemplate().delete(user);
public User load(int id) {
return this.getHibernateTemplate().load(User.class, id);
@SuppressWarnings("unchecked")
public List list() {
return this.getSessionFactory().getCurrentSession().createQuery("from User").list();
public Pager find() {
int size = SystemContext.getSize();
int offset = SystemContext.getOffset();
Query query = this.getSessionFactory().getCurrentSession().createQuery("from User");
query.setFirstResult(offset).setMaxResults(size);
@SuppressWarnings("unchecked")
List datas = query.list();
Pager us = new Pager();
us.setDatas(datas);
us.setOffset(offset);
us.setSize(size);
long total = (Long) this.getSessionFactory().getCurrentSession().createQuery("select count(*) from User").uniqueResult();
us.setTotal(total);
public User loadByUsername(String username) {
return (User) this.getSessionFactory().getCurrentSession()
.createQuery("from User where username=?")
.setParameter(0, username).uniqueResult();
com.wen.service 业务逻辑层
1、IUserService.java
package com.wen.
import java.util.L
import com.wen.entity.P
import com.wen.entity.U
public interface IUserService {
public void add(User user);
public void update(User user);
public void delete(int id);
public User load(int id);
public List list();
public Pager find();
public User login(String username, String password);
2、UserService.java
package com.wen.
import java.util.L
import org.springframework.stereotype.S
import com.wen.dao.IUserD
import com.wen.entity.P
import com.wen.entity.U
import com.wen.entity.UserE
public class UserService implements IUserService {
private IUserDao userD
public IUserDao getUserDao() {
return userD
public void setUserDao(IUserDao userDao) {
this.userDao = userD
public void add(User user) {
User u = userDao.loadByUsername(user.getUsername());
if(u!=null) throw new UserException("要添加的用户已经存在");
userDao.add(user);
public void update(User user) {
userDao.update(user);
public void delete(int id) {
userDao.delete(id);
public User load(int id) {
return userDao.load(id);
public List list() {
return userDao.list();
public Pager find() {
return userDao.find();
public User login(String username, String password) {
User u = userDao.loadByUsername(username);
if(u==null) throw new UserException("登录用户不存在");
if(!u.getPassword().equals(password)) throw new UserException("用户密码不正确");
com.wen.web 控制层
1、SystemContextFilter.java
package com.wen.
import java.io.IOE
import javax.servlet.F
import javax.servlet.FilterC
import javax.servlet.FilterC
import javax.servlet.ServletE
import javax.servlet.ServletR
import javax.servlet.ServletR
import com.wen.entity.SystemC
public class SystemContextFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
int offset = 0;
offset = Integer.parseInt(req.getParameter("pager.offset"));
} catch(NumberFormatException e) {
//e.printStackTrace();
SystemContext.setOffset(offset);
SystemContext.setSize(15);
chain.doFilter(req, resp);
} finally {
SystemContext.removeOffset();
SystemContext.removeSize();
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
2、UserController.java
package com.wen.
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
@Controller
@RequestMapping ("/user")
public class UserController {
@RequestMapping(value="/users", method=RequestMethod.GET)
public String list(){
return "user/list";
关于spring配置的SessionFactory解释及其使用方法
1、添加类BaseSessionFactoryImpl用于获取Session
类BaseSessionFactoryImpl的内容如下:
public class BaseSessionFactoryImpl {
@Resource(name="sessionFactory")
private SessionFactory sessionFactory=
public Session getSession(){
return sessionFactory.getCurrentSession();
2、在Dao层获取Session,
public class UserDaoImplextends BaseSessionFactoryImpl
public User queryByUsername(String userName) {
User user=
String sql="select user from User user where user.userName="+userN
user=(User) getSession().get(User.class, 1);
} catch (Exception e) {
e.printStackTrace();
3、重点注意事项
SessionFactory的getCurrentSession并不能保证在没有当前Session的情况下会自动创建一个新的,这取决于CurrentSessionContext的实现,SessionFactory将调用CurrentSessionContext的currentSession()方法来获得Session。
在Spring中,如果我们在没有配置TransactionManager并且没有事先调用SessionFactory.openSession()的情况直接调用getCurrentSession(),那么程序将抛出“No
Session found for current thread”异常。
如果配置了TranactionManager并且通过@Transactional或者声明的方式配置的事务边界,那么Spring会在开始事务之前通过AOP的方式为当前线程创建Session,此时调用getCurrentSession()将得到正确结果。
然而,产生以上异常的原因在于Spring提供了自己的CurrentSessionContext实现,如果我们不打算使用Spring,而是自己直接从hibernate.cfg.xml创建SessionFactory,并且为在hibernate.cfg.xml
中设置current_session_context_class为thread,也即使用了ThreadLocalSessionContext,那么我们在调用getCurrentSession()时,如果当前线程没有Session存在,则会创建一个绑定到当前线程。
Hibernate在默认情况下会使用JTASessionContext,Spring提供了自己SpringSessionContext,因此我们不用配置current_session_context_class,当Hibernate与Spring集成时,将使用该SessionContext,故此时调用getCurrentSession()的效果完全依赖于SpringSessionContext的实现。
在没有Spring的情况下使用Hibernate,如果没有在hibernate.cfg.xml中配置current_session_context_class,有没有JTA的话,那么程序将抛出”No
CurrentSessionContext
configured!”异常。此时的解决办法是在hibernate.cfg.xml中将current_session_context_class配置成thread。
在Spring中使用Hibernate,如果我们配置了TransactionManager,那么我们就不应该调用SessionFactory的openSession()来获得Sessioin,因为这样获得的Session并没有被事务管理。
至于解决的办法,可以采用如下方式:
1. 在spring 配置文件中加入
& tx:annotation-driven transaction-manager=”transactionManager”/&
并且在处理业务逻辑的类上采用注解
public class CustomerServiceImpl implements CustomerService {
@Transactional
public void saveCustomer(Customer customer) {
customerDaoImpl.saveCustomer(customer);
另外在 hibernate 的配置文件中,也可以增加这样的配置来避免这个错误:
& property name=”current_session_context_class”&thread& /property&

我要回帖

更多关于 operatedata 的文章

 

随机推荐