首页 > 其他分享 >网站登录记忆跳转实现的一种方法 [摘]

网站登录记忆跳转实现的一种方法 [摘]

时间:2023-09-04 16:38:16浏览次数:27  
标签:String 登录 url request param 记忆 跳转 public

记忆登录跳转可以打打方便用户使用
getHeader("Referer");方式简单不过不能处理post的参数
本来都是用在struts,webwork里的,为了容易看明白改写成jsp方式的

-------------------------------------------------------------------------------------------------------------
member.jsp   //session限制访问页

<%
String url = ""
if(session.getAttribute("username")==null)
{
         url = myRedirect.dealurl(request);//记录当前地址和请求参数,dealurl将实际url处理了避免和要请求url有干扰,因为会有& 字符
         response.sendRedirect("weblogin.jsp?url="+url) ;//重定向到登录页面
}
%>


-------------------------------------------------------------------------------------------
weblogin.jsp

<%
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="#" οnclick="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;
 }
}


这样登录浏览器就会自动转到用户刚刚请求的地址

标签:String,登录,url,request,param,记忆,跳转,public
From: https://blog.51cto.com/u_16245757/7351999

相关文章

  • vue3 使用vue-router 进行网页跳转以及获取问号后面的参数
    关键代码:constrouter=useRouter()constauthor='myname'router.push({name:'Edit',query:{author}})constroute=useRoute()constvalue=route.query.key详细步骤:0.Initialgitclonehttps://github.com/element-plus/element-plus-v......
  • PC端项目和移动端项目之间,根据设备类型判断相互跳转
    移动端项目配置:在index.html里添加以下代码即可<script>letsUserAgent=navigator.userAgent.toLowerCase();letisIpad=sUserAgent.match(/ipad/i)=="ipad";letisIphoneOs=sUserAgent.match(/iphoneos/i)=="iphoneos";letisMid......
  • javaweb中servlet的使用案例,登录、注册
    2023-09-03注册packagecom.hh.web;/***@authorhh*@version1.0*@DATE2023-09-0314:56:28*/importcom.hh.mapper.UserMapper;importcom.hh.pojo.User;importcom.hh.util.SqlSessionFactoryUtil;importorg.apache.ibatis.io.Resources;importorg.a......
  • Day1 表结构/权限/路径导航/登录
    目录day13订单管理项目开发1.表结构设计1.1abstract类1.2自增和主键1.3逻辑删除1.4数据库连接1.5表结构参考2.用户认证相关2.1发送短信2.2缓存和Session2.3动态菜单2.4权限控制2.5local_settings.py2.6用户名登录2.7短信登录2.8动态菜单day13订单管理项目开发1.......
  • vue3中用户登陆会把用户跳转到登录页面,如何让用户登录完成后,跳回原来的页面上
    本地存储在Vue3中,你可以使用VueRouter和sessionStorage或localStorage来实现用户登录后跳回原来的页面。以下是一种常见的实现方式:在用户登录之前,记录当前页面的路由路径:在需要登录的页面组件中,在用户点击登录前,使用 this.$route.path 获取当前页面的路由路径,并将其存......
  • 时间序列预测 | Matlab 粒子群优化长短期记忆网络(PSO-LSTM)的时间序列预测
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • CentOS6.5安装mysql 远程登录
    第1步、yum安装mysql[[email protected]]#yum-yinstallmysql-server直到出现结果: 第2步、设置开机启动[[email protected]]#chkconfigmysqldon这步没提示第3步、启动mysql服务[[email protected]]#servicemysqldstartshell提示: 第4步、修改r......
  • 加拿大本科就读期间被开除学生账号无法登录怎么办?
    加拿大本科就读期间被开除学生账号无法登录怎么办?最近常看到的问题:我的主修课程挂科了,不能毕业怎么办?我的GPA太低了,被院校劝退怎么办?我的出勤率太低,被院校劝退了怎么办?我的论文被老师定为抄袭怎么办?要开学了但是学生账号无法登录,可能被退学了怎么办……其实现在已经是各大院校开学......
  • 单点登录的原理
    注:单点登录原理是一个重要知识点,也常被问及,很多童鞋照葫芦画瓢搭建过单点登录,但是被问到原理时可能说不出来,下面简单介绍,抛砖引玉,希望对大家有所帮助。单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小......
  • smartbi token回调获取登录凭证漏洞(二)
    2023年8月8日Smartbi官方又修复了一处权限绕过漏洞。该漏洞是上一个特定场景下设置Token回调地址漏洞的绕过,未经授权的攻击者可利用该漏洞,获取管理员token,完全接管管理员权限。于是研究了下相关补丁并进行分析。0x01分析过程阅读相关补丁,可知此次漏洞与/smartbix/api/monitor/set......