D14 Sping Boot 入门 Sping框架--Java Web之书城项目(五)
时间:2020-04-11
本文章向大家介绍D14 Sping Boot 入门 Sping框架--Java Web之书城项目(五),主要包括D14 Sping Boot 入门 Sping框架--Java Web之书城项目(五)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、登录--显示用户登录名
Ⅰ、在UserServlet.java里的登录方法里把用户信息保存到session域中
req.getSession().setAttribute("user",loginUser);//保存用户信息到Sesion域中,为了登陆后显示用户名
1 /** 2 * 处理登录功能 3 */ 4 protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ 5 6 7 //1、获取请求的参数 8 String username = req.getParameter("username"); 9 String password = req.getParameter("password"); 10 11 // 2、调用XXXService.xxx()处理业务/userService.log()登录 12 //判断用户名是否存在 13 if(userService.existUsername(username)){ 14 // userService.login(new User(null,username,password,null)); 15 User loginUser = userService.login(new User(null,username,password,null)); 16 //3、根据login()方法返回结果判断登录是否成功 17 if(loginUser != null) { 18 19 //Ⅰ、成功 20 System.out.println("login success"); 21 22 //保存用户信息到Sesion域中,为了登陆后显示用户名 23 req.getSession().setAttribute("user",loginUser); 24 25 //跳到登录成功页面 26 req.getRequestDispatcher("/pages/user/login_success.jsp").forward(req,resp); 27 }else { 28 // 29 // Ⅱ、失败 30 System.out.println("login failed"); 31 //把错误信息和回显信息保存到Resquest域中 32 req.setAttribute("loginError","用户名或密码错误"); 33 req.setAttribute("username",username); 34 // 35 // 跳回登录页面 36 req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp); 37 } 38 }else{ 39 System.out.println("用户名["+username+"]不存在,请先注册"); 40 req.setAttribute("loginError","用户名不存在"); 41 req.setAttribute("username",username); 42 // 跳回登录页面 43 req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp); 44 } 45 46 }
Ⅱ、前端用EL表达式获取用户信息
"${sessionScope.user.username}"
1 <%--如果用户没有登陆,显示登录和注册--%> 2 <c:if test="${empty sessionScope.user}"> 3 <a href="pages/user/login.jsp">登录</a> | 4 <a href="pages/user/regist.jsp">注册</a> 5 </c:if> 6 7 <%--如果用户已经登陆,则显示登录成功之后的用户信息--%> 8 <c:if test="${not empty sessionScope.user}"> 9 <span>欢迎<span class="um_span">${sessionScope.user.username}</span>光临书城</span> 10 <a href="pages/order/order.jsp">我的订单</a> 11 <a href="index.jsp">注销</a> 12 </c:if>
2、登出--用户注销
1、销毁Session中用户的登录信息(或者销毁Session)
2、重定向到首页或者登陆页面。
Ⅰ、在UserServlet.java中添加用户注销方法logout();。
1 /** 2 * 处理注销功能 3 */ 4 protected void logout(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ 5 6 //1、销毁Session中用户的登录信息(或者销毁Session) 7 req.getSession().invalidate(); 8 //2、重定向到首页或者登陆页面。 9 resp.sendRedirect(req.getContextPath()); //到首页 10 11 12 }
Ⅱ、前端用 <a href="userServlet?action=logout">注销</a> 访问注销
3、表达重复提交之---验证码
表单重复提交有三种常见的情况:
一:提交完表单。服务器使用请求转来进行页面跳转。这个时候,用户按下功能键 F5,就会发起最后一次的请求。
造成表单重复提交问题。解决方法:使用重定向来进行跳转
二:用户正常提交服务器,但是由于网络延迟等原因,迟迟未收到服务器的响应,这个时候,用户以为提交失败,
就会着急,然后多点了几次提交操作,也会造成表单重复提交。
三:用户正常提交服务器。服务器也没有延迟,但是提交完成后,用户回退浏览器。重新提交。也会造成表单重复提交。
原文地址:https://www.cnblogs.com/nuister/p/12679887.html
- 如何使用HackRF做一个简单的IMSI捕获器
- 联想Z470黑化之路:硬件升级还能刷苹果Mac系统!
- 渗透测试TIPS之删除、伪造Linux系统登录日志
- 1分钟懂awk-技不在深,够用就行
- RChain节点通信机制
- Spark源码系列(一)spark-submit提交作业过程
- Android安全几道入门题目
- 挖洞经验 | 看我如何通过子域名接管绕过Uber单点登录认证机制
- Spark源码系列(二)RDD详解
- Spark源码系列(三)作业运行过程
- Spark源码系列(四)图解作业生命周期
- Spark源码系列(五)分布式缓存
- 看我如何基于Python;Facepp打造智能监控系统
- Spark源码系列(六)Shuffle的过程解析
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Kotlin结合Rxjava+Retrofit实现极简网络请求的方法
- 用Android Studio3.0新功能加快构建速度
- Android实现图片添加阴影效果的2种方法
- Android Webview与ScrollView的滚动兼容及留白处理的方法
- Android AOP框架AspectJ使用详解
- android仿Adapter实现自定义PagerAdapter方法示例
- android绘制几何图形的实例代码
- Android ListView控件使用方法
- Android开发之Android.mk模板的实例详解
- android实现文件下载功能
- Android实现可以展开的TextView
- 详解android 用webview加载网页(https和http)
- Android自定义网络连接工具类HttpUtil
- Android Studio时间选择器的创建方法
- Android 拦截返回键事件的实例详解