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

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+Web常使用的功能经验笔记第1季

    Apache的Struts2已经是很流行的MVC Web框架了,很多Web开发人员都是使用它做为Web...像Struts2的常用配置功能笔者就不在说了,在此结合作者的Web相关技术(Struts2、JSTL、EL……)使用经验做个总结,希望与您有个共鸣。

    Struts2_day01笔记

    学习Struts2第一天的笔记

    struts2学习笔记 很基础 容易懂

    struts2学习笔记 很基础 容易懂第一个struts2的web用户登录工程:创建一个web工程-&gt;创建login.jsp(创建advanced的JSP)-&gt;登录的form表单(注意:action=“login.action”)-&gt;编写完成后配置

    Struts2 技术内幕读书笔记(1)

    Struts2技术内幕读书笔记,包含第二章到第五章。WEB开发浅谈、Struts2概览、Struts2涉及的设计模式和XWork容器,从更高的角度、更深的层次理解Struts2。知其然,知其所以然。

    自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar

    自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar 笔记地址:http://www.guloulou.com/?p=1252

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)-共448页.docx

    java内容介绍 java编程可以分成三个方向: 1、java se (j2se)桌面开发 java中的基础中的基础 2、java ee (j2ee)web开发 3、java me (j2me)手机开发 ...1995 sun正式发布java第一个版本,目前最新是jdk7.0

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    Java/JavaEE 学习笔记

    第一章 Java5.0新特性.......................94 第二章 基础知识.....96 第三章 泛型...........101 第四章 Annotation.102 XML学习笔记...............106 XML前言...............106 第一章 XML Overview..........

    J2EE学习笔记(J2ee初学者必备手册)

    第一章 JAVA前言..31 第二章 标识符,关键字,类型........35 第三章 表达式与流控制....................41 第四章 数组.............50 第五章 对象和类(OO思想).........53 第六章 高级语言特性..................

    java从入门到精通全过程笔记.doc

    Java 从入门到精通笔记整理 ...Unix,Java 基础,数据库(Oracle jdbc Hibernate pl/sql),web,JSP,Struts,Ajax,Spring,Ejb,java和模式 对于初学者而言,一个好的笔记有时候比一本好书更有用!

    java从零基础到精通 学习笔记 (带批注) 完整版PDF

    Java常年占据热门编程语言排行榜第一,Java工程师综合就业排名第一,完成此路径能够应用SSM常用框架结合面向对象编程思想实现项目开发,完成Linux系统下的项目部署运行。将能胜任月薪8,000RMB--15,000RMB的职位,...

    j2ee SSH 整合笔记,献于新手。。

    第一步,配置struts ,跟原来的配置一样,唯一不同的是。 scope="request" type="org.springframework.web.struts.DelegatingActionProxy"&gt; &lt;forward name="scuess" path="/index.jsp"&gt;&lt;/forward&gt; type...

    整理后java开发全套达内学习笔记(含练习)

    int 32bit, -2^31~2^31-1 (2147483648,20亿,10位有效数字) long 64bit, -2^63~2^63-1 (900亿亿,20位有效数字) float 32bit, 9位有效数字,含小数(四舍五入)(小数点算一位,正负号不算) double 64bit, 18位...

    java文集

    集成ACEGI 进行权限控制 SWT可交互式Browser控件 JDK配置(注意) RIA简介(第一部分) 在 Eclipse 中嵌入 NASA World Wind Java SDK, 用3DES加密解密 BadPaddingException Web Service 打包生成...

    spring学习笔记

    Spring 的开发包:..............................................................................................................6 1.3.2 创建 web 工程引入相应 jar 包:........................................

Global site tag (gtag.js) - Google Analytics