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
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
管理系统系列--JavaMVC实践项目--小区物业管理系统 .zip (727个子文件)
btn.bmp 7KB
新建位图图像.bmp 0B
UserServlet.class 8KB
UserService.class 5KB
MailUtils.class 4KB
VerifyCode.class 4KB
UserDao.class 3KB
Mail.class 3KB
TxQueryRunner.class 3KB
baseServlet.class 3KB
User.class 3KB
Information.class 3KB
News.class 2KB
JdbcUtils.class 2KB
InformationDao.class 2KB
InformationServlet.class 2KB
loginFilter.class 2KB
NewsDao.class 2KB
NewsServlet.class 2KB
CommonUtils.class 2KB
VerifyCodeServlet.class 1KB
InformationService.class 1KB
NewsService.class 1KB
AttachBean.class 1KB
MailUtils$1.class 824B
UserException.class 771B
.classpath 2KB
org.eclipse.wst.common.component 456B
org.eclipse.wst.jsdt.ui.superType.container 49B
app.min.1.css 247KB
bootstrap.css 143KB
bootstrap.min.css 118KB
bootstrap.min.css 111KB
animate.css 69KB
style.css 68KB
style.css 68KB
app.min.2.css 40KB
font-awesome.css 37KB
font-awesome.css 34KB
jquery-ui-1.8.14.custom.css 33KB
jquery-ui-1.8.14.custom.css 33KB
font-awesome.min.css 30KB
font-awesome.min.css 28KB
bootstrap-social.css 20KB
responsive.css 18KB
jquery.ui.theme.css 18KB
jquery.ui.theme.css 17KB
demos.css 14KB
sb-admin-2.css 8KB
dataTables.bootstrap.css 7KB
jscal2.css 7KB
sb-admin-2.min.css 7KB
jquery.ui.datepicker.css 4KB
jquery.ui.datepicker.css 4KB
blue.css 4KB
jquery.datepick.css 4KB
dataTables.responsive.css 3KB
lhgdialog.css 3KB
lhgdialog.css 3KB
lhgdialog.css 3KB
lhgdialog.css 3KB
regist.css 3KB
jquery.ui.button.css 2KB
jquery.ui.button.css 2KB
style.css 2KB
main.css 2KB
style_left.css 2KB
lhgeditor.css 1KB
jquery.ui.core.css 1KB
jquery.ui.core.css 1KB
jquery.ui.tabs.css 1KB
jquery.ui.tabs.css 1KB
jquery.ui.dialog.css 1KB
jquery.ui.dialog.css 1KB
lk.css 1KB
gdt-style.css 1KB
logincss.css 1KB
login.css 1KB
jquery.ui.resizable.css 1KB
jquery.ui.resizable.css 1KB
jquery.ui.slider.css 1KB
jquery.ui.slider.css 1KB
oa.css 1KB
jquery.ui.autocomplete.css 1KB
jquery.ui.autocomplete.css 1KB
jquery.ui.accordion.css 1KB
jquery.ui.accordion.css 1KB
metisMenu.css 1KB
login.css 997B
indexcss.css 919B
metisMenu.min.css 781B
msg.css 657B
morris.css 433B
jquery.ui.base.css 427B
jquery.ui.base.css 427B
jquery.ui.progressbar.css 357B
jquery.ui.progressbar.css 357B
jquery.ui.selectable.css 323B
jquery.ui.selectable.css 323B
jquery.ui.all.css 291B
共 727 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
Kwan的解忧杂货铺@新空间代码工作室
- 粉丝: 4w+
- 资源: 3728
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python编程语言入门到精通基础知识点解析
- Python基础与高级特性全面指南
- Python 编程基础知识与核心概念详解
- 企业资产管理系统(代码+数据库+LW)
- 基于SpringBoot的“旅游管理系统”的设计与实现(源码+数据库+文档+PPT).zip
- 基于连续隐空间的大型语言模型推理能力增强研究
- 【图像分割数据集】-墙面道路裂缝分割数据集1949张json格式.zip
- 【图像分割数据集】-芒果缺陷分割检测数据集3154张json格式.zip
- 数据集-行李箱缺陷检测数据集650张2类YOLO+VOC格式.zip
- STIV: Scalable Text and Image Conditioned Video Generation Framework
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功