站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题JSP网站登录记忆跳转实现的一种方法

JSP网站登录记忆跳转实现的一种方法

摘要: JSP网站登录记忆跳转实现的一种方法

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="275" height="86" align="center" valign="top">
</td> <td width="409" valign="top">
记忆登录跳转可以大大方便用户,使用getHeader("Referer");方式简单,不过不能处理post的参数,本来这些代码都是用在struts,webwork里的,为了容易看明白改写成jsp方式的。

<%@ page contentType="text/html; charset=GBK" %>

<%
String url = "";
if(session.getAttribute("userid")==null)//如果用户没有登录
{
url =rect.dealurl(request);
//记忆进入此页面的地址和请求参数,dealurl将实际url进行处理,因为有&字符
response.sendRedirect("weblogin.jsp?url="+url) ;
//重定向到登录页面,记忆的url作为参数一起传入

}else{
out.println("你已经登录,可以下载了");
} %></td> </tr> </table>

weblogin.jsp
<%@ page contentType="text/html; charset=GBK" %>

<%
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"> 您还没有登录,请先登录

<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">帐&nbsp;号:</td>
<td width="99" valign="bottom"><input name="userid" type="text" class="textstyle" id="userid" size="12" style="height:20"></td>
</tr>
<tr>
<td>密&nbsp;码:</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="登录">
&nbsp; 没有注册&nbsp; </td>
</tr>
<tr align="center">
<td colspan="2" class="font14">
找回密码
</td>
</tr>
<input name="url" type="hidden" value="<%=url%>">
</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;
}
}

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

</td> </tr> <tr>


↑返回目录
前一篇: 使用JSP表达式语言定制缓存内容。
后一篇: Jsp自定义标记入门程序:制作登录界面