`

JsP STRUTS1 转跳到登录前页面

阅读更多
网站开发中经常会遇到这样的问题,登录后自动转到了首页或者用户管理首页,这样有时候会让用户觉得很不方便,特别是电子商务类的网站,当用于在浏览产品页面时,需要购买,但是只有登录后的用户才能进入购买页面,所以如果当用户登录后进入的不是他登录前的产品浏览页面,他得去重新找,这是非常不友好的。
可以通过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直接跳转到jsp-无action的url”所指的是在Struts1框架下,如何不通过Action类直接将请求转发到JSP页面。这种做法虽然不推荐,但在某些情况下可能被用来简化流程或快速测试。 在Struts1中,通常的请求...

    struts2中AJAX实现

    7. **示例代码**:在提供的压缩包文件“struts2中实现AJAX的小实例”中,可能包含了一个简单的Struts2 Action、对应的JSP页面以及JavaScript代码。Action类可能有一个返回JSON数据的方法,JSP页面可能包含一个AJAX...

    struts1.2实现分页

    查询语句应包含相应的LIMIT和OFFSET子句,LIMIT用于指定每页的记录数,OFFSET则用于跳过前几条记录,实现分页。 3. **封装结果**:查询结果应封装到一个JavaBean中,这个Bean通常包含当前页数据、总记录数、总页数...

    Hibernate+struts1的增删查改 详细代码

    "查"操作通常涉及Service层的query()方法,它可能返回一个集合,Action类将其封装成ActionForward并返回给Struts1框架,框架根据ActionForward决定显示哪个JSP页面。"改"操作同样通过ActionForm收集修改后的数据,...

    Struts技术

    ### Struts技术详解 #### 一、Struts与传统MVC设计模式的联系 Struts框架作为MVC(Model-View-Controller)设计模式的一...无论是从配置到使用,还是从Struts1.x到Struts2.x的变化,都体现了其强大的功能性和灵活性。

    struts1标签.docstruts1标签.docstruts1标签.doc

    Struts1标签库大大简化了JSP页面的编写,提高了代码的可读性和可维护性。然而,随着技术的发展,Struts1已经逐渐被更新的框架如Spring MVC所取代,尽管如此,理解Struts1标签的工作原理对于理解MVC模式和Web应用开发...

    Struts2 分页实现

    分页是将大量数据分成若干小部分,每次只加载一部分到页面上,用户可以通过导航按钮来浏览其他页面。这降低了服务器压力,提高了页面加载速度,使得用户可以更流畅地浏览信息。 在Struts2中实现分页,主要涉及到...

    struts2CRUD

    例如,`success`结果类型可能会重定向到一个显示数据的JSP页面,`input`结果类型可能会回跳到输入表单页面。 8. **JSP页面** JSP页面用于渲染视图,展示数据。在CRUD操作中,会有不同的JSP页面用于显示列表、添加/...

    eclipse struts简单实例2

    在`struts-config.xml`中,我们要配置Action和ActionForm,指定`login.jsp`提交到哪个Action,以及Action成功后跳转到哪个页面。同时,配置`<global-forwards>`定义重定向规则。 现在,我们引入`validator`验证功能...

    Struts2uploadify3.1

    在Struts2中,处理文件上传通常涉及到`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器和`org.apache.struts2.components.File`标签。然而,由于Struts2自身的限制或版本兼容性问题,有时候直接使用...

    一个基于struts的重定向和转发实例

    - **配置文件**:Struts的配置文件(通常是`struts-config.xml`)定义了Action与请求URL的映射,以及Action如何与视图(JSP页面)交互。在描述的场景中,可能有配置条目指示在成功登录后执行重定向或转发操作。 - *...

    JSP交友网站 源代码

    【JSP交友网站源代码详解】 本篇将详细介绍基于JSP技术构建的交友网站源代码的相关知识点,旨在帮助读者理解其工作原理和技术架构。 一、JSP(JavaServer Pages)技术基础 JSP是Java平台上的动态网页技术,它允许...

    struts2验证框架简单实例

    4. 如果验证失败,框架会将错误信息添加到ActionContext中的`FieldErrors`对象,然后跳过业务逻辑,返回到之前的页面,并显示错误信息。 5. 如果验证成功,业务逻辑将被执行,然后根据配置进行后续操作,如跳转到新...

    struts2 xslt result 实现

    于是就研究使用Struts2的XSLT result方式来做页面显示。 网上相关的内容非常的少,我也研究了好久才玩转的。一开始总是有一些莫名其妙的问题出现,但最后基本上都是和配置相关的比较多。现在这个例子是整个工程项目...

    Struts 2使用注解配置Action

    在这个例子中,`execute()`方法被标记为处理名为"myAction"的请求,如果执行成功,将重定向到"success.jsp"页面。 2. `@Results`: 如果一个类中有多个Action方法,可以使用`@Results`注解来定义一组共用的结果。这...

    在struts2中要实现for循环

    下面将详细介绍如何在Struts2中实现For循环,并且会覆盖到Struts2的相关配置、使用场景以及具体实现方法。 ### Struts2简介 Struts2是基于MVC设计模式的一个开源Web应用框架,由Apache软件基金会维护。它提供了...

    Tomcat+Servlet+mysql简单的登录注册和转跳到主页

    【标题】"Tomcat+Servlet+mysql简单的登录注册和转跳到主页"是一个基础的Web应用项目,它结合了三个核心组件:Tomcat服务器、Servlet技术以及MySQL数据库,用于实现用户的基本登录和注册功能,并在验证成功后转跳至...

    struts做的一个简单的分页功能

    此外,考虑使用懒加载策略,只有当用户滚动到页面底部时才加载下一页数据,这称为无限滚动或惰性加载。 8. **错误处理和安全性**:在实现分页功能时,要考虑异常处理,如用户请求的页码超出范围。同时,确保传递的...

    学员投票系统(纯Struts)

    3. **控制器(Controller)**:Struts的核心是ActionServlet,它是一个扩展的Servlet,负责接收HTTP请求,调用相应的Action,然后转发到对应的JSP页面。 **二、Struts工作流程** 1. 用户发送HTTP请求到服务器。 2....

    struts2 +mysql 分页显示 源码

    最常用的是LIMIT和OFFSET关键字,LIMIT用于指定每页显示的数据量,OFFSET用于跳过前几条数据,达到定位到指定页的效果。例如,如果用户请求第n页,每页大小为m,那么SQL查询语句可能是这样的: ```sql SELECT * ...

Global site tag (gtag.js) - Google Analytics