Session使用

用户注册

详见:

https://blog.csdn.net/maxiangyu_/article/details/124088948

BaseController

package com.cy.store.controller;

import com.cy.store.service.ex.*;
import com.cy.store.util.JsonResult;
import org.springframework.web.bind.annotation.ExceptionHandler; import javax.servlet.http.HttpSession;
import java.security.PublicKey; public class BaseController { //操作成功的状态码
public static final int OK = 200; /**
* 1.@ExceptionHandler表示该方法用于处理捕获抛出的异常
* 2.什么样的异常才会被这个方法处理呢?所以需要ServiceException.class,这样的话只要是抛出ServiceException异常就会被拦截到handleException方法,此时handleException方法就是请求处理方法,返回值就是需要传递给前端的数据
* 3.被ExceptionHandler修饰后如果项目发生异常,那么异常对象就会被自动传递给此方法的参数列表上,所以形参就需要写Throwable e用来接收异常对象
*/
@ExceptionHandler(ServiceException.class)
public JsonResult<Void> handleException(Throwable e) {
JsonResult<Void> result = new JsonResult<>(e);
if (e instanceof UsernameDuplicatedException) {
result.setState(4000);
result.setMessage("用户名已经被占用");
} else if (e instanceof InsertException) {
result.setState(5000);
result.setMessage("插入数据时产生未知的异常");
} else if (e instanceof UsernameNotFoundException) {
result.setState(4001);
result.setMessage("用户数据不存在的异常");
} else if (e instanceof PasswordNotMatchException) {
result.setState(4002);
result.setMessage("用户名密码错误的异常");
}
return result;
} /**
* 获取session对象中的uid
* @param session session对象
* @return 当前登录的用户uid的值
*/
public final Integer getUidFromSession(HttpSession session) {
//getAttribute返回的是Object对象,需要转换为字符串再转换为包装类
return Integer.valueOf(session.getAttribute("uid").toString());
} public final String getUsernameFromSession(HttpSession session) {
return session.getAttribute("username").toString();
}
}

UserController

package com.cy.store.controller;

import com.cy.store.entity.User;
import com.cy.store.service.IUserService;
import com.cy.store.service.ex.InsertException;
import com.cy.store.service.ex.UsernameDuplicatedException;
import com.cy.store.util.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpSession; @RestController //其作用等同于@Controller+@ResponseBody
//@Controller
@RequestMapping("users")
public class UserController extends BaseController { @Autowired
private IUserService userService; @RequestMapping("/reg")
//@ResponseBody //表示此方法的响应结果以json格式进行数据的响应给到前端
public JsonResult<Void> reg(User user) {
userService.reg(user);
return new JsonResult<>(OK);
}
/*public JsonResult<Void> reg(User user) {
//创建响应结果对象即JsonResult对象
JsonResult<Void> result = new JsonResult<>();
try {
//调用userService的reg方法时可能出现异常,所以需要捕获异常
userService.reg(user);
result.setState(200);
result.setMessage("用户注册成功");
} catch (UsernameDuplicatedException e) {
result.setState(4000);
result.setMessage("用户名被占用");
} catch (InsertException e) {
result.setState(5000);
result.setMessage("注册时产生未知的异常");
}
return result;
}*/
@RequestMapping("login")
public JsonResult<User> login(String username, String password, HttpSession session) {
User data = userService.login(username, password); //向session对象中完成数据的绑定(这个session是全局的,项目的任何位置都可以访问)
session.setAttribute("uid",data.getUid());
session.setAttribute("username",data.getUsername()); //测试能否正常获取session中存储的数据
System.out.println(getUidFromSession(session));
System.out.println(getUsernameFromSession(session)); return new JsonResult<User>(OK,data);
}
}

【JAVA基础】Session使用的更多相关文章

  1. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  2. Java基础常见英语词汇

    Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object ...

  3. JAVA基础英语单词表(下)

    quantity                     / 'kwɔntiti /                    量,数量 query                             ...

  4. JavaSE学习总结(一)——Java基础

    一.Java是什么 Java 是由 Sun Microsystems 在 1995 年首先发布的编程语言和计算平台.Java 是一项用于开发应用程序的技术,可以让 Web 变得更有意思和更实用.有许多 ...

  5. java基础常见面试题,这是一篇超长的随笔!!!

    1. Java基础部分....................................................... 4 1.一个".java"源文件中是否可以包括 ...

  6. 转载:[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    原文:http://www.cnblogs.com/wang-meng/p/5898837.html 一:继承.抽象类与接口区别.访问控制(private, public, protected,默认) ...

  7. Java基础面试题总结

    目录 索引 Java基础知识篇 Java web基础知识总结 Java集合篇常见问题 Java基础知识篇 面向对象和面向过程的区别 面向过程: 优点:性能比面向对象高,因为类调用时需要实例化,开销比较 ...

  8. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  9. Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例

    Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,详细你已经有一定的Java ...

  10. Java基础-SSM之Spring和Mybatis整合案例

    Java基础-SSM之Spring和Mybatis整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   在之前我分享过mybatis和Spring的配置案例,想必大家对它们的 ...

随机推荐

  1. 1. 手动移植FreeRTOS V9.00到 Stm32F103C8T6

    记录移植过程,以便以后查看: 附上FreeRTOS源码和  测试文件: 链接:https://pan.baidu.com/s/1v6nvDOk4-2NILYqN3njGjQ 提取码:1234 1.使用 ...

  2. Git如何回到拉取之前的代码

    1.执行git reflog命令查看你的历史变更记录: 2.git reset --hard 2aee3f(拉代码之前的提交记录) Git基础命令总结请参考:https://blog.csdn.net ...

  3. AutoCAD ObjectARX 二次开发(2020版)--2,手动创建CAD二次开发项目--

    本项目使用手动创建,意为不使用SDK模板. 从Visual Studio的"文件"下拉菜单中,选择"新建"->"项目...". 在出现 ...

  4. shell 脚本中的 '-f' 和 '-d' 分别代表什么意思

    shell脚本中,'-f' 和 '-d'是用于测试文件类型的条件表达式. 1.'-f'表达式: 表达式: '[ -f file ]' 描述: 判断给定路径是否是一个常规文件 (regular file ...

  5. SpringBoot测试用例的一些小技巧~

    场景一:不想因为测试而对数据库产生脏数据 @Test public void testInsert() { User user = new User(); user.setUsername(" ...

  6. 【UniApp】-uni-app-数据传递补充

    前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-CompositionAPI传递数据 那么了解完了uni-app-CompositionAPI传递数据之后,这篇文章来给大家介绍一下 ...

  7. ja-netfilte-ja-netfilte

    title: ja-netfilte date: 2022-10-16 16:13:50.339 updated: 2023-02-07 22:58:50.672 url: https://www.y ...

  8. Android移动、缩放和旋转手势实现

    Android的部分图片编辑应用中需要对图片进行移动.缩放和旋转,这些变化都依赖于触摸手势实现,而本文主要阐述移动.缩放和旋转手势的简单实现. 一.移动 首先需要从触摸事件(MotionEvent)中 ...

  9. Asp .Net Core系列:基于MySQL的DBHelper帮助类和SQL Server的DBHelper帮助类

    目录 MySQLDBHelper MSSQLDBHelper MySQLDBHelper app.config中添加配置 <connectionStrings> <add name= ...

  10. IPv6实现内网穿透,极低成本保姆级教程

    摘要 一直想实现内网穿透从而达到随时随地可以连接到自己电脑的目的.尝试过使用一些付费的现成方案,但是价格偏高,而流量少得可怜,只能开放几个固定端口. 实现内网穿透的最大难点就在于拥有一个公网IP,但是 ...