`
hao861002
  • 浏览: 86505 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts复习第三天

阅读更多


Struts的Token(令牌)机制

Struts使用Token机制,来防止恶意的破坏和重复提交问题,也就是点击后退后在再提交,这是Struts无法发现的,在form中生成一个token码,在session中也报村有一个同样的token码,当表单提交后,判断两个token码向等后,就会改变session中的这个token码,当然在用回退后,form的token码是不会变的,在提交,还会判断两个token码是否相等,如果不等就会抛出异常,证明这是过时的垃圾数据。

void saveToken(HttpServletRequest request)方法用于将在客户端生成的token码,保存在session中。
void resetToken(HttpServletRequest request)方法用于重置token码,生成新的token码。
boolean isTokenValid(HttpServletRequest request,boolean reset)判断token码是否相等,并且是否重置token码。reset是设定是否重置token码,一般设为true。

设置token码
 public ActionForward toadd(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)throws Exception
    {
        saveToken(request);
        return mapping.findForward("next");
    }

验证token码
 public ActionForward add(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)throws Exception
    {
        if(isTokenValid(request, true)){
            request.setAttribute("message", "contratulation!");
        } else {
            request.setAttribute("message", "sorry");
        }
        return mapping.findForward("next");
    }


Struts的异常处理

Struts只处理action的异常,
配置struts的异常处理
全局的异常处理

<global-exceptions>
   <exception key="error" path="xxx/xxx" type="xxx.xxx.Xxxx">
</global-exceptions>

<action path="xxx/xxx" type="xxx.xxx.Xxxx">
  ....
  <exception key="xxx" path="xxx/xxx" type="xxx.xxx.Xxxx">
</action>
在exception标签中的key,也就是在出现异常时会封装在ActionErrors中,也就是可以在页面中使用。
ActionError(String key, Object value0),可以通过在构造ActionError时,指定不同的key值来对异常进行分类,并且在html:error标签的

自己构造ActionErrors并使用下面的方法发送

void saveErrors(HttpServletRequest request,ActionErrors errors)这个方法用以把封装了异常的ActionErrors的key存储到request中。  

Struts动态Form

DynaActionForm,动态的ActionForm,动态的form不需要去写特定的ActionForm类,只需要在配置文件中配置好form中的属性名和属性类型。以,Struts会自动的封装成动态的Form。

<form-bean name="xxx" type="org.apache.struts.action.DynaActionForm">
   <from-property name="xxx" type="xxx.xxx.xxx">
   <from-property name="xxx" type="xxx.xxx.xxx">
     ...
     ...
</form-bean>
动态的ActionForm的使用上和普通的ActionForm相同。
在Struts中的Form要是粗粒度的,不要写太多的Form,要根据情况确定Form的多少。

Struts的动态校验

Struts可以通过继承DynaActionForm,并覆盖validate()方法来打倒校验的目的。也可以通过配置校验规则来进行动态Form的校验实质上就是翻译成javasctipt代码。
使用校验规则来进行动态校验时需要写validation.xml,validator-rules.xml
还需要对struts-config.xml进行配置

validation.xml

<form-validation>
  <formset>
    <form name="/token/add">
      <field property="name" depends="required,minlength, maxlength">
        <arg0 key="token.name" />
        <arg1 name="minlength" key="${var:minlength}" resource="false"/>
        <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
        <var>
          <var-name>minlength</var-name>
          <var-value>5</var-value>
        </var>
        <var>
          <var-name>maxlength</var-name>
          <var-value>8</var-value>
        </var>
      </field>
    </form>
  </formset>
</form-validation>

struts-config.xml

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property
        property="pathnames"
        value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
  </plug-in>

分享到:
评论

相关推荐

    struts2综合复习习题

    ### Struts2综合复习知识点详解 #### 一、Struts2标记库中迭代标签iterator的()方法是判断当前元素是否是第偶数个元素。 **答案解析:** - 正确答案为 **D.isEven**。 - Struts2中的`&lt;s:iterator&gt;`标签用于迭代...

    Struts2Review项目

    结合Struts2的插件机制,可以方便地集成第三方库,如Spring、Hibernate等,以实现完整的MVC+ORM解决方案。 项目中的文件可能包括Action类、JSP页面、配置文件(如struts.xml)、测试用例等。Action类通常会处理业务...

    个人知识管理系统 Struts2.0 + Spring + Hibernate

    第三次:4 小时 第四次:12小时 第五次:24小时 第六次:3 天 第七次:7 天 之后 :每15天 当然如果没有及时更新复习的话,下一次的复习更新时间会在上一次复习更新后顺延。 由于对页面样式了解不多,所以写出来...

    struts2权威指南前三章

    此外,Struts2的拦截器(Interceptors)机制也可能是第三章的重点,它是Struts2中的一大特色,允许开发者在Action调用前后插入自定义逻辑。拦截器可以用于日志记录、事务管理、权限验证等多种用途,极大地增强了框架...

    struts2讲义_吴峻申

    第3章 Struts2核心技术 37 3.1 使用web.xml配置Struts2实现Web项目Struts2应用 37 3.2 使用配置文件struts.xml实现页面导航定义 38 3.3 使用Action类控制导航业务数据 40 3.4 使用ActionSupport进行校验 42 第4章 另...

    Struts2.1权威指南光盘源代码第21章

    3. **配置文件**:Struts2的配置通常在struts.xml中进行,包括Action的映射、结果类型配置、拦截器栈等。第21章的源码可能会包含这些配置的实例。 4. **拦截器(Interceptors)**:拦截器是Struts2的一个强大特性,...

    达内学习用的jdbc与struts笔记.pdf

    - 第三天:可能涉及视图层的JSP和Struts标签库的使用,以及如何处理表单提交。 - 第四天:可能讨论了异常处理、国际化、Tiles框架集成等高级主题。 Struts框架的工作流程: - 用户通过浏览器发起请求。 - 请求被...

    个人信息管理系统Struts2 spring hibernate dwr

    第三次:4 小时 第四次:12小时 第五次:24小时 第六次:3 天 第七次:7 天 之后 :每15天 当然如果没有及时更新复习的话,下一次的复习更新时间会在上一次复习更新后顺延。 在Ajax更新复习次数时通常都会第一次...

    个人知识管理系统 Struts2 + Spring + Hibernate

    第三次:4 小时 第四次:12小时 第五次:24小时 第六次:3 天 第七次:7 天 之后 :每15天 当然如果没有及时更新复习的话,下一次的复习更新时间会在上一次复习更新后顺延。 由于对页面样式了解不多,所以写出来...

    struts电子书1-8.rar

    1. **入门介绍**:这部分通常会介绍Struts1的基本概念,包括为什么需要Struts,它的核心架构,以及如何搭建第一个Struts项目。 2. **MVC模式**:Struts是MVC模式的一个实现,这一部分可能会详细解释模型、视图和...

    ssh期末复习题.doc

    SSH 期末复习题涉及到的主要知识点包括 Struts 2 框架、Hibernate ORM 和 Java Web 开发中的核心概念。以下是对这些知识点的详细说明: 1. **Struts 2**: - **基础类库**:构建 Struts 2 应用的基础类库包括 `...

    通用的在线考试系统(jsp+struts+hibernate+oracle).rar

    3. 数据库设计应遵循第三范式,合理规划表结构,保证数据的一致性和完整性。 4. 为了提高用户体验,系统可引入AJAX技术实现部分页面的异步刷新,提高响应速度。 5. 安全性方面,系统需进行输入验证,防止SQL注入等...

    web框架考试复习重点

    5. **易于集成第三方框架**:Spring3与其他框架如Hibernate、Struts2等有着良好的集成性,降低了集成难度。 6. **简化Java EE API的使用**:Spring3对复杂的Java EE API进行了封装,降低了使用难度。 7. **优秀的...

    北大青鸟ACCP6.0 第三学期 Y2 JAVA方向 ssh 三大框架

    在北大青鸟ACCP6.0第三学期的Y2 Java方向课程中,SSH框架的学习是重点内容之一,主要目标是让学生掌握如何有效地整合这三个框架,实现数据持久化、业务逻辑处理和视图展示的高效分离。 1. **Spring框架**: Spring...

    java面试复习总结.doc.pdf

    - 缓存机制包括一级缓存(session级,生命周期与session相同)和二级缓存(sessionFactory级,可管理,使用第三方插件实现)。 6. **MyBatis**: - 最简单的持久化框架,学习成本低。 - 提供XML标签,支持动态...

    JavaEE期末复习模拟题

    12. **MVC框架**:虽然JavaEE本身包含JSF,但还有许多流行的第三方MVC框架,如Spring MVC和Struts,它们提供了更强大的功能和灵活性。 13. **容器**:JavaEE应用通常运行在应用服务器容器中,如Tomcat、Jetty、...

    spring学习复习资料

    Spring 提供了展现层 Spring MVC 和业务层事务管理等一系列企业级应用技术,并能够整合开源世界中的众多第三方框架和类库。 #### 二、Spring发展历程 - 1997年 IBM 提出了 EJB 的思想,随后 SUN 制定了 EJB 1.0 ...

    Java web 期末复习 PPT.zip

    这份"Java Web期末复习PPT.zip"压缩包显然是一份针对Java Web开发的复习资料,包含了从基础到高级的多个主题,旨在帮助学生或开发者系统性地理解和掌握这个领域。让我们逐一深入探讨这些章节的主要知识点。 1. **...

    JavaWeb 视频教程 传智播客 第28天 共28天

    这个“JavaWeb视频教程 传智播客 第28天 共28天”的系列课程,显然是一个完整的JavaWeb学习路径,旨在帮助初学者或有一定基础的学习者深入理解JavaWeb开发的核心概念和技术。 在第28天的课程中,主题是"基础加强2...

Global site tag (gtag.js) - Google Analytics