`
冯瑞芳
  • 浏览: 28778 次
  • 性别: Icon_minigender_2
  • 来自: 河南
文章分类
社区版块
存档分类
最新评论

struts2总结之一

阅读更多
Struts2框架发展
Apache Struts 在 2000年5月由Craig McClanahan 发起,并于2001年7月发布了1.0版。
Struts一出现便大受欢迎,更成为了以后几年内web 开发的实际标准。
Struts2是Struts的下一代产品,是在WebWork的技术基础上进行了合并。
Struts2是在WebWork2基础发展而来的。主要是因为struts2有以下优点:
1 > 在软件设计上Struts2没有像struts1那样跟Servlet API和struts API有着紧密的耦合,Struts2的应用可以不依赖于Servlet API和struts API。 Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。
2> Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。
3> Strut2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Struts1中,如果我们要实现同样的功能,就必须向Struts1的底层实现BeanUtil注册类型转换器才行。
4> Struts2提供支持多种表现层技术,如:JSP、freeMarker、Velocity等
5> Struts2的输入校验可以对指定方法进行校验,解决了Struts1长久之痛。
6> 提供了全局范围、包范围和Action范围的国际化资源文件管理实现
搭建Struts2环境时,我们一般需要做以下几个步骤的工作:
1》找到开发Struts2应用需要使用到的jar文件.
2》编写Struts2的配置文件
3》在web.xml中加入Struts2 MVC框架启动配置
<package name="itcast" namespace="/test" extends="struts-default">
<action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="execute" >
<result name="success">/hello.jsp</result>
</action>
</package>
在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。
配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,他不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下的Action的路径的一部分,如访问上面例子的Action,访问路径为:/test/helloworld.action。 namespace属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“”(空字符串)。

通常每个包都应该继承struts-default包, 因为Struts2很多核心的功能都是拦截器来实现。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。 struts-default定义了这些拦截器和Result类型。可以这么说:当包继承了struts-default才能使用struts2提供的核心功能。 struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。 struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载 struts-default.xml文件。
包还可以通过abstract=“true”定义为抽象包,抽象包中不能包含action。
Action名称的搜索顺序:
1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action
2.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3;
3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4;
4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action(默认的命名空间为空字符串"" ),如果还是找不到,页面提示找不到action。
Action配置中的各项默认值:
<package name="itcast" namespace="/test" extends="struts-default">
        <action name="helloworld" class="cn.itcast.action.HelloWorldAction"  method="execute" >
<result name="success">/WEB-INF/page/hello.jsp</result>
        </action>
  </package>
1>如果没有为action指定class,默认是ActionSupport。
2>如果没有为action指定method,默认执行action中的execute() 方法。
3>如果没有指定result的name属性,默认值为success。
用struts2完成登录案例:
在index.jsp中:
<body>
  <div align="center">
     <h1>用户登录界面</h1>
     <div>${msg}</div>
     <div>
      <form action="${pageContext.request.contextPath}/csdn/loginAction" method="post">
        <table>
           <tr>
             <td> 用户名</td>
             <td><input type="text" name="username"/>
             </td>
           </tr>
           <tr>
            <td>密码</td>
            <td>
              <input type="password" name="userpass"/>
            </td>
           </tr>
           <tr>
             <td colspan="2">
              <input type="submit" value="登录">
              &nbsp;&nbsp;&nbsp;&nbsp;
              <input type="reset">
             </td>
           </tr>
        </table>
      </form>
      </div>
      </div>
  </body>
在LoginAction类中
public class LoginAction implements Action{
  private String username;
  private String userpass;
  private String msg;
注意:此处省略了get,set方法
public String login(){
System.out.println("你传递的参数值是:"+username+"----------"+userpass);
if("feng".equals(username)){
return SUCCESS;
}
this.setMsg("重新登录");
return INPUT;
}
}
Struts2的配置文件中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
  <package name="redarmys" extends="struts-default" namespace="/csdn">
    <action name="loginAction" class="cn.csdn.action.LoginAction"  method="login">
       <result name="success">/sc.jsp</result>
       <result name="input">/index.jsp</result>
    </action>
  </package>
</struts>
分享到:
评论

相关推荐

    我的struts2的总结

    “struts-default.xml”是Struts2框架中的默认配置文件之一,它包含了框架的基础配置。如果在开发过程中遇到如“struts2 null异常”的问题,可以检查这个文件中的配置是否正确。例如,确保所有需要的拦截器、结果...

    struts2总结

    - **值栈**:是Struts2中的核心概念之一,用于存储和检索请求中的数据。 - 根节点(root):通常是Action类的实例。 - 上下文(context):包含了request、session、application等作用域的数据。 #### Struts2标签 -...

    Struts2知识点总结

    - Struts2的核心概念之一,用于存放Action对象和其他数据,方便视图层获取。 - Action可以直接将属性放入值栈,JSP可以通过OGNL表达式直接访问。 6. **OGNL(Object-Graph Navigation Language)** - Struts2的...

    Struts2初步使用总结

    拦截器是Struts2框架的核心组件之一,用于实现特定的功能,如输入验证、日志记录等。Struts2提供了一系列默认的拦截器,并允许用户自定义拦截器。 **3.3 ActionMapper** `ActionMapper`负责将HTTP请求映射到对应的...

    struts2学习总结

    1. **Action**: Action是Struts2的核心组件之一,代表了业务逻辑的执行单元。每个Action类对应于用户的一个请求,处理用户的输入并调用相应的服务方法。Action可以通过setter注入来接收依赖,减少代码的耦合。 2. *...

    struts2源码分析总结

    本文将深入探讨Struts2的源码分析,特别是关于StrutsPrepareAndExecuteFilter的初始化过程,这是Struts2的核心组件之一,负责处理HTTP请求。 首先,我们来看`StrutsPrepareAndExecuteFilter`的初始化。这个过滤器...

    Struts 2实战 struts2 in Action

    - **定义**:Action类是Struts 2中的核心组件之一,它负责处理用户的请求并将数据传递给视图层。 - **特点**:Action类可以使用注解或XML配置文件进行配置,这为开发人员提供了极大的灵活性。通过实现`Action`接口...

    Struts2开发实例总结

    Struts2的强大之处在于它简化了MVC模式的实现,提供了丰富的标签库和强大的数据绑定能力,使得开发Java web应用变得更加高效和简洁。在实际项目中,还需要结合其他技术和最佳实践,如错误处理、权限控制、国际化等,...

    Struts2+Hibernate+Spring项目小结――Struts2部分总结

    Struts2的核心特性之一就是其强大的拦截器机制,它们负责在Action执行前后进行一系列的处理,包括登录检查、日志记录、事务管理等。在Struts2中,我们可以通过自定义拦截器来扩展框架功能。例如,可以创建一个专门...

    马士兵Struts2笔记2013

    ValueStack是Struts2的核心组件之一,它是一个数据存储结构,用于管理Action上下文中的对象。Action中的属性会被放入ValueStack,从而可以直接在JSP中通过OGNL表达式访问。 8. **ValueStack Debug和Contents** ...

    struts的总结(struts1.x)

    Validator 插件是 Struts 1.x 中最常用的表单验证插件之一。它提供了丰富的验证规则和错误消息模板,大大简化了验证过程。要使用 Validator 插件,首先需要在 `struts-config.xml` 文件中进行配置,然后在 ...

    struts2核心技术整理

    总结,Struts2作为Java web开发的主流框架之一,其核心技术包括Action、Interceptor、Value Stack、OGNL等,通过这些组件和机制,开发者能够高效地构建MVC应用,实现业务逻辑与表现层的分离,同时具备良好的扩展性...

    Struts2学习总结

    拦截器是Struts2的核心组件之一,它们在请求到达Action之前进行预处理,在请求离开Action之后进行后处理。 此外,Struts2提供了内置的类型转换器,允许我们将特殊类型的请求参数自动转换为需要的Java对象类型,这比...

    struts2学习总结之基础篇

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

    Struts2开发总结

    通过对Struts2项目的关键技术点的总结,我们可以看到Struts2框架的强大之处在于其对MVC架构的支持以及丰富的标签库。通过合理配置和使用这些特性,可以极大地提高Web应用的开发效率和维护性。对于初学者来说,掌握...

    struts2标签之列求和

    ### Struts2 标签之列求和 在Struts2框架中,处理表单、迭代数据等功能时,经常需要用到各种内置标签。其中,`&lt;s:iterator&gt;` 标签常用于循环显示列表数据,而结合`&lt;s:set&gt;`标签可以实现对列表中的数值进行求和操作...

    Struts2之struts2文件上传详解案例struts011

    在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解Struts2中的Action类,它是处理用户请求的核心组件。为了支持文件上传,我们需要创建一个继承自`org....

    Struts2之struts2文件下载详解案例struts012

    总结,"Struts2之struts012"案例详细介绍了如何在Struts2框架中实现文件下载功能。通过定义一个Action类处理下载请求,配置Struts2的Action映射,以及在JSP页面上创建触发下载的链接,我们可以为用户提供安全、便捷...

    Struts2技术总结

    ### Struts2技术总结 #### 一、Struts2概述及特点 Struts2作为一款流行的Java Web开发框架,继承了Struts1的优点并进行了大量的改进与创新,使其成为了一个非常值得学习的目标。Struts2相比Struts1,最大的优势...

    struts2视频自学总结

    拦截器是Struts2的核心概念之一,用于在Action执行前后进行预处理和后处理。Struts2默认提供了一系列的拦截器,如`defaultStack`,并通过`struts.xml`文件进行配置。此外,开发者还可以自定义拦截器,只需实现`...

Global site tag (gtag.js) - Google Analytics