网站开发中经常会遇到这样的问题,登录后自动转到了首页或者用户管理首页,这样有时候会让用户觉得很不方便,特别是电子商务类的网站,当用于在浏览产品页面时,需要购买,但是只有登录后的用户才能进入购买页面,所以如果当用户登录后进入的不是他登录前的产品浏览页面,他得去重新找,这是非常不友好的。
可以通过request.getHeader("referer");方式来实现登录/注册后返回进入登录或注册页面前的页面
举例:
java 代码
/**
* 进入到登录页面
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
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元素:
登录页面部分代码
div>
div>
div>
div>
html:form>
script>
根据登录页面中的pagefrom元素的值,在登录成功后跳转到该值对应的页面
登录代码:
java 代码
/**
* 登录
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
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);
}
// resetToken(request);
// run validation rules on this form
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行的代码就实现了跳转。
分享到:
相关推荐
标题“struts1直接跳转到jsp-无action的url”所指的是在Struts1框架下,如何不通过Action类直接将请求转发到JSP页面。这种做法虽然不推荐,但在某些情况下可能被用来简化流程或快速测试。 在Struts1中,通常的请求...
7. **示例代码**:在提供的压缩包文件“struts2中实现AJAX的小实例”中,可能包含了一个简单的Struts2 Action、对应的JSP页面以及JavaScript代码。Action类可能有一个返回JSON数据的方法,JSP页面可能包含一个AJAX...
查询语句应包含相应的LIMIT和OFFSET子句,LIMIT用于指定每页的记录数,OFFSET则用于跳过前几条记录,实现分页。 3. **封装结果**:查询结果应封装到一个JavaBean中,这个Bean通常包含当前页数据、总记录数、总页数...
"查"操作通常涉及Service层的query()方法,它可能返回一个集合,Action类将其封装成ActionForward并返回给Struts1框架,框架根据ActionForward决定显示哪个JSP页面。"改"操作同样通过ActionForm收集修改后的数据,...
### Struts技术详解 #### 一、Struts与传统MVC设计模式的联系 Struts框架作为MVC(Model-View-Controller)设计模式的一...无论是从配置到使用,还是从Struts1.x到Struts2.x的变化,都体现了其强大的功能性和灵活性。
Struts1标签库大大简化了JSP页面的编写,提高了代码的可读性和可维护性。然而,随着技术的发展,Struts1已经逐渐被更新的框架如Spring MVC所取代,尽管如此,理解Struts1标签的工作原理对于理解MVC模式和Web应用开发...
分页是将大量数据分成若干小部分,每次只加载一部分到页面上,用户可以通过导航按钮来浏览其他页面。这降低了服务器压力,提高了页面加载速度,使得用户可以更流畅地浏览信息。 在Struts2中实现分页,主要涉及到...
例如,`success`结果类型可能会重定向到一个显示数据的JSP页面,`input`结果类型可能会回跳到输入表单页面。 8. **JSP页面** JSP页面用于渲染视图,展示数据。在CRUD操作中,会有不同的JSP页面用于显示列表、添加/...
在`struts-config.xml`中,我们要配置Action和ActionForm,指定`login.jsp`提交到哪个Action,以及Action成功后跳转到哪个页面。同时,配置`<global-forwards>`定义重定向规则。 现在,我们引入`validator`验证功能...
在Struts2中,处理文件上传通常涉及到`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器和`org.apache.struts2.components.File`标签。然而,由于Struts2自身的限制或版本兼容性问题,有时候直接使用...
- **配置文件**:Struts的配置文件(通常是`struts-config.xml`)定义了Action与请求URL的映射,以及Action如何与视图(JSP页面)交互。在描述的场景中,可能有配置条目指示在成功登录后执行重定向或转发操作。 - *...
【JSP交友网站源代码详解】 本篇将详细介绍基于JSP技术构建的交友网站源代码的相关知识点,旨在帮助读者理解其工作原理和技术架构。 一、JSP(JavaServer Pages)技术基础 JSP是Java平台上的动态网页技术,它允许...
4. 如果验证失败,框架会将错误信息添加到ActionContext中的`FieldErrors`对象,然后跳过业务逻辑,返回到之前的页面,并显示错误信息。 5. 如果验证成功,业务逻辑将被执行,然后根据配置进行后续操作,如跳转到新...
于是就研究使用Struts2的XSLT result方式来做页面显示。 网上相关的内容非常的少,我也研究了好久才玩转的。一开始总是有一些莫名其妙的问题出现,但最后基本上都是和配置相关的比较多。现在这个例子是整个工程项目...
在这个例子中,`execute()`方法被标记为处理名为"myAction"的请求,如果执行成功,将重定向到"success.jsp"页面。 2. `@Results`: 如果一个类中有多个Action方法,可以使用`@Results`注解来定义一组共用的结果。这...
下面将详细介绍如何在Struts2中实现For循环,并且会覆盖到Struts2的相关配置、使用场景以及具体实现方法。 ### Struts2简介 Struts2是基于MVC设计模式的一个开源Web应用框架,由Apache软件基金会维护。它提供了...
【标题】"Tomcat+Servlet+mysql简单的登录注册和转跳到主页"是一个基础的Web应用项目,它结合了三个核心组件:Tomcat服务器、Servlet技术以及MySQL数据库,用于实现用户的基本登录和注册功能,并在验证成功后转跳至...
此外,考虑使用懒加载策略,只有当用户滚动到页面底部时才加载下一页数据,这称为无限滚动或惰性加载。 8. **错误处理和安全性**:在实现分页功能时,要考虑异常处理,如用户请求的页码超出范围。同时,确保传递的...
3. **控制器(Controller)**:Struts的核心是ActionServlet,它是一个扩展的Servlet,负责接收HTTP请求,调用相应的Action,然后转发到对应的JSP页面。 **二、Struts工作流程** 1. 用户发送HTTP请求到服务器。 2....
最常用的是LIMIT和OFFSET关键字,LIMIT用于指定每页显示的数据量,OFFSET用于跳过前几条数据,达到定位到指定页的效果。例如,如果用户请求第n页,每页大小为m,那么SQL查询语句可能是这样的: ```sql SELECT * ...