点击页面先登录,登录后继续之前页面
来源:互联网 发布:netdvr客户端软件 编辑:程序博客网 时间:2024/04/30 11:53
登录诸如当当网之类的购物网站,未登录前可以先将产品放入购物车,当点击结账的时候会先跳出登录页面,登录后,继续跳至结账页面。一直想写一个类似的demo,终于昨天写了一个,记录下来。
先看代码吧,看完再讲代码。
代码块
后台
包含两个servlet,一个domain对象。
CheckLogin.java
package com.login;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * Servlet implementation class CheckLogin */@WebServlet("/res/viaLogin")public class CheckLogin extends HttpServlet {private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public CheckLogin() { super(); }/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();User user = (User)session.getAttribute("user");String url = request.getParameter("url");if (!"".equals(url)) {session.setAttribute("url", url);}if (null != user){request.getRequestDispatcher("myOrder.jsp").forward(request, response);} else {request.getRequestDispatcher("login.jsp").forward(request, response);}}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
LoginServlet.java
package com.login;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * Servlet implementation class LoginServlet */@WebServlet("/res/login")public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoginServlet() { super(); }/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();User user = new User();session.setAttribute("user", user);String url = (String) session.getAttribute("url");if (null == url || "".equals(url)) {request.getRequestDispatcher("main.jsp").forward(request, response); } else {request.getRequestDispatcher(url).forward(request, response);}}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
User.java
package com.login;public class User {}
前台页面
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Register</title></head><body><center><form action="login"><table><caption>登陆</caption><tr><td>username</td><td><input name="username" /></td></tr><tr><td>password</td><td><input name="password" type="password"/></td></tr><tr><td colspan="2" align="center"><input type="submit" value="Submit" /></td></tr></table></form></center></body></html>
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Main</title></head><body><center> This is main jsp <br><br><a href="#" onclick="myOrder(this)">我的订单</a><br><br><a href="login.jsp">登陆</a></center><script type="text/javascript">function myOrder(obj) { var url = "myOrder.jsp"; window.location.href = "viaLogin?url=" + url;}</script></body></html>
myOrder.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>MyOrder</title></head><body><center><h1>我的订单,登陆后可见</h1></center></body></html>
页面效果
主页面
登录页面
我的订单页面
代码讲解
首页面包含内容
<center> This is main jsp <br><br><a href="#" onclick="myOrder(this)">我的订单</a><br><br><a href="login.jsp">登陆</a></center><script type="text/javascript">function myOrder(obj) { var url = "myOrder.jsp"; window.location.href = "viaLogin?url=" + url;}</script>
其中点击我的订单时,请求登录验证,同时将我的订单页面的URL传递至后台。
登录验证servlet CheckLogin.java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();User user = (User)session.getAttribute("user");String url = request.getParameter("url");if (!"".equals(url)) {session.setAttribute("url", url);}if (null != user){request.getRequestDispatcher("myOrder.jsp").forward(request, response);} else {request.getRequestDispatcher("login.jsp").forward(request, response);}}
先获取session,然后在session中获取该user对象。
同时,将URL后面的参数项url,即本应该跳转到的页面保存在session中。
若user对象不为空,则直接跳转至我的订单myOrder.jsp页面;如果user为空,则跳转至登录页面login.jsp页面。
登录servlet LoginServlet.java
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();User user = new User();session.setAttribute("user", user);String url = (String) session.getAttribute("url");if (null == url || "".equals(url)) {request.getRequestDispatcher("main.jsp").forward(request, response); } else {request.getRequestDispatcher(url).forward(request, response);}}
登录处理,new一个user出来,这里只是做示例,没有给user定义属性信息等,将user保存在session中,同时从session中获取到之前存放的url。
判断 url是否为null 或 空字符串:
如果是null或空字符串,则说明上一步的操作就是登录操作,这时候跳转至主页面main.jsp;
如果url不为null,则说明上一步应该是在访问某个页面,但是因为没有登录,被拦截到了登录页面,此时登录后,就应该继续之前的请求。
以上例子疏于整理,校验,如有不详尽之处,烦请提出,后面必改正,谢谢。
0 0
- 点击页面先登录,登录后继续之前页面
- 登录后跳转之前页面
- 登录后跳转至之前访问页面
- jsp登录后跳转之前页面
- Android登录成功后继续执行之前点击事件
- web开发,登录后跳转到之前页面
- 返回登录页面后如何显示之前填写的…
- magento登录之后返回登录之前页面
- session失效之后重新登录,点击失效之前的菜单依旧返回登录页面
- session失效之后重新登录,点击失效之前的菜单依旧返回登录页面
- 让Drupal在登录后自动跳转到登录之前的页面
- 当session失效后,无论点击那个页面,都找到顶端页面,跳到登录页面
- 登录后返回登录前的页面
- 登录后跳转到登录前页面
- 登录页面,登录后跳转不成功
- web 开发,个人中心每个请求,判断用户是否登录,若没有登录,则跳转到登录页面,登录成功后返回之前页面
- EXT,登录后点击backspace键会退回到登录页面,解决方法
- 带着实例继续学习(1):组件式登录页面-点击事件、组件通讯
- 使用ListView实现界面的布局
- delayacct-utils
- No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案
- jsp分页
- cocos2d-x 3.3 之卡牌设计 NO.2 卡牌翻转
- 点击页面先登录,登录后继续之前页面
- 学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC是如何运行的(三)
- mapreduce 默认排序算法
- Activity 的生命周期 状态
- Java实现定时任务的三种方法
- apache - 资料
- C/C++__string与字符串的转换问题
- Android Studio(AS)-->导入项目
- Java泛型