package com.blog.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.websocket.server.PathParam;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.blog.model.User;
import com.blog.service.UserService;
import com.blog.util.Functions;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@Controller
public class UserController {
@Autowired
UserService userService;
/**
* 检测是否已经登录
* @param attributes
* @return
*/
@RequestMapping("/loginUser")
public String loginForm(RedirectAttributes attributes){
Subject subject = SecurityUtils.getSubject();
if(subject.isAuthenticated()==false){
return "login";
}
attributes.addFlashAttribute("msg", "登录成功");
return "redirect:/success";
}
/**
* 用户注册
* @param user
* @param model
* @return
*/
@RequestMapping("/regist")
public String addUser(User user,Model model){
System.out.println("用户注册调用"+user.getUsername()+user.getPassword());
List<User> userList = userService.selectUserByUsernameOfReg(user.getUsername());
if(userList.size()==0){
//设置Gravatar图片链接
String gravatarImg = Functions.getGravatar(user.getEmail());
//设置激活码code
String code = Functions.getCode()+Functions.getCode();
user.setGravatarImg(gravatarImg);
user.setCode(code);
user.setState(0);//默认为0,,激活为1
userService.addUser(user);
Functions.sendMail(user.getEmail(), code);
model.addAttribute("msg","注册成功,激活邮件已经发送到您的邮箱请及时激活!");
return "registSuccess";
}else{
model.addAttribute("msg","用户名存在,注册失败");
return "register";
}
}
/**
* 用户账号激活
* @param code
* @param model
* @return
*/
@RequestMapping("/activate")
public String activateUser(@RequestParam("code") String code,
Model model){
User user =userService.findByCode(code);
if(user!=null){
user.setState(1);
user.setCode(null);
if(userService.update(user)){
model.addAttribute("msg","账号激活成功!");
return "registSuccess";
}else{
model.addAttribute("msg","账号激活失败!");
return "registSuccess";
}
}else{
model.addAttribute("msg","账号激活码不存在!");
return "registSuccess";
}
}
/**
* 验证用户登录
* @param username
* @param password
* @param model
* @return
*/
@RequestMapping("/login")
public String login(@PathParam("username") String username,
@PathParam("password") String password,
Model model,
RedirectAttributes attributes){
System.out.println("用户登录时调用:"+username+"--"+password);
User user = userService.selectUserByUsername(username);
if(user.getState()==1){
Subject subject = SecurityUtils.getSubject();
if(subject.isAuthenticated()==false){
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
try {
subject.login(token);
System.out.println("登录成功");
Session session = subject.getSession();
// 输出session
System.out.println("sessionId:" + session.getId() + ";sessionHost:" + session.getHost());
attributes.addFlashAttribute("msg", "登录成功");
// attributes.addFlashAttribute("username",username);
return "redirect:/success";
} catch (AuthenticationException ae) {
// TODO: handle exception
ae.printStackTrace();
model.addAttribute("msg", "用户名或密码错误");
return "login";
}
}else{
return "/success";
}
}else{
model.addAttribute("msg", "账号未激活");
model.addAttribute("user",user);
return "login";
}
}
/**
* 获取所有用户列表
* @param request
* @param model
* @return
*/
@RequestMapping("/admin/getAllUser")
public String getAllUser(
@RequestParam(value="pn",defaultValue="1")Integer pn,
Model model){
PageHelper.startPage(pn, 5);
List<User> user = userService.findAll();
PageInfo pageUser = new PageInfo(user);
model.addAttribute("userList", pageUser);
return "/admin/allUser";
}
/**
* 编辑用户
* @param user
* @param request
* @param model
* @return
*/
@RequestMapping("/admin/updateUser")
public String updateUser(User user,
Model model,
RedirectAttributes attributes){
String gravatarImg = Functions.getGravatar(user.getEmail());
user.setGravatarImg(gravatarImg);
if(userService.update(user)){
// user = userService.findById(user.getId());
//request.setAttribute("user", user);
// model.addAttribute("user", user);
// model.addAttribute("msg", "修改成功");
attributes.addFlashAttribute("msg", "修改成功");
return "redirect:/admin/getAllUser";
}else {
model.addAttribute("msg", "修改出错");
return "error";
}
}
/**
* 根据用户名查询单个用户
* @param username
* @return
*/
@RequestMapping("getInfoUser")
public String getUserInfo(@RequestParam("name") String username,
HttpServletRequest request,Model model){
User user = userService.selectUserByUsername(username);
request.setAttribute("user", user);
model.addAttribute("user", user);
return "/admin/infoUser";
}
/**
* 根据id查询单个用户
* @param id
* @param request
* @param model
* @return
*/
@RequestMapping("/admin/getUser")
public String getUser(@RequestParam("id") int id,HttpServletRequest request,Model model){
User user = userService.findById(id);
request.setAttribute("user", user);
model.addAttribute("user", user);
return "/admin/editUser";
}
/**
* 根据id删除用户
* @param id
* @param model
* @return
*/
@RequestMapping("/admin/deleteUser")
public String deleteUser(int id,RedirectAttributes attributes){
if(userService.delete(id)){
// model.addAttribute("msg", "删除成功");
attributes.addFlashAttribute("msg", "删除成功");
return "redirect:/admin/getAllUser";
// return "/admin/allUser";
}else{
return "error";
}
}
@RequestMapping("/success")
public String success(Model model){
return "/admin/adminWelcome";
}
@RequestMapping("/unauthorized")
public String unauthorized(){
return "unauthorized";
}
@RequestMapping("/loginout")
public String loginout(){
Subject subject = SecurityUtils.getSubject();
if(subject.isAuthenticated()){
subject.logout();
System.out.println("登出成功");
}
return "redirect:login.jsp";
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
blog.rar_impossible5ts_java web_springmvc_博客 (531个子文件)
UserController.class 8KB
Functions.class 6KB
BlogController.class 5KB
LinkController.class 4KB
DiaryController.class 4KB
ShiroRealm.class 3KB
UserServiceImpl.class 2KB
FormController.class 2KB
TestMybatisGenerator.class 2KB
BlogServiceImpl.class 2KB
User.class 2KB
LinkServiceImpl.class 1KB
DiaryServiceImpl.class 1KB
Blog.class 1KB
UserMapper.class 1KB
Permission.class 1000B
Link.class 925B
Diary.class 913B
UserService.class 882B
Role.class 722B
Functions$1.class 657B
BlogService.class 502B
BlogMapper.class 496B
LinkService.class 390B
LinkMapper.class 384B
DiaryService.class 315B
DiaryMapper.class 309B
.classpath 6KB
org.eclipse.wst.common.component 456B
org.eclipse.wst.jsdt.ui.superType.container 49B
bootstrap.css 143KB
bootstrap.min.css 118KB
samples.css 66KB
editor_ie8.css 36KB
editor_iequirks.css 36KB
editor_ie.css 35KB
editor_gecko.css 34KB
editor.css 34KB
bootstrap-theme.css 26KB
bootstrap-theme.min.css 23KB
dialog_ie8.css 15KB
style.css 14KB
dialog_iequirks.css 14KB
dialog_ie.css 14KB
dialog.css 13KB
codemirror.css 8KB
sample.css 5KB
contents.css 3KB
outputxhtml.css 2KB
logo.css 2KB
fontello.css 2KB
dashboard.css 1KB
wsc.css 1KB
toolbar.css 1KB
wsc.css 1KB
tableselection.css 1KB
neo.css 851B
show-hint.css 700B
dialog.css 419B
scayt.css 381B
common.css 95B
glyphicons-halflings-regular.eot 20KB
fontello.eot 5KB
outputforflash.fla 84KB
spinner.gif 3KB
datafiltering.html 46KB
index.html 15KB
inlineall.html 10KB
outputforflash.html 10KB
toolbar.html 9KB
magicline.html 8KB
fullpage.html 8KB
jquery.html 7KB
dialog.html 7KB
outputhtml.html 7KB
api.html 7KB
xhtmlstyle.html 7KB
replacebyclass.html 7KB
replacebycode.html 7KB
index.html 7KB
inlinebycode.html 6KB
index.html 6KB
inlinetextarea.html 5KB
divreplace.html 5KB
uilanguages.html 4KB
enterkey.html 4KB
readonly.html 3KB
ajax.html 3KB
uicolor.html 3KB
tabindex.html 2KB
appendto.html 2KB
tmpFrameset.html 2KB
ciframe.html 2KB
aspectj-1.7.1.jar 13.17MB
druid-1.0.15.jar 1.86MB
aspectjweaver-1.7.1.jar 1.71MB
mybatis-3.3.0.jar 1.35MB
ehcache-core-2.6.5.jar 1.28MB
spring-context-4.2.4.RELEASE.jar 1.05MB
spring-core-4.2.4.RELEASE.jar 1.03MB
共 531 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
JonSco
- 粉丝: 66
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C#,煎饼排序问题(Pancake Sorting Problem)算法与源代码
- C#,排列组合的堆生成法(Heap’s Algorithm for generating permutations)算法与源代码
- C#,老鼠迷宫问题的回溯法求解(Rat in a Maze)算法与源代码
- 6693eeb8d683458a07938615fba9e68f.apk
- C#,数值计算,解微分方程的龙格-库塔二阶方法与源代码
- C#,数值计算,用割线法(Secant Method)求方程根的算法与源代码
- C#,子集和问题(Subset Sum Problem)的算法与源代码
- mongodb 数据库基本操作
- Linux操作系统基础教程
- Linux操作系统相关习题集
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功