网站开发中经常会遇到这样的问题,登录后自动转到了首页或者用户管理首页,这样有时候会让用户觉得很不方便,特别是电子商务类的网站,当用于在浏览产品页面时,需要购买,但是只有登录后的用户才能进入购买页面,所以如果当用户登录后进入的不是他登录前的产品浏览页面,他得去重新找,这是非常不友好的。
可以通过request.getHeader("referer");方式来实现登录/注册后返回进入登录或注册页面前的页面
举例:
java 代码
-
-
-
-
-
-
-
-
-
public
ActionForward loginview(ActionMapping mapping, ActionForm form,
-
HttpServletRequest request, HttpServletResponse response) {
-
-
-
String pagefrom = request.getHeader(
"referer"
);
-
if
(pagefrom.indexOf(
"method=login"
)>
0
|| pagefrom.indexOf(
"method=logout"
)>
0
)
-
{
-
pagefrom = pagefrom.substring(
0
,pagefrom.lastIndexOf(
"/"
)+
1
);
-
}
-
request.setAttribute(
"pagefrom"
, pagefrom);
-
-
saveToken(request);
-
-
User object =
null
;
-
try
{
-
object = entityClass.newInstance();
-
}
catch
(InstantiationException e) {
-
log.error(e);
-
}
catch
(IllegalAccessException e) {
-
log.error(e);
-
}
-
initForm(form, request, object);
-
return
mapping.findForward(LOGINVIEW);
-
}
在登录页面中设置hidden元素:
登录页面部分代码
-
<
html:form
action
=
"/userm.do"
focus
=
"loginname"
styleClass
=
"u_login_form"
onsubmit
=
"return validateUserForm(this)"
>
-
<
input
type
=
"hidden"
name
=
"method"
value
=
"login"
/>
-
<
input
type
=
"hidden"
name
=
"pagefrom"
value
=
"${ pagefrom }"
/>
-
<
input
type
=
"hidden"
name
=
"name"
value
=
"name"
/>
-
<
input
type
=
"hidden"
name
=
"mail"
value
=
"yahaitt@163.com"
/>
-
<
div
class
=
"l"
>
<
img
src
=
"${css}/images/login_icon_01.gif"
/>
div
>
-
<
div
class
=
"l"
>
-
<
html:text
property
=
"loginname"
styleClass
=
"text"
/>
<
br
/>
-
<
html:password
property
=
"password"
styleClass
=
"text"
/>
<
br
/>
-
<
%@ include
file
=
"/commons/messages.jsp"
%
>
-
div
>
-
<
div
class
=
"l"
>
<
html:img
src
=
"${css}/images/login_icon_02.gif"
onclick
=
"if(validateUserForm(document.userForm)) document.userForm.submit();"
/>
div
>
-
<
div
class
=
"c"
>
div
>
-
html:form
>
-
<
html:javascript
formName
=
"userForm"
staticJavascript
=
"false"
dynamicJavascript
=
"true"
cdata
=
"false"
/>
-
<
script
type
=
"text/javascript"
src
=
"${ctx}/scripts/validator.jsp"
>
script
>
根据登录页面中的pagefrom元素的值,在登录成功后跳转到该值对应的页面
登录代码:
java 代码
-
-
-
-
-
-
-
-
-
-
public
ActionForward login(ActionMapping mapping, ActionForm form,
-
HttpServletRequest request, HttpServletResponse response) {
-
String pagefrom = request.getParameter(
"pagefrom"
);
-
request.setAttribute(
"pagefrom"
, pagefrom);
-
-
if
(isCancelled(request))
-
return
list(mapping, form, request, response);
-
if
(!isTokenValid(request)){
-
saveDirectlyError(request,
"重复提交"
);
-
return
mapping.findForward(LOGINVIEW);
-
}
-
-
-
-
ActionMessages errors = form.validate(mapping, request);
-
if
(!errors.isEmpty()) {
-
saveErrors(request, errors);
-
refrenceData(request);
-
return
mapping.findForward(LOGINVIEW);
-
}
-
-
-
-
User object = doNewEntity(form, request);
-
initEntity(form, request, object);
-
-
User user = userManagerCommon.checkPassword(object.getLoginname(), object.getPassword());
-
if
(
null
==user)
-
{
-
errors.add(
"password"
,
new
ActionMessage(
"user.missing"
,object.getPassword()));
-
saveErrors(request, errors);
-
return
mapping.findForward(LOGINVIEW);
-
}
-
-
SessionUser.saveSession(request,user);
-
-
-
try
{
-
response.sendRedirect(pagefrom);
-
return
null
;
-
}
catch
(IOException e) {
-
e.printStackTrace();
-
}
-
-
return
mapping.findForward(INDEX);
-
}
第48行的代码就实现了跳转。
分享到:
相关推荐
代码为ASP.NET C#,采用asp.net和jquery异步方式实现。 用户登录采用模态弹出窗口,异步方式验证登录信息,不刷新页面。 用户注册,能检查用户名和密码是否为空,当用户输入用户名时可采用异步方式从数据库提取...
### Spring MVC 控制网站登录用户失效后跳转登录页面 #### 概述 在Web应用开发中,确保用户的会话安全至关重要。对于基于Spring MVC框架的应用程序而言,一个常见的需求是当用户会话失效(例如:用户长时间未操作...
项目需求 访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面。解决思路1: 在跳转到登录页面之前要将当前访问页面的url保存到...
在SpringBoot中,我们可以自定义Filter实现预处理和后处理功能,例如检查用户是否已登录,未登录时重定向到登录页面。 4. **拦截器(Interceptor)**: Spring MVC提供了拦截器(Interceptor)机制,它同样可以...
使用flutter 实现基础的登录页手机号码获取验证码,60s倒计时,通过路由页面切换,页面结构 1.标题 2.手机号输入框 3.验证码输入框 4.获取验证码 5.60s倒计时 6.登录按钮 7.跳转到主页
然而,对于拥有页面访问权限控制的需求而言,如需要实现未登录用户访问特定页面时自动跳转至登录页面,就需要在Vue项目中集成一定的路由守卫逻辑。本篇文档将详细介绍在Vue项目中,如何利用vue-router实现未登录用户...
- 为了从WebView中获取登录后的参数(如授权码code),我们需要监听页面加载完成事件并在JavaScript中注入一个函数,该函数负责将参数通过调用Android原生方法传递出来。 - 在Java代码中,创建一个接口供...
在本文中,将详细探讨Laravel在用户登录、注册操作后,如何使用Auth认证中间件以及redirect()方法实现页面的回跳功能。 首先,Laravel的Auth认证中间件位于app/Http/Middleware/Authenticate.php文件中,这个中间件...
**WPF登录和跳转程序**是基于Windows Presentation Foundation(WPF)框架开发的一个应用程序,主要功能是实现用户登录验证并根据验证结果跳转至不同的界面。WPF是微软推出的一种用于构建桌面应用的UI框架,它提供了...
6. 当用户选择“记住我”并登录后,下次打开应用时,可以在onCreate()方法中读取SharedPreferences中的用户名和密码,如果存在,可直接跳过登录界面,直接进入主界面。 以上就是关于Android Studio中实现登录界面...
在Python中实现Web端的用户登录和注册功能是构建任何Web应用的基础。这里我们将深入探讨如何使用Python进行这些操作,特别关注代码片段中涉及的关键点。 首先,注册功能。在提供的代码中,可以看到使用了API来处理...
### JSP页面实现自动跳转 在JSP页面中实现自动跳转同样可以采用上述几种方式。以下是一个更完整的示例,展示了如何结合JavaScript和服务器端逻辑实现页面的自动跳转: ```jsp ;url=<%=url%>"> window.moveTo(0...
在实际操作中,开发者可能需要根据用户的类型(如管理员、普通用户、未注册用户)或特定的访问条件(如IP地址、设备类型)来定制登录页面。这通常涉及到在配置文件中定义拦截规则,编写中间件或过滤器代码,以及设计...
【标题】"Tomcat+Servlet+mysql简单的登录注册和转跳到主页"是一个基础的Web应用项目,它结合了三个核心组件:Tomcat服务器、Servlet技术以及MySQL数据库,用于实现用户的基本登录和注册功能,并在验证成功后转跳至...
这种方式更加灵活,可以直接控制HTTP响应,确保用户在Session过期后能够被正确地引导回登录页面,重新验证其身份。在实际应用中,还需要考虑其他因素,如Ajax请求的处理、防止无限重定向问题以及提供友好的提示信息...
但是这二维码还有一个需求就是,用户已经下载了这个app,当用户打开app进入到注册页面时,再次扫描这个二维码时,自动填写邀请码进行注册。那么该如何实现,细节就不说了,直接上代码。 使用js实现,其实代码非常...
// 用户已登录,可跳过登录页面或直接进入主界面 } else { // 用户未登录,展示登录界面 } ``` 在"StudyDemo9"这个项目中,你可能可以找到具体的代码实现和更多细节,例如如何处理登录按钮的点击事件,以及如何在...
Android 实现外部唤起应用跳转指定页面的方法是指通过 scheme 的方式来实现跳转,首先需要在 App 中注册一个全局的事件监听,然后在 Manifest 文件中配置具体的 `<intent-filter>`,使得外部可以唤醒 App。...
在Android Studio中,通常会使用XML布局文件来设计登录和注册页面。登录界面一般包含用户名输入框(EditText)、密码输入框(EditText,通常设置为私密类型,显示为星号或圆点)、登录按钮(Button)以及可能的记住...