1.首先引入所需要的js样式
再看下login.jsp页面的表单内容
2.再写一下btnsendcode.js页面的内容
var InterValObj; // timer变量,控制时间
var count = 60; // 间隔函数,1秒执行
var email;
var curCount;// 当前剩余秒数
function sendMessage() {
email= document.getElementById("sendemail").value;
checknum= document.getElementById("checkNum").value;
curCount = count;
// 设置button效果,开outPrint("用户不存在,请检查是否输入正确!");始计时
$("#btnSendCode").attr("disabled", "true");
$("#btnSendCode").val("请在" + curCount + "秒内输入验证码");
InterValObj = window.setInterval(SetRemainTime, 1000); // 启动计时器,1秒执行一次
// 向后台发送处理数据
$.ajax({
type : "POST",
url : "user/sendemail",
data :"email="+email+"&checknum="+checknum,
success : function(msg) {
alert(msg);
}
});
}
// timer处理函数
function SetRemainTime() {
if (curCount == 0) {
window.clearInterval(InterValObj);// 停止计时器
$("#btnSendCode").removeAttr("disabled");// 启用按钮
$("#btnSendCode").val("重新发送验证码");
code = ""; // 清除验证码。如果不清除,过时间后,输入收到的验证码依然有效
} else {
curCount--;
$("#btnSendCode").val("请在" + curCount + "秒内输入验证码");
}
}
3.这个是Action里面的主要方法的内容
/**
* 重置密码
*/
public void resetpassword(){
try {
code=(String)getSession().getAttribute("code");
getSession().setAttribute("code", null);
//判断session里面的用户是不是null,如果为空,择是在登陆页面重置密码,如果不为null,择是登陆后修改密码
if(user==null){
//查询用户是否存在
List
criterions.add(Restrictions.eq("name", name));
user = usersService.executeQueryUnique(criterions, null);
if(user==null){
outPrint("用户不存在,请检查是否输入正确!");
return;
}}
if(user.getEmail().equals(email)&&checknum.equals(code)){
user.setPassword(new MD5Code().getMD5ofStr(password));
usersService.saveOrUpdate(user);
outPrint("修改成功!");
}else {
outPrint("修改失败,请检查!");
}
} catch (Exception e) {
e.printStackTrace();
outPrint("密码修改失败");
}
}
/**
* 给邮箱发送验证码
* 获取到的是email地址和6位验证码 code
*/
public void sendemail(){
try {
String charList = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
code = "";
java.util.Random f = new Random();
for(int i=0;i<6;i++)
{
code += charList.charAt(Math.abs(f.nextInt())%charList.length());
}
getSession().setAttribute("code", code);
SendMail sendemail = new SendMail();
sendemail.setHostName("smtp.qq.com");
sendemail.setSendMailAddress("[email protected]");
sendemail.setMailPassword("TONG88057309");
sendemail.setMailTitle("重设密码");
String[] mailAddres = {email};
sendemail.setGetMailAddress(mailAddres);
sendemail.setMailContent("您好,您在进行重设密码服务。您的验证码是:"+code);
if(sendemail.send()){
outPrint("发送成功!");
}else{
outPrint("发送失败!");
}
} catch (Exception e) {
e.printStackTrace();
outPrint("发送失败!");
}
}
4.由于调用了SendMail的方法所以给出SendMail.java的内容
package com.xerxes.action;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import javax.servlet.http.Cookie;
import org.apache.commons.mail.SimpleEmail;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import com.xerxes.pojo.RoleAction;
import com.xerxes.pojo.Roles;
import com.xerxes.pojo.Users;
import com.xerxes.pojo.UsersRole;
import com.xerxes.util.DateUtil;
import com.xerxes.util.MD5Code;
import com.xerxes.util.SendMail;
import com.xerxes.util.json.JsonUtil;
/**
* @
*
* E-mail: [email protected]
*
* @version v1.1
*
* 创建时间:2014-5-4 下午4:38:07
*/
public class UsersAction extends BaseAction {
private static final long serialVersionUID = 7217381612938807192L;
private String code;
private String checknum;
/**
* 账号
*/
private String name;
/**
* 账号注册的类别,自主注册,还是添加。
*/
private String state;
/**
* 用户email
*/
private String email;
/**
* 旧密码
*/
private String oldpassword;
/**
* 密码
*/
private String password;
/**
* 是否记住密码
*/
private String rememberUP;
/**
* Users对象
*/
private Users users;
/**
* 要删除的用户的ID
*/
private String ids;
/**
* 跳转的页面
*/
private String page;
private Roles roles;
private Set
private UsersRole usersRole;
/**
* 用户登陆
* @throws IOException
*/
public void login() throws IOException{
try {
/*
* 查询
*/
List
criterions.add(Restrictions.eq("name",name));
criterions.add(Restrictions.eq("password",new MD5Code().getMD5ofStr(password)));
users = usersService.executeQueryUnique(criterions,null);
/*
* 判断查询出来的users是否为null,如果为空则跳转登陆页面,并提示用户,相反则登陆到主页面,并将users放入到Session中
*/
if( users != null){
getSession().setAttribute("userId", users.getId());
//判断是否记住密码
if("on".equals(rememberUP)){
Cookie cookieuser = new Cookie("user",name+"-"+password);
//设定有效时间 以秒(s)为单位
cookieuser.setMaxAge(Integer.MAX_VALUE);
//设置Cookie路径和域名
cookieuser.setPath("/") ;
getResponse().addCookie(cookieuser);
}else {
Cookie cookieuser = new Cookie("user",null);
cookieuser.setMaxAge(-1);
cookieuser.setPath("/") ;
getResponse().addCookie(cookieuser);
}
users.setLastIp(getRequest().getRemoteAddr());
users.setLastTime(new Timestamp(new Date().getTime()));
usersService.saveOrUpdate(users);
//将user放入到session
super.getSession().setAttribute("userInfo", users);
logger.info("用户:"+users.getName()+"登陆系统!"+"登陆IP["+super.getRequest().getRemoteHost()+"]");
//跳转到授权action
super.sendRedirect("accredit");
}else{
//设置错误信息
setMessage("alert('账号密码错误!')");
//跳转登陆页面
super.forward("../WEB-INF/page/login.jsp");
}
} catch (Exception e) {
e.printStackTrace();
//设置错误信息
setMessage("alert('系统异常!')");
//跳转登陆页面
super.forward("../WEB-INF/page/login.jsp");
}
}
public void accredit(){
try {
String menu = (String) getSession().getAttribute("menu");
List
if(menu==null){
menu="";
users=(Users) super.getSession().getAttribute("userInfo");
if(users==null){
//设置错误信息
setMessage("alert('请输入账号密码!')");
//跳转登陆页面
super.forward("../WEB-INF/page/login.jsp");
return;
}
criterions = new ArrayList
criterions.add(Restrictions.eq("users",users));
usersRole = usersRoleService.executeQueryUnique(criterions,null);
roles = usersRole.getRoles();
if(roles.getName().equals(ATUO_REG)){
getSession().setAttribute("autoReg", "readonly=\"readonly\"");
}
roleActions = roles.getRoleactions();
Iterator
while (iterator.hasNext()) {
RoleAction roleAction = (RoleAction) iterator.next();
menu+=roleAction.getAction().getFlag()+",";
getSession().setAttribute(roleAction.getAction().getFlag(),roleAction.getAction().getPage());
}
getSession().setAttribute("menu", menu.substring(0, menu.length()-1));
}
criterions = new ArrayList
criterions.add(Restrictions.eq("online", true));
criterions.add(Restrictions.eq("status", "LONGIN"));
criterions.add(Restrictions.eq("status", "LONGIN"));
getSession().setAttribute("online", connectionsService.getCount(criterions));
super.forward("/WEB-INF/page/main/main.jsp");
} catch (Exception e) {
e.printStackTrace();
//设置错误信息
setMessage("alert('您没有权限登陆!')");
//跳转登陆页面
super.forward("../WEB-INF/page/login.jsp");
}
}
/**
* 注销用户
* 清空session,并跳转到登陆页面
* @throws IOException
*/
public void loginout() throws IOException{
users = (Users) getSession().getAttribute("userInfo");
logger.info("用户:["+users.getName()+"]注销系统!");
//清空Session
getSession().setAttribute("userInfo", null);
String menu = (String) getSession().getAttribute("menu");
String[] menus=menu.split(",");
for (String string : menus) {
getSession().setAttribute(string, null);
}
getSession().setAttribute("menu", null);
getSession().setAttribute("online",null);
getSession().setAttribute("autoReg", null);
//跳转到登陆页面
sendRedirect("../lg");
}
/**
* 重置密码
*/
public void resetpassword(){
try {
code=(String)getSession().getAttribute("code");
getSession().setAttribute("code", null);
//判断session里面的用户是不是null,如果为空,择是在登陆页面重置密码,如果不为null,择是登陆后修改密码
if(user==null){
//查询用户是否存在
List
criterions.add(Restrictions.eq("name", name));
user = usersService.executeQueryUnique(criterions, null);
if(user==null){
outPrint("用户不存在,请检查是否输入正确!");
return;
}}
if(user.getEmail().equals(email)&&checknum.equals(code)){
user.setPassword(new MD5Code().getMD5ofStr(password));
usersService.saveOrUpdate(user);
outPrint("修改成功!");
}else {
outPrint("修改失败,请检查!");
}
} catch (Exception e) {
e.printStackTrace();
outPrint("密码修改失败");
}
}
/**
* 给邮箱发送验证码
* 获取到的是email地址和6位验证码 code
*/
public void sendemail(){
try {
String charList = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
code = "";
java.util.Random f = new Random();
for(int i=0;i<6;i++)
{
code += charList.charAt(Math.abs(f.nextInt())%charList.length());
}
getSession().setAttribute("code", code);
SendMail sendemail = new SendMail();
sendemail.setHostName("smtp.qq.com");
sendemail.setSendMailAddress("[email protected]");
sendemail.setMailPassword("TONG88057309");
sendemail.setMailTitle("重设密码");
String[] mailAddres = {email};
sendemail.setGetMailAddress(mailAddres);
sendemail.setMailContent("您好,您在进行重设密码服务。您的验证码是:"+code);
if(sendemail.send()){
outPrint("发送成功!");
}else{
outPrint("发送失败!");
}
} catch (Exception e) {
e.printStackTrace();
outPrint("发送失败!");
}
}
private Object parseInt(double d) {
// TODO Auto-generated method stub
return null;
}
/**
* 修改密码
*/
public void reset(){
try {
//判断session里面的用户是不是null,如果为空,择是在登陆页面重置密码,如果不为null,择是登陆后修改密码
if(user==null){
//查询用户是否存在
List
criterions.add(Restrictions.eq("name", name));
user = usersService.executeQueryUnique(criterions, null);
if(user==null){
outPrint("用户不存在,请检查是否输入正确!");
return;
}
}
if(user.getPassword().equals(new MD5Code().getMD5ofStr(oldpassword))){
user.setPassword(new MD5Code().getMD5ofStr(password));
usersService.saveOrUpdate(user);
outPrint("修改成功!");
}else {
outPrint("修改失败,请检查!");
}
} catch (Exception e) {
e.printStackTrace();
outPrint("密码修改失败");
}
}
/**
* 保存用户
*/
public void save(){
try {
List
criterions.add(Restrictions.eq("name",users.getName()));
if (usersService.executeQueryUnique(criterions,null) != null){
super.outPrint("用户以存在!请重新注册。");
}else {
users.setPassword(new MD5Code().getMD5ofStr(password));
users.setCreateTime(Timestamp.valueOf(DateUtil.format(new Date())));
users.setLastTime(Timestamp.valueOf(DateUtil.format(new Date())));
users.setLastIp("0.0.0.0");
UsersRole newUsersRole=new UsersRole();
Roles roles=null;
if(this.state!=null&&this.state.equals("zhuce")){
users.setParent_id(13);
criterions.clear();
criterions.add(Restrictions.eq("name","自主注册用户"));
roles=rolesService.executeQueryUnique(criterions, null);
}else{
users.setParent_id(this.user.getId());
criterions.clear();
criterions.add(Restrictions.eq("users",this.user));
UsersRole usersRole=usersRoleService.executeQueryUnique(criterions, null);
String roleName=usersRole.getRoles().getName();
if(roleName.equals("超级管理员")){
criterions.clear();
criterions.add(Restrictions.eq("name","代理商"));
roles=rolesService.executeQueryUnique(criterions, null);
}else if(roleName.equals("代理商")){
criterions.clear();
criterions.add(Restrictions.eq("name","商家用户"));
roles=rolesService.executeQueryUnique(criterions, null);
}
}
if(roles==null){
super.outPrint("没有注册权限!");
return;
}else{
newUsersRole.setRoles(roles);
usersService.save(users);
newUsersRole.setUsers(users);
usersRoleService.save(newUsersRole);
super.outPrint("用户注册成功!");
}
}
} catch (Exception e) {
e.printStackTrace();
super.outPrint("用户注册失败!");
}
}
/**
* 分页获取全部用户
*/
public void show(){
Map
List
criterions.add(Restrictions.eq("users", this.user));
UsersRole usersRole=usersRoleService.executeQueryUnique(criterions, null);
String roleName=usersRole.getRoles().getName();
List
if(roleName.equals("超级管理员")){
criterions.clear();
usersList=usersService.getListForPage(null,null,pageNumber, pageSize, order, sort);
}else if(roleName.equals("代理商")){
criterions.clear();
criterions.add(Restrictions.or(Restrictions.eq("parent_id", this.user.getId()), Restrictions.eq("id", this.user.getId())));
usersList=usersService.getListForPage(criterions,null,pageNumber, pageSize, order, sort);
}else{
criterions.clear();
criterions.add(Restrictions.eq("id", this.user.getId()));
usersList=usersService.getListForPage(criterions,null,pageNumber, pageSize, order, sort);
}
jsonMap.put("total", usersService.getCount(criterions));
jsonMap.put("rows",usersList);
outPrint(JsonUtil.mapTojson(jsonMap));
jsonMap = null;
}
/**
* 批量删除用户
*/
public void del(){
try {
usersService.delete(ids);
outPrint("用户删除成功!");
} catch (Exception e) {
e.printStackTrace();
outPrint("用户删除失败!");
}
}
/**
* 更新用户信息
*/
public void update(){
try {
usersService.saveOrUpdate(users);
outPrint("修改成功!");
} catch (Exception e) {
e.printStackTrace();
outPrint("修改失败!");
}
}
/**
* 跳转页面统一入口
*/
public void forWard() {
if (page != null && page != "")
super.forward("/WEB-INF/page/" + page);
// else
//super.forward("/WEB-INF/page/main.jsp");
}
public String getChecknum() {
return checknum;
}
public void setChecknum(String checknum) {
this.checknum = checknum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOldpassword() {
return oldpassword;
}
public void setOldpassword(String oldpassword) {
this.oldpassword = oldpassword;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
public String getIds() {
return ids;
}
public void setIds(String ids) {
this.ids = ids;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getRememberUP() {
return rememberUP;
}
public void setRememberUP(String rememberUP) {
this.rememberUP = rememberUP;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
补充由于自己添加了两个Action方法所以需要在相关xml文件里面增加代码: