`
suhuanzheng7784877
  • 浏览: 702377 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47704
社区版块
存档分类
最新评论

Struts2+Web常使用的功能经验笔记第1季--3

阅读更多

 

1.       Struts2的拦截器

它一般作为Session建权(建立权限)用,在拦截器中进行session的判断。

引用一段别人的代码

先看拦截器配置

<package name="xxx-default" extends="struts-default">

         <interceptors>

             <interceptor name="loginAuth"

                   class="XXX.LoginAuthInterceptor" />

             <interceptor-stack name="completeStackWithLoginAuth">

                   <interceptor-ref name="loginAuth" />

                   <interceptor-ref name="defaultStack" />

             </interceptor-stack>

         </interceptors>

         <default-interceptor-ref name="completeStackWithLoginAuth" />

         <global-results>

             <result name="login">/userLogin/error.jsp</result>

             <result name="expire">/modifyPW/modifyPW.jsp</result>

             <result name="forbid">/userLogin/forbid.jsp</result>

         </global-results>

</package>

之后编辑拦截器类

@SuppressWarnings("serial")

public class LoginAuthInterceptor extends AbstractInterceptor {

 

 

    @Override

    public String intercept(ActionInvocation actionInvocation) throws Exception {

        // 获得会话中的用户身份字段

        Map session = actionInvocation.getInvocationContext().getSession();

        String user = (String) session.get(ISysParam.SESSION_USER);

        if (null == user) {

            return Action.LOGIN;

        } else {

            StringBuffer invokeMtd = new StringBuffer(actionInvocation

                    .getProxy().getNamespace());

            invokeMtd.append("/"

                    + actionInvocation.getInvocationContext().getName());

            String role = (String) session.get(ISysParam.USER_ROLE);

           

            //测试代码  如果是用户名是admin 则不进行权限判断

//            if(user.equals(ISysParam.ROLETYPE_ADMIN)){

//                return actionInvocation.invoke();

//            }

           

            /*

             * 得到该所能操作的名称空间 if(可以访问当前的名称空间){ 跳出拦截器 else{ 转到没有权限的页面 } }

             */

//            if (role.contains(invokeMtd.toString())) {

//                return actionInvocation.invoke();

//            } else {

//                return "forbid";

//            }

 

            // if (!user.getUserName().equals(ISysParam.ROLETYPE_ADMIN)) {

            // // 对非ADMIN用户,检查模块访问权限

            // if (!chkPrivilege()) {

            // log.debug(user.getUserName() + ":" +ISysParam.OPER_CANCEL);

            // return FORBID;

            // }

            // }

            // return actionInvocation.invoke();

            // }

             return actionInvocation.invoke();

        }

 

    }

}

之后的流程配置如下

<package name="xxx" namespace="/xxx"

        extends="xxx-default">

        <action name="*" method="{1}" class="XXXAction">

            <result name="input">{1}.jsp</result>

            <result name="error">{1}.jsp</result>

            <result name="success">{1}.jsp</result>

        </action>

    </package>

<package name="xxx2" namespace="/xxx2"

        extends="xxx-default">

         <action name="*" method="{1}" class="XXX2Action">

             <result name="input">{1}.jsp</result>

             <result name="error">{1}.jsp</result>

             <result name="success">{1}.jsp</result>

         </action>

</package>

自己定义

<package name="myPkg" abstract="true" extends="struts-default"></package>

在这个包下面定义拦截器, 这个包下面定义拦截器栈的引用, 引用defaultStack和你自己定义的拦截器!然后你需要用这个拦截器的包都继承这个包就好了!

1.       Struts2的防刷新提交机制

Struts2中解决表单的重复提交感觉还算简单。

token: 在活动中检查合法令牌(token), 防止表单的重复提交;

tokenSession: 同上, 但是在接到非法令牌时将提交的数据保存在session;

首先在struts.xml中配置Action如下信息

<!-- 评论Action -->

<action name="commentsAction" class="action.CommentsAction">

 

         <result name="invalid.token" type="redirect">productAction!list.action

         </result>

         <interceptor-ref name="defaultStack">

                   <param name="workflow.excludeMethods">default</param>

         </interceptor-ref>

         <interceptor-ref name="token">

                   <param name="includeMethods">add,update</param>

         </interceptor-ref>

 

         <result name="listByProductsId">/admin/page/commentsList.jsp</result>

         <result name="add">/admin/page/commentsAdd.jsp</result>

         <result name="update">/admin/page/commentsUpdate.jsp</result>

</action>

在这个Action中引用了2个拦截器,一个是默认的注入拦截器defaultStack,另一个就是令牌拦截器token,之后还定义了一个重复提交后的返回地址invalid.token

之后在页面表单form中加入<s:token></s:token>就可以了。

 

分享到:
评论

相关推荐

    Struts2笔记+Hibernate3.6笔记+Spring3笔记

    SSH是Java开发中广泛使用的三大框架——Struts2、Hibernate和Spring的缩写。这三大框架结合使用,能够构建高效、灵活的企业级Web应用程序。现在,让我们深入探讨这些框架的知识点。 **Struts2笔记** Struts2是MVC...

    struts2综合笔记

    ### Struts2 综合知识点...综上所述,Struts2 是一个功能强大且灵活的 MVC 框架,适用于构建复杂的 Web 应用程序。通过深入理解其核心概念和技术细节,开发者能够充分利用 Struts2 的优势来提升开发效率和应用性能。

    Struts1及14. Struts2学习笔记

    Struts是Apache软件基金会 Jakarta项目下的一个开源框架,主要用于构建基于Java EE的Web应用程序。它提供了MVC(Model-View-Controller)设计模式的实现,帮助开发者更好地组织和管理代码,提升开发效率。本学习笔记...

    Struts2笔记

    2. **`struts2-plugin.xml`**:如果使用了第三方插件,该文件中会包含这些插件的配置信息。 3. **`struts.xml`**:应用级别的配置文件,用于配置Action、拦截器栈等。 4. **`struts.properties`**:包含了一些框架级...

    struts2.1.8+spring2.5+hibernate3.2+ext3.0框架整合笔记(三)

    1. **Struts2**:Struts2是一个强大的基于MVC设计模式的Web应用框架,它提供了一种组织应用程序的方式,使得代码结构清晰,易于维护。它的核心是Action类,用于处理用户的请求,并通过Result返回相应的视图。Struts2...

    struts2框架学习笔记整理

    ### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...

    SSH项目(spring+hibernate+struts2)

    SSH项目是一种经典的Java Web开发框架组合,由Spring、Hibernate和Struts2三个开源框架组成。这个项目示例提供了一个基于这些技术的简单应用,帮助开发者理解如何将它们整合在一起进行实际开发。 **Spring框架**是...

    Struts2学习笔记2012

    ### Struts2学习笔记2012 #### 一、建立一个Struts2工程 **步骤详解:** 1. **创建Web项目:** - 在MyEclipse中选择“File” &gt; “New” &gt; “Dynamic Web Project”,创建一个新的Web项目。 2. **解压并配置...

    Struts2_Action学习笔记、通配符{1},{2}

    ### Struts2_Action 学习笔记与通配符配置详解 #### 一、Struts2简介及简单配置 Struts2是一个基于Java EE平台的开源Web应用框架,它继承了Struts1的优点,并在此基础上进行了大量的改进。Struts2的核心功能之一是...

    servlet和struts2笔记

    ### servlet和struts2笔记 #### 一、Servlet 基础 **Servlet** 是 Java Web 开发中的一种核心技术,它被设计用于处理客户端发送到服务器的 HTTP 请求,并且能够生成响应。Servlet 可以看作是服务器端的小程序,...

    黑马程序员_struts2框架2016版视频_struts2_day01笔记

    - **Struts2**:融合了Struts1的易用性和WebWork的强大功能,提供了一种更高效的Web应用程序开发方式。 #### 1.3 Struts2的开发包结构 在使用Struts2框架时,开发者需要导入一系列的jar包。课程中使用的是**struts...

    struts2培训笔记

    #### 三、第一个Struts2案例:快速上手 1. **创建Struts2项目**: - **Jar文件**:添加必要的Struts2核心库和其他依赖库。 - **struts.xml**:配置文件,放在项目的src目录下。 - **web.xml**:配置Struts2的...

    struts2教程-学习笔记.zip

    它可能会讲解如何创建第一个Struts2应用,包括控制器的设置、视图的展示和模型数据的处理。此外,可能还会涉及Action结果、国际化、异常处理和文件上传下载等特性。 "struts2学习笔记.doc"可能是一位经验丰富的...

    Struts2_day01笔记

    学习Struts2第一天的笔记

    赵栋struts2 笔记

    Struts2是一个强大的Java web开发框架,...以上就是赵栋Struts2笔记中的核心知识点,这些内容对于理解和使用Struts2框架进行Java Web开发至关重要。学习和掌握这些知识,可以帮助开发者更有效地构建和管理Web应用程序。

    【张冰Struts2学习笔记】0102_第一个Struts2实例

    【张冰Struts2学习笔记】0102_第一个Struts2实例 在Java Web开发领域,Struts2框架是十分重要的MVC(模型-视图-控制器)架构之一,它极大地简化了Web应用程序的开发流程。这篇学习笔记将带你入门Struts2,通过创建...

    Struts2学习笔记

    2. **环境搭建**:(一)环境搭建.txt可能包含了安装和配置Struts2框架的基础步骤,这通常包括添加Struts2库到项目依赖、配置web.xml文件、创建第一个Struts2应用等。 3. **UploadServlet.java**:在Struts2中,...

    struts2学习笔记三(第3讲.Struts2的类型转换)

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括MVC设计模式的实现、类型转换、国际化、拦截器等。在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理...

    黑马程序员_struts2框架开发2016版讲义和笔记资料_day01_day02_day03_day04

    此外,还会介绍如何搭建Struts2的开发环境,包括引入必要的库文件,配置web.xml文件,以及创建第一个Hello World应用。 Day02的内容可能会深入到Struts2的配置文件,如struts.xml,它用于定义Action、结果类型和...

Global site tag (gtag.js) - Google Analytics