package cn.community.user.web.servlet;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.community.base.baseServlet;
import cn.community.information.domain.Information;
import cn.community.information.service.InformationService;
import cn.community.news.domain.News;
import cn.community.news.service.NewsService;
import cn.community.tool.CommonUtils;
import cn.community.user.domain.User;
import cn.community.user.service.UserService;
import cn.community.user.service.exception.UserException;
public class UserServlet extends baseServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService = new UserService();
private NewsService newsService = new NewsService();
private InformationService informationService = new InformationService();
/**
* ajax用户名是否注册校验
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
public String ajaxValidateLoginname(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/*
* 1.获取用户名
*/
String loginname = req.getParameter("loginname");
/*
* 2.通过service得到校验结果
*/
boolean b = userService.ajaxValidateLoginname(loginname);
/*
* 3.返回客户端
*/
resp.getWriter().print(b);
return null;
}
/**
* ajax Email是否注册校验
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
public String ajaxValidateEmail(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/*
* 1.获取Email
*/
String email = req.getParameter("email");
/*
* 2.通过service得到校验结果
*/
boolean b = userService.ajaxValidateEmail(email);
/*
* 3.返回客户端
*/
resp.getWriter().print(b);
return null;
}
/**
* ajax 验证码是否注册校验
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
public String ajaxValidateVerifyCode(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/*
* 1.获取输入框中的验证码
*/
String verifyCode = req.getParameter("verifyCode");
/*
* 2.获取图片上真实的验证码
*/
String vcode = (String) req.getSession().getAttribute("vCode");
/*
* 3.进行忽略大小写比较,得到结果
*/
boolean b = verifyCode.equalsIgnoreCase(vcode);
/*
* 4.发送客户端
*/
resp.getWriter().print(b);
return null;
}
/**
* 注册功能
* @param req
* @param resp
* @return
*/
public String regist(HttpServletRequest req, HttpServletResponse resp){
System.out.println("11");
/*
* 1. 封装表单数据到User对象
*/
User formUser = CommonUtils.toBean(req.getParameterMap(), User.class);
/*
* 2. 校验之, 如果校验失败,保存错误信息,返回到regist.jsp显示
*/
Map<String,String> errors = validateRegist(formUser, req.getSession());
if(errors.size() > 0) {
req.setAttribute("form", formUser);
req.setAttribute("errors", errors);
return "f:/jsps/user/regist.jsp";
}
/*
* 3. 使用service完成业务
*/
userService.regist(formUser);
/*
* 4. 保存成功信息,转发到msg.jsp显示!
*/
req.setAttribute("code", "success");
req.setAttribute("msg", "注册功能,请马上到邮箱激活!");
return "f:/jsps/msg.jsp";
}
/*
* 注册检验
* 对表单的字段进行逐个校验,如果有错误,使用当前字段名称为key,错误信息为value,保存到map中
* 返回map
*/
private Map<String,String> validateRegist(User formUser, HttpSession session){
Map<String,String> errors = new HashMap<String,String>();
/*
* 1.校验登录名
*/
String loginname = formUser.getLoginname();
if(loginname == null || loginname.trim().isEmpty()){
errors.put("loginname", "用户名不能为空");
}else if(loginname.length() <2 || loginname.length()>20){
errors.put("loginname", "用户名长度必须在2~20之间");
}else if(!userService.ajaxValidateLoginname(loginname)){
errors.put("loginname", "用户名已被注册!!");
}
/*
* 2.校验登录
*/
String loginpass = formUser.getLoginpass();
if(loginpass == null || loginpass.trim().isEmpty()){
errors.put("loginpass", "密码不能为空");
}else if(loginpass.length() <3 || loginpass.length()>20){
errors.put("loginpass", "密码长度必须在3~20之间");
}
/*
* 3.确认密码校验
*/
String reloginpass = formUser.getReloginpass();
if(reloginpass == null || reloginpass.trim().isEmpty()){
errors.put("reloginpass", "确认密码不能为空");
}else if(!reloginpass.equals(loginpass)){
errors.put("reloginpass", "两次输入不一致");
}
/*
* 4.邮箱校验
*/
String email = formUser.getEmail();
if(email == null || email.trim().isEmpty()){
errors.put("email", "邮箱不能为空");
}else if(!email.matches("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\\.[a-zA-Z0-9_-]{2,3}){1,2})$")){
errors.put("email", "Email格式错误!");
}else if(!userService.ajaxValidateEmail(email)){
errors.put("email", "Email已被注册!");
}
/*
* 5.验证码校验
*/
String verifyCode = formUser.getVerifyCode();
String vcode = (String) session.getAttribute("vCode");
if(verifyCode == null || verifyCode.trim().isEmpty()){
errors.put("verifyCode", "验证码不能为空");
}else if(!verifyCode.equalsIgnoreCase(vcode)){
errors.put("verifyCode", "验证码错误!");
}
return errors;
}
/**
* 激活功能
* @param req
* @param resp
* @return
*/
public String activation(HttpServletRequest req, HttpServletResponse resp){
/*
* 1.获取参数激活码
* 2.用激活码调用service方法完成激活
* >service方法有可能抛出异常,拿异常信息保存到request,转发到msg.jsp
* 3.保存成功信息到request,转发到msg.jsp显示
*/
String code = req.getParameter("activationCode");
try {
userService.activation(code);
req.setAttribute("code", "success");//通知msg.jsp显示√
req.setAttribute("msg", "恭喜,激活成功,请马上登录");
} catch (UserException e) {
req.setAttribute("msg", e.getMessage());
req.setAttribute("code", "error");//通知msg.jsp显示×
}
return "f:/jsps/msg.jsp";
}
/**
* 登录功能
* @throws UnsupportedEncodingException
*/
public String login(HttpServletRequest req, HttpServletResponse resp) throws IOException {
/*
* 1.封装表单数据到User
* 2.校验表单数据
* 3.使用service查询,得到User
* 4.查看用户是否存在,如果不存在
* * 保存错误信息,用户名或密码错误
* * 保存用户数据,为了回显
* * 转发到login.jsp
* 5.如果存在,查看状态,如果状态为false:
* * 保存错误信息,您没有激活
* * 保存用户数据,为了回显
* * 保存新闻信息,显示在已登录界面
* * 保存公告信息,显示在已登录界面
* * 转发到login.jsp
* 6.登录成功
* * 保存当前查询出的user到session中
* * 保存当前用户的名称到cookie中,注意中文需要编码处理
*/
/*
* 1.封装表单数据到user
*/
User formUser = CommonUtils.toBean(req.getParameterMap(), User.class);
/*
* 2.校验
*/
Map<String,String> errors = validateLogin(formUser, req.getSession());
if(errors.size()>0){
req.setAttribute("msg", "用户名或密码错误!");
req.setAttribute("form", formUser);
return "f:/jsps/user/login1.js
盈梓的博客
- 粉丝: 9750
- 资源: 2473
最新资源
- MATLAB代码,LSTM(长短时记忆模型),粒子群优化LSTM(psolstm),量子粒子群优化LSTM(QPSOLSTM),可用于风电、光伏等负荷预测,时序预测,数据为单输入单输出,更数据简单,导
- 蒙特卡洛模拟电动汽车充电负荷特性 主要内容: 利用蒙特卡罗仿真生成大规模电动汽车无序充电功率曲线,分析大规模电动汽车接入对电网造成的影响 包括电动汽车日行驶里程概率分布,起始充电时间概率分布,耗电
- PMSM BLDC参数辨识工程源码,电阻电感和完全解耦FOC算法模块 无刷直流电机参数辨识代码 电阻电感磁链参数 含已经解耦的FOC算法模块 辨识精度和收敛速度好 很方便移植到你自己的工程里面 内含使
- 一个定时器控制8路舵机,一个定时器控制8路舵机,含舵机的其他速度控制代码 软件和教程资料
- FX5U Active Socket TCP通讯FB 功能块 有几个通道,就拖几个FB,FB里面全部用的相对地址,相互之间不受干扰 通道0~7 共8个 使用的是上电直接SM402自动连接,
- 四旋翼飞行器自适应或Pid姿态位置控制,可以对比输出,也可以选择其中一种算法输出,包含多个性能指标输出,可直接运行
- 储能PCS逆变器双向变流器设计方案资料,双向DCDC和三电平逆变PCS 30KW 成熟已量产 1.此系列为30KW储能PCS逆变器设计方案资料,双向DCDC和三电平逆变PCS; 2.仿真源码含有并网
- 模块化多电平变器MMC两种调制策略实现(交流3000V-直流5000V整流)仿真,单桥臂二十子模块,分别采用最近电平逼近NLM与载波移相调制CPS-PWM实现,仿真中使用环流抑制,NLM中采用快速排序
- MATLAB SIMULINK,MMC整流器仿真,双闭环控制,最近电平逼近调制,冒泡排序法,在2.5秒加入环流抑制,n=18,仅供学习参考,欢迎讨论,共同进步
- 光伏单相并网仿真 前级采用boost升压电路,采用变扰动观察法实现最大功率点追踪,追踪效果良好 后级采用双闭环控制,电压外环,pr电流内环,陷波器踢出二次功率脉动 单相锁相环采用基于广义二阶积分矢
- 汽车ABS防抱死系统,基于Carsim和Simulink的联合仿真模型 四轮均具有ABS系统,控制目标为四个制动缸压力 采用的是逻辑门限值方法 通过MATLAB状态机对abs系统增压,减压,保压
- 永磁同步直线电机 高阶非奇异快速终端滑模控制 控制效果如下图,提供参考文献和公式 注:控制参数非最优,仅供需要的同学参考
- RRT路径规划算法代码(MATLAB版本) 基于rrt算法的路径规划算法matlab代码,求解常见的路径规划问题 内含算法的注释,模块化编程,新手小白可快速入门 rrt算法,路径规划算法
- 研究背景:高斯光束整形为贝塞尔光束后,可以实现激光功率密度的进一步集中,从2mm的高斯光斑转变为10um左右的贝塞尔光斑,贝塞尔光束因高功率密度的特性,可以用于切割,由于超快激光特性,热影响区小,切割
- 级联H桥型statcom的Matlab仿真,可实现对三相电网的无功补偿(感性和容性),以及直流测电容电压平衡控制 所针对的电网系统为10kV,50Hz,主电路为级联h桥逆变器(CHB),在仿真中CH
- 编码器foc工程源码 编码器为1000线ABZ编码器 源码中含有foc初始电角度差的获取方法 模块化编程 非常适合工业量产和移植
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈