Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 362|回复: 0

[jsp学习]JSP网站登录记忆跳转实现的一种方法

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 17:23:00 | 显示全部楼层 |阅读模式
    记忆登录跳转可以大大方便用户,使用getHeader("Referer");方式简单,不过不能处理post的参数,本来这些代码都是用在struts,webwork里的,为了容易看明白改写成jsp方式的。

    <!--此页面的内容受保护,必须登录才能访问-->
    <%@ page contentType="text/HTML; charset=GBK" %>
    <jsp:useBean id="rect" class="com.util.myRedirect" scope="page"/>
    <%
    String url = "";
    if(session.getAttribute("userid")==null)//如果用户没有登录
    {
        url =rect.dealurl(request);
    //记忆进入此页面的地址和请求参数,dealurl将实际url进行处理,因为有&字符
        response.sendRedirect("weblogin.jsp?url="+url) ;
    //重定向到登录页面,记忆的url作为参数一起传入

    }else{
         out.println("你已经登录,可以下载了");
    } %>
      
      weblogin.jsp
    <%@ page contentType="text/html; charset=GBK" %>
    <jsp:useBean id="myRedirect" class="com.util.myRedirect" scope="page"/> <%
    String url = request.getParameter("url");
    String userid =request.getParameter("userid");
    String password =request.getParameter("password");
    if(userid!=null) //如果是登录提交执行下面代码
    {

      if(登录成功)
       {
        session.setAttribute("userid",userid);
        out.println("<script>alert("登录成功,谢谢光临");self.location.href=""+myRedirect.geturl(url)+"";</script>");
    //转向到首次请求的url,.geturl(url)是把转化过的地址转化回来变成真实url.
       }else{
        out.println("<script>alert("用户名或密码错误");history.back();</script>");
       }
    }else{//如果不是登录提交显示现面登录界面
    %>
    <table width="311" height="162" border="0" align="center" cellpadding="0" cellspacing="0">
       <tr>
          
         <td width="311" height="162" align="center"> 您还没有登录,请先登录<br>
             <table width="155" border="0" cellpadding="0" cellspacing="5" class="font12">
       <form  name="loginfrm" action="weblogin.jsp" method="post"  id="loginfrm" onSubmit="return checkfrm();">
               <tr>
                 <td width="41" height="33" valign="bottom">帐 号:</td>
                 <td width="99" valign="bottom"><input name="userid" type="text" class="textstyle" id="userid" size="12" style="height:20"></td>
               </tr>
               <tr>
                 <td>密 码:</td>
                 <td><input name="password" type="password" class="textstyle" id="password" size="12" style="height:20;width:94"></td>
               </tr>
               <tr align="center" valign="bottom">
                 <td height="21" colspan="2"> <input type="submit" name="Submit" value="登录">
                     <a href="reg.jsp" target="_blank">没有注册</a>  </td>
               </tr>
               <tr align="center">
                 <td colspan="2" class="font14"> <strong>
    <a href="#" onclick="MM_openBrWindow("requestpwd.jsp","pwd","width=300,height=200");return false;">找回密码</a></strong></td>
               </tr>
         <input name="url" type="hidden" value="<%=url%>"><!--这里要有个hidden来保存一下,不然提交就没了 -->
         
         </form>
             </table>     
         </td>
       </tr>
    </table>
    <%
    }
    %>

    ---------------------------------------------------------------
      myRedirect.java

    package com.util; import javax.Servlet.http.HttpServletRequest;
    import java.util.Enumeration; public class myRedirect    //对url的转换类
    {
      public static String dealurl(HttpServletRequest request)
      {
       String url = "";
       url = request.getRequestURL()+"?";
       url +=param(request);
       if(url.indexOf("&")>-1)
        url=url.replaceAll("&","@#@");//实际上就是把有&的字符转化成了@#@
       return url;
      }
      public static String geturl(String url)//这个是还原方法
      {
       if(url.indexOf("@#@")>-1)
        url=url.replaceAll("@#@","&");
       return url;     
      }
      public static String param(HttpServletRequest request)
      {
       String url = "";
       Enumeration param = request.getParameterNames();//得到所有参数名
       while(param.hasMoreElements())
       {
        String pname = param.nextElement().toString();
        url += pname+"="+request.getParameter(pname)+"&";
       }
       if(url.endsWith("&"))
       {
        url = url.substring(0,url.lastIndexOf("&"));
       }
       return url;
      }
    }  这样登录浏览器就会自动转到用户刚刚请求的地址

      
      
       
       

         
       

         
       
      



    源码下载:http://file.javaxxz.com/2014/10/1/172259969.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-3 14:01 , Processed in 0.392548 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表