`

Struts2学习总结之基础篇2

阅读更多

Struts2对json有非常好的支持。为了支持json ,我们只需要如下三步:
1. 导入struts2-json-plugin-{STRUTS_VERSION}.jar
2. 让package继承json-default
3. 将action返回的result的type设置为json

HelloAction.java
public class HelloAction {
  private String message;
  public String getMessage() {
    return message;
  }
  public void setMessage(String message) {
    this.message = message;
  }
  public String execute(){
    return "success";
  }

配置struts.xml如下:
<package name="demo" namespace="/" extends="json-default">
<action name="hello" class="action.HelloAction">
<result type="json" ></result>
</action>
</package>

访问hello.action?message=hello
浏览器会打开保存窗口,因为浏览器默认不会显示action文件的内容。保存结果,然后用记事本打开,会看到如下串: {"message":"hello"}

 

在不需要json的字段的get方法上加注解
@JSON(serialize = false)


dispatcher类型表示将请求转发给其他资源。而redirect是重定向到其他资源(参数会丢失,地址栏会变化。可以防止用户刷新浏览器重复提交表单的信息)。
    <package name="default" extends="struts-default"> 
            <action name="showPerson" class="com.cz.action.ShowPerson"> 
                <result name="success">/showPerson.jsp</result> 
            </action> 
            <!-- dispatcher resytype test --> 
            <action name="test" class="com.cz.action.DispatcherTest"> 
                <result type="dispatcher">/testSuccess.jsp</result> 
            </action> 
             
            <!-- redirect resytype test --> 
            <action name="test2" class="com.cz.action.DispatcherTest"> 
                <result type="redirect">/testSuccess.jsp</result> 
            </action> 
        </package> 


拦截器 可以在Action调用前或后执行代码
许多框架的核心功能都是通过拦截器来实现的.如重复提交(double-submit),类型转换,对象属性填充,校验,文件上传等
每一个拦截器都是可插拔的
每一个Action都可以单独配置拦截器
拦截器在栈中的配置顺序决定了拦截器的调用顺序。

<package name="default" extends="struts-default">
   <interceptors>
       <interceptor name="timer" class=".."/>
       <interceptor name="logger" class=".."/>
   </interceptors>
   <action name="login" class="tutorial.Login">
        <interceptor-ref name="timer"/>
        <interceptor-ref name="logger"/>
         <result name="input">/login.jsp</result>
         <result name="success" type="redirect-action">/secure/home</result>
   </action>
</package>

Struts2解决重复提交的方式非常简单,分为两步:
1. 在需要防止出现重复提交的表单中增加如下标签:<s:token/>
eg:
<s:form action="double" namespace="/demo">
<s:token></s:token>
<s:textfield label=“some value" name=“value"></s:textfield>
</s:form>
2. 在处理表单提交的action中增加如下拦截器的引用: <interceptor-ref name="token"></interceptor-ref>
另外我们还需要指定出现重复提交错误时,返回什么结果给用户,如:
<result name="invalid.token">/doublepost.jsp</result>
一个完整的配置如下:
<action name="double" class="action.DoublePost">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token"></interceptor-ref>
<result name="invalid.token">/doublepost.jsp</result>
<result>/login.jsp</result>
</action>

校验:
<validators>
  <field name="bar">
      <field-validator type="required">
          <message>You must enter a value for bar.</message>
      </field-validator>
      <field-validator type="int">
          <param name="min">6</param>
          <param name="max">10</param>
          <message>bar must be between ${min} and ${max}, curren
value is ${bar}.</message>
      </field-validator>
  </field>
  <field name="bar2">
      <field-validator type="regex">
          <param name="regex">[0-9],[0-9]</param>
          <message>The value of bar2 must be in the format "x, y",
where x and y are between 0 and 9</message>
     </field-validator>
  </field>
<field name="date">
      <field-validator type="date">
          <param name="min">12/22/2002</param>
          <param name="max">12/25/2002</param>
          <message>The date must be between 12-22-2002 and 12-25-
2002.</message>
      </field-validator>
  </field>
  <field name="foo">
      <field-validator type="int">
          <param name="min">0</param>
          <param name="max">100</param>
          <message key="foo.range">Could not find foo.range!</message>
      </field-validator>
  </field>
  <validator type="expression">
      <param name="expression">foo lt bar </param>
      <message>Foo must be greater than Bar. Foo = ${foo}, Bar =
${bar}.</message>
  </validator>
</validators

分享到:
评论

相关推荐

    struts2学习总结之基础篇

    本篇文章将对Struts2的基础知识进行深入的探讨和总结。 一、Struts2框架概述 Struts2是Apache软件基金会的一个项目,它继承了Struts1的优点并解决了其存在的问题,提供了更强大的功能和更高的灵活性。Struts2的核心...

    struts2基础

    本篇文章将深入探讨如何在IntelliJ IDEA开发环境中,利用Maven构建一个基本的Struts2项目。 首先,我们需要理解Maven,它是一个项目管理和综合工具,可以帮助我们管理项目的构建、依赖关系和配置。在IntelliJ IDEA...

    struts2省市县级联

    总结来说,"Struts2省市县级联"是一个涉及前端交互、后端处理、数据库操作和框架配置等多个方面的问题,需要开发者具备扎实的Java Web开发基础和对Struts2框架的深入理解。通过实践和学习,你可以掌握这一实用功能的...

    Struts2 基础(五)

    在本篇博客中,我们将深入探讨Struts2的基础知识,包括其核心概念、配置、以及如何使用Struts2创建一个简单的Web应用。 **一、Struts2 概述** Struts2 是 Struts1 的升级版,它解决了 Struts1 中的一些局限性,提供...

    struts2 权威指南

    总结,《Struts2 权威指南》是学习和掌握Struts2框架的重要资源,通过阅读电子书并结合提供的源码,开发者可以深入理解Struts2的核心概念、配置方式、工作原理以及如何进行实际应用开发。对于Java Web开发者来说,...

    Struts2国际化支持引导(初)

    这篇指南将深入探讨Struts2如何实现国际化支持,并提供一个初步的引导。 首先,理解国际化的基本概念是至关重要的。国际化不仅仅是翻译文本,它还涉及到日期、时间、货币等格式的本地化。在Java中,这一过程通常...

    java经典学习笔记,个人总结

    本资源总结了 Java 学习笔记,涵盖了 J2EE 方面的三大框架,包括 Struts2.x、Hibernate 和 Spring。文章首先介绍了 Struts2 的概念和优点,然后详细讲解了如何搭建 Struts2 开发环境,包括所需的 jar 文件、配置文件...

    struts2标签汇总

    本篇文章将深入探讨Struts2中的标签,特别是Ajax标签,并附带相关的源码分析。 一、Struts2基本标签库 Struts2的基础标签库包含了用于处理表单、显示数据和导航等任务的标签。例如: 1. `&lt;s:textfield&gt;`:用于创建...

    Struts2 + JasperReport应用一:导PDF,Excel,HTML显示

    总结起来,这篇博文会介绍如何在Struts2中集成JasperReport,通过编写Action类和配置Struts2的XML文件,实现动态报表的生成,并导出为PDF、Excel和HTML格式。这样的功能对于需要展示大量数据的应用场景非常有用,如...

    struts2笔记[初步修改版]

    总结来说,这篇笔记详细介绍了Struts2的基本概念、环境配置、核心配置文件以及开发工具的优化,为初学者提供了良好的学习起点。了解这些基础知识后,开发者可以进一步学习Struts2的MVC模式、Action、Result、...

    Struts2入门

    本篇文章将深入探讨Struts2的基础知识,包括其核心概念、配置、标签库以及API的使用。 一、Struts2的核心概念 1.1 框架架构:Struts2基于拦截器(Interceptor)模型,通过一系列拦截器来处理请求,实现了业务逻辑与...

    Struts 学习笔记

    总结,Struts作为早期的Java Web框架,对Web开发领域产生了深远影响,虽然现在有许多新的框架崛起,但理解并掌握Struts的基础知识,对于理解MVC模式和Web开发流程仍具有重要的学习价值。通过实践,你可以更好地理解...

    Struts 1.3.8 学习笔记(五)

    总结来说,Struts 1.3.8 学习笔记涵盖的内容广泛,包括框架的组件使用、配置、源码解读以及工具应用。通过这样的学习,开发者能够熟练掌握 Struts 的核心功能,为构建高效、可维护的 Web 应用奠定基础。

    struts2初体验(附视频)

    本篇文章将带你初识Struts2,并通过实际操作来体验其工作原理和基本用法。提供的压缩包文件"teststruts2"可能包含了示例代码或配置文件,用于辅助学习。 首先,我们了解Struts2的核心概念: 1. **Action类**:在...

    jQuery+json+struts2 开发备忘录(一)

    在本篇“jQuery+json+struts2 开发备忘录(一)”中,我们将探讨如何使用这三种技术来构建高效且用户友好的Web应用程序。jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。JSON...

    Struts1基本配置

    本篇将深入讲解Struts1的基本配置,帮助你理解和掌握这个框架的核心概念。 **1. 框架概述** Struts1是由Apache软件基金会开发的开源框架,它的主要目的是为了简化Java Servlet和JSP(JavaServer Pages)的开发,...

    struts开发小结

    综上所述,这篇博客可能涵盖了Struts 2的基础知识,特别是关于Action、拦截器、结果类型、异常处理等方面的经验分享,同时可能提及了一些实用工具或插件的使用心得。如果你希望深入学习Struts 2,可以参考提供的博文...

    基于Struts框架的网上书店毕业论文

    这篇论文不仅涵盖了Struts框架的使用,还可能探讨了实际项目开发中的问题解决和经验总结,对于理解和实践Struts框架有很好的指导意义。通过阅读和分析论文,读者可以深入了解Struts在实际项目中的应用,并学习到Web...

    <<项目架构那点儿事>>——浅析web层struts2的构建

    本篇文章将深入探讨Struts2在Web层的构建过程,通过分析提供的文件名,我们可以大致了解一个典型的Struts2应用的基本构成。 首先,我们来看`BaseAction.java`,这是一个基础Action类,通常包含了一些公共方法和属性...

    struts1总结

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的...通过学习Struts1,开发者可以更好地掌握Web应用程序的结构,为后续的学习和开发打下坚实基础。

Global site tag (gtag.js) - Google Analytics