`
youyun_2008
  • 浏览: 113564 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

struts2 学习小记(2)

阅读更多
1) struts.xml
<constant name="struts.devMode" value="true" />
struts.devMode : 是否设置为开发模式 true:是开发模式,否则不是
注:在开发模式下,修改Struts的配置文件后不需要重新启动Tomcat服务器即生效。
否则修改Struts配置文件后需要重新启动Tomcat服务器才生效。

Namespace
Namespace决定了action的访问路径,默认为“”,可以接收所有路径的action,如果没有找到相应的namespace时,则使用namespace为空的action
Namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action、/xxx/index.action、或者/xxx/yyy/index.action.
Namespace最好也用模块来进行命名。

<package>标签
<package>是用来解决重名的问题,例如当系统的前台和后台都有一个action名叫hello,这时就需要用package来区分。 前台<package name="front">后台<package name="back">

2)
<constant name="struts.devMode" value="true" />
    <package name="front" extends="struts-default" namespace="/">
        <action name="index" class="com.bjsxt.struts2.front.action.IndexAction1">
            <result name="success">/ActionIntroduction.jsp</result>
        </action>
</package>
注:<action>标签中的class属性是表示action的对应的类(这个类是一个普通Java类),当访问这个action时会创建这个类成为一个对象,然后执行这个对象中的execute方法()(execute方法返回类型为String)。

当<action>标签中class属性省略时,则默认执行com.opensymphony.xwork2.ActionSupport类中的execute方法,而这个方法返回一个字符串常量SUCCESS(常量值为:”success”).

有三种手段实现Action:
第一种:Action 普通Java类
第二种:Action 实现com.opensymphony.xwork2.Action接口,这个接口中定义了一些常量和一个execute方法,我们重写execute()方法就可以了。
第三种:Action 继承com.opensymphony.xwork2.ActionSupport类,而这个类又实现了com.opensymphony.xwork2.Action接口,我们重写execute()方法就可以了。
注:第三种Action是我们需要使用的方式,因为这个类不担实现了com.opensymphony.xwork2.Action接口,更重要的是它已经帮我封装了许多其它有用的方法。

3)路径问题的说明
struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。

还有另一种方式,就是在<head>标签中,指定<base>标签值,这样就使用统一绝对路径。
<%
String path = request.getContextPath();//
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<head>
<base href="<%=basePath%>" />
…………
注:<base>标签:当前页面中所有连接都会在前面加上base地址。


4)Action的动态调用方法
1、方法一(通过methed属性指定执行方法):
可以在配置文件中配置Action的时候用method=来指定执行哪个方法

2、动态方法调用DMI(推荐)
可以在url地址中动态指定action执行那个方法。Url地址如下:
http://localhost:8080/Struts2_0500_ActionMethod/user/user!add
方法:action + ! + 方法名
注:只要Action对象中有这个方法,并且返回类型为String就可以调用。
这样Struts.xml配置文件中不需要配置methed属性。

5)Action通配符(wildcard)的配置
使用通配符,将配置量降到最低, 不过,一定要遵守"约定优于配置"的原则
1、 通配符
星号(*)  表示所有
{数字} 表示第几个通配符
例如:Student*  那么{1}代表第一个星号(*)
*_* 那么{1}代表第一个星号(*) ,{2}代表第二个星号(*)


6)Action的属性接收参数
Action中三种传递并接受参数:
1、在Action添加成员属性接受参数
Action对象中添加成员属性并生成set、get方法。
2、域模型(Domain Model)
就是利用对象域来进行传递和接受参数
例如请求的URL地址:
http://localhost:8080/Struts2_0800_DomainModelParamInput/user/user!add?user.name=a&user.age=8
其中,访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add”
利用对象域user来传递参数,为对象的属性赋值(user.name=a user.age=8)
注:需要一个对象user 并且这个对象需要有两个成员属性,且具有get、set方法。
然后在Action中添加一个User对象的成员属性。并且有get、set方法,就可以了。
3)ModelDriven接收参数
使Action实现com.opensymphony.xwork2.ModelDriven<User>(在实现接口时需要使用泛型,否则使用时需要转型)中利用其getModel()方法返回对象模型,从而获得传入的参数。
例如URL如下:
http://localhost:8080/Struts2_0900_ModelDrivenParamInput/user/user!add?name=a&age=8
其:访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add”,其传入了两个参数:name=a,age=8。
参数被传入至Action后,会被ModelDriven对象根据参数名自动赋值给User对象相应的属性而生成User对象,并且由getModel()返回。那么我们在Action中就可以利用这个对象了。
注意:传入的参数名需要与对象模型中的成员属性一致。

7)Action属性接收参数中文问题
如果表单提交数据中有中文时,尽量使用post方式。
需要在Struts.xml配置文件中加入一个常量配置,如下:
<constant name="struts.i18n.encoding" value="GBK" /><!-- internationalization -->
但是,在Struts2 2.7之前,这个配置无效,需要其它方法设置。如下:
手动在web.xml中在Struts过滤器之前配置一个过滤器用于解决中文的问题。

8)简单数据验证
使用addFieldError方法和s:fieldError标签简单处理数据校验。
根据配置文件可以得知action所对应的类为com.bjsxt.struts2.user.action.UserAction,并且具有两个结果集(success和error).代码如下:
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String name;
public String add() {
if(name == null || !name.equals("admin")) {
//addFieldError 添加错误信息,可以在客户端访问到。
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");
return ERROR;
}
return SUCCESS;
}

<%@taglib uri="/struts-tags" prefix="s" %>
<s:fielderror fieldName="name" theme="simple"/>

分享到:
评论

相关推荐

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    struts2学习测试代码,struts2学习测试代码2

    struts2学习测试代码,struts2学习测试代码2struts2学习测试代码,struts2学习测试代码

    struts2 学习资料

    这个压缩包中包含的资源是学习Struts2的关键资料,帮助开发者深入理解和掌握这个框架。 首先,"struts2权威指南"是学习Struts2的核心参考资料,通常会涵盖框架的基本概念、核心组件、配置细节、MVC设计模式的应用...

    STRUTS2学习文档

    这个"STRUTS2学习文档"显然是一个关于如何理解和使用Struts2框架的教程资料,对于想要快速掌握Struts2核心概念和技术的开发者来说,它是一份非常有价值的资源。 Struts2框架的核心特点包括: 1. **拦截器...

    struts2中文学习文档

    从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...

    struts2学习心得

    ### Struts2学习心得:深入理解Struts2框架的基本配置与初学者指南 #### Struts2框架概述 Struts2是Struts框架的升级版本,它继承了Struts1的优点并在此基础上进行了改进,提供了更丰富的功能和更好的性能。Struts...

    Struts2的视频学习代码

    这个“Struts2的视频学习代码”资料可能是为了帮助开发者深入理解和实践Struts2的核心概念和机制。以下是根据标题、描述和标签生成的相关知识点: 1. **MVC架构**:MVC模式是软件设计中的一种经典架构,它将应用...

    张龙圣思园struts2学习笔记word

    张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...

    Struts2学习笔记

    根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...

    STRUTS2站点,STRUTS2学习实例8

    这个"STRUTS2学习实例8"显然旨在深化对Struts2的理解和应用,通过具体的实战项目来教学。让我们深入探讨一下Struts2的关键概念和技术。 首先,Struts2的核心是Model-View-Controller(MVC)设计模式。MVC模式将应用...

    struts2学习小项目(很适合初学者)

    在这个名为"struts2学习小项目"的资源中,我们可以看到一个适用于初学者实践的实例,它结合了Oracle数据库,提供了一个从基础到实践的学习路径。 首先,了解Struts2框架的基本概念至关重要。Struts2的核心是Action...

    struts2学习笔记总结

    Struts2是一个强大的Java Web应用程序开发框架,基于Model-View-Controller(MVC)设计模式,为开发者提供了...然而,随着Spring Boot等现代框架的兴起,Struts2的使用逐渐减少,但其设计理念和技术仍值得学习和借鉴。

    struts 2完全学习手册

    ### Struts 2完全学习手册知识点详解 #### Struts 2简介 Struts 2是Struts框架的一个重要分支,它继承了Struts 1.x的一些特性,并在此基础上进行了大幅度的改进与扩展,使之成为了一个更为强大、灵活的Web开发框架...

    struts2四天的学习笔记

    在四天的学习过程中,你应该通过实践和理解这些核心概念,掌握了创建一个基本的Struts2应用的能力。继续深入学习,如整合Spring、Hibernate等其他框架,你将能构建更复杂、更高效的Java web系统。

    struts2入门学习源码

    在压缩包中,`struts2.xls`可能是包含Struts2学习笔记的电子表格,详细讲解了框架的各个方面,包括配置、拦截器、结果类型等。`struts-2.3.15.3`很可能是Struts2的特定版本库,包含所有必要的JAR文件和文档,可供...

    struts2学习 源码

    本资料“struts2学习 源码”旨在帮助初学者理解Struts2的核心概念和工作原理,通过来自达内的详细代码实例来提供直观的学习体验。 Struts2框架的关键特性包括: 1. **动作(Action)**:在Struts2中,业务逻辑通常...

    struts2学习测试代码

    struts2学习测struts2学习测试代码试代码

    在Eclipse中配置Struts2项目(html)手把手教会你 +struts2 标签库介绍(html) + STRUTS2学习文档.pdf + Struts2―表单验证validate(html) + struts2和struts的比较 + struts教程(html)

    STRUTS2学习文档.pdf 对Struts2的一些配置文件进行了详细的说明。 Struts2―表单验证validate(html)对validate的type属性校验类型以及param 做了详细的解释说明。 struts2和struts的比较 让你更清楚的知道struts2...

Global site tag (gtag.js) - Google Analytics