package com.bunfly.web.action;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.Cookie;
import org.apache.struts2.ServletActionContext;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import com.bunfly.domain.User;
import com.bunfly.service.UserService;
import com.bunfly.utils.CookieUtils;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.util.ValueStack;
/**
* 用户的控制器
*
* @author Sherry
*
*/
public class UserAction extends ActionSupport implements ModelDriven<User> {
// 模型驱动
private User user = new User();
public User getModel() {
return user;
}
// 注入UserService
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
/**
* 用户登录
*
* @return
*/
public String login() {
User existUser = userService.login(user);
// 判断,登录名或者密码错误
if (existUser == null) {
ServletActionContext.getRequest().setAttribute("msg", "用户名或密码错误。");
return LOGIN;
} else {
// 自动登录
if ("true".equals(ServletActionContext.getRequest().getParameter("autologin"))) {
Cookie c = new Cookie("autoLogin", user.getUser_name() + "-" + user.getUser_password());
c.setPath(ServletActionContext.getRequest().getContextPath() + "/");
c.setMaxAge(3600 * 3);
ServletActionContext.getResponse().addCookie(c);
}
// 请记住我
if ("true".equals(ServletActionContext.getRequest().getParameter("savename"))) {
Cookie c = new Cookie("saveName", user.getUser_name());
c.setPath(ServletActionContext.getRequest().getContextPath() + "/");
c.setMaxAge(3600 * 3);
ServletActionContext.getResponse().addCookie(c);
}
}
ServletActionContext.getRequest().getSession().setAttribute("existUser", existUser);
// 登录成功
return "loginOK";
}
/**
* ajax检查用户名是否存在
*
* @return
* @throws IOException
*/
public String checkUsername() throws IOException {
User existUser = userService.checkUsername(user);
if (existUser == null) {
ServletActionContext.getResponse().getWriter().println("1");
} else {
ServletActionContext.getResponse().getWriter().println("0");
}
return NONE;
}
/**
* ajax检查手机号是否存在
*
* @return
* @throws IOException
*/
public String checkPhone() throws IOException {
User existUser = userService.checkPhone(user);
if (existUser == null) {
ServletActionContext.getResponse().getWriter().println("1");
} else {
ServletActionContext.getResponse().getWriter().println("0");
}
return NONE;
}
/**
* 用户注册
*
* @return
*/
public String register() {
// 接受两个验证码
String rCode = ServletActionContext.getRequest().getParameter("checkcode");
String sCode = (String) ServletActionContext.getRequest().getSession().getAttribute("sessionCode");
// 移除session中的验证码
ServletActionContext.getRequest().getSession().removeAttribute("sessionCode");
// 判断验证码是否相同
if (!rCode.equalsIgnoreCase(sCode)) {
ServletActionContext.getRequest().setAttribute("msg", "验证码错误,请重新输入。");
return "register";
}
userService.register(user);
ServletActionContext.getRequest().getSession().setAttribute("existUser", user);
return "registerOK";
}
/**
* 找回密码
*
* @return
*/
public String findPassword() {
// 接受两个验证码
String rCode = ServletActionContext.getRequest().getParameter("checkcode");
String sCode = (String) ServletActionContext.getRequest().getSession().getAttribute("sessionCode");
// 移除session中的验证码
ServletActionContext.getRequest().getSession().removeAttribute("sessionCode");
// 判断验证码是否相同
if (!rCode.equalsIgnoreCase(sCode)) {
ServletActionContext.getRequest().setAttribute("msg", "验证码错误,请重新输入。");
return "findpassword";
}
User existUser = userService.findPassword(user);
if (existUser == null) {
ServletActionContext.getRequest().setAttribute("msg", "用户名或手机号错误。");
return "findpassword";
} else {
ServletActionContext.getRequest().setAttribute("msg", "你的密码为:" + existUser.getUser_password());
return "findpassword";
}
}
/**
* 重置密码
*
* @return
*/
public String updatePassword() {
// 接受两个验证码
String rCode = ServletActionContext.getRequest().getParameter("checkcode");
String sCode = (String) ServletActionContext.getRequest().getSession().getAttribute("sessionCode");
// 移除session中的验证码
ServletActionContext.getRequest().getSession().removeAttribute("sessionCode");
// 判断验证码是否相同
if (!rCode.equalsIgnoreCase(sCode)) {
ServletActionContext.getRequest().setAttribute("msg", "验证码错误,请重新输入。");
return "updatepassword";
}
User existUser = userService.login(user);
if (existUser == null) {
ServletActionContext.getRequest().setAttribute("msg", "旧密码输入错误。");
return "updatepassword";
} else {
String newpassword = ServletActionContext.getRequest().getParameter("newpassword");
existUser.setUser_password(newpassword);
userService.register(existUser);
ServletActionContext.getRequest().getSession().removeAttribute("existUser");
return "updatepasswordOK";
}
}
/**
* 用户退出
*
* @return
*/
public String exit() {
// 销毁session
ServletActionContext.getRequest().getSession().removeAttribute("existUser");
// 销毁自动登录cookie
Cookie c = CookieUtils.getCookieByName("autoLogin", ServletActionContext.getRequest().getCookies());
if (c != null) {
c.setPath(ServletActionContext.getRequest().getContextPath() + "/");
c.setMaxAge(0);
ServletActionContext.getResponse().addCookie(c);
}
return LOGIN;
}
/**
* 用户列表
*
* @return
*/
public String findAll() {
List<User> list = userService.findAll();
for (User user : list) {
user.setUser_password(user.getUser_password().substring(0,user.getUser_password().length()-4)+"****");
}
ValueStack vs = ActionContext.getContext().getValueStack();
vs.set("list", list);
return "userList";
}
/**
* 通过用户名模糊查询
*
* @return
*/
public String findByUsername() {
String input = ServletActionContext.getRequest().getParameter("input");
// 离线查询
DetachedCriteria criteria = DetachedCriteria.forClass(User.class);
// 添加查询的条件
if (input != null && !input.trim().isEmpty()) {
// 模糊查询
criteria.add(Restrictions.like("user_name", "%" + input + "%"));
}
List<User> list = userService.findByUsername(criteria);
ValueStack vs = ActionContext.getContext().getValueStack();
vs.set("list", list);
return "userList";
}
/**
*
* 删除选中的用户
*
* @return
*/
public String deleteUser() {
String[] ids = ServletActionContext.getRequest().getParameterValues("uid");
for (String user_id : ids) {
user = userService.findById(Integer.valueOf(user_id), user);
userService.deleteUser(user);
}
List<User> list = userService.findAll();
ValueStack vs = ActionContext.getContext().getValueStack();
vs.set("list", list);
vs.set("msg", "删除成功!");
return "userList";
}
}
SSH框架网站
需积分: 0 117 浏览量
更新于2018-02-19
收藏 27.6MB RAR 举报
SSH框架,全称为Struts2 + Spring + Hibernate,是Java Web开发中常用的一种技术栈,主要用于构建企业级的Web应用程序。这个"SSH框架网站"项目,根据描述,是一个专为初学者设计的游客管理系统,旨在帮助新手熟悉SSH框架的使用。
1. **Struts2**:Struts2是一个基于MVC设计模式的Action驱动的开源Web应用框架。它负责处理用户的请求,并通过Action类执行业务逻辑。在本项目中,Struts2可能是用来定义URL映射,处理HTTP请求,以及转发到不同的视图组件。开发者可能会定义一系列Action类来对应不同的用户操作,如登录、注册、查看游客信息等。
2. **Spring**:Spring是Java企业级应用的核心框架,提供了依赖注入(DI)和面向切面编程(AOP)功能,便于管理和集成应用程序的各个组件。在这个系统中,Spring可能被用来管理Bean,如数据库连接池、DAO(数据访问对象)、Service层对象等。同时,Spring的AOP特性可以用于实现事务管理,确保数据的一致性。
3. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库。在SSH框架网站中,Hibernate可能是用于建立Java对象与数据库表之间的映射,简化数据操作。例如,用户信息可能被映射为一个Java实体类,Hibernate可以帮助开发者方便地进行CRUD(创建、读取、更新、删除)操作。
4. **数据库管理**:`hurricane.sql`文件很可能包含了数据库的初始化脚本,用于创建游客管理系统的数据库结构,包括表的创建、字段定义、以及可能的初始数据填充。开发人员可能使用这个脚本来设置数据库环境,如游客表、权限表等。
5. **项目结构**:虽然没有提供完整的文件列表,但通常SSH项目会包含以下部分:配置文件(如struts.xml、spring-context.xml、hibernate.cfg.xml),Java源代码(Action类、DAO接口及实现、Service类等),以及视图资源(JSP页面或Freemarker模板)。`JFhurry`可能是项目中的一个组成部分,具体作用需要更多上下文才能确定,可能是Action类、Service类或者一个特定的功能模块。
6. **学习和实践**:作为初学者的练手项目,这个SSH框架网站将帮助学生理解如何整合这三个框架,处理请求、响应,以及通过ORM框架操作数据库。通过实际操作,他们可以深入理解MVC模式,了解控制层、模型层和视图层之间的交互,以及如何利用Spring进行依赖注入和事务管理。
SSH框架网站项目是一个全面的实战教程,涵盖了Java Web开发的多个重要方面,对于提升开发者对Java EE技术栈的掌握大有裨益。
qq_33999939
- 粉丝: 0
- 资源: 2
最新资源
- 基于Vue.js+express+echarts开发可视化大屏数据展示项目,大屏以深色背景为主。详细文档+全部资料+源码.zip
- 基于Springboot+通用Mapper+Redis 开发的旅游大数据可视化平台详细文档+全部资料+源码.zip
- 基于Vue + Echarts 构建的数据可视化平台,酷炫大屏展示模板和组件库,持续更新各行各业实用模板和炫酷小组件详细文档+全部资料+源码.zip
- 基于vue2.x构建的大屏数据可视化项目详细文档+全部资料+源码.zip
- 基于Vue3.0的“数据可视化大屏”设计与编辑器详细文档+全部资料+源码.zip
- 基于vue2+vuex+router+echarts的数据可视化大屏,使用缩放进行了屏幕的适配详细文档+全部资料+源码.zip
- 基于vue的大数据表格详细文档+全部资料+源码.zip
- 基于vue3.0的大数据分析系统,包含各种echarts和vue3.0新API详细文档+全部资料+源码.zip
- 基于vue3的数据可视化大屏基础组件详细文档+全部资料+源码.zip
- 基于WIFI探针的商业大数据分析技术详细文档+全部资料+源码.zip
- 上市公司数字经济专利申请数据(1999-2023年).zip
- Mysql配置文件优化内容 my.cnf
- 基于wifi抓取信息的大数据查询分析系统详细文档+全部资料+源码.zip
- 基于大模型LLMs的智能文本SQL生成能力,结合数据可视化,实现下一代对话式系统自动生成图表展示和dashboard、数据分析的BI系统。详细文档+全部资料+源码.zip
- 基于大航杯“智造扬中”电力AI大赛数据挖掘管道搭建示例详细文档+全部资料+源码.zip
- 基于标签的用户行为日志大数据分析系统详细文档+全部资料+源码.zip