Struts2小结
一、struts1 和struts2的区别
struts2每次访问一个action时都会new一个新的对象出来,不会出现线程同步问题
struts1每次初始化时会将action new出来,相同请求会调用同一个action,会出现线程同步问题
二、配置相应环境
a) 下载struts2 相应jar包
b) 解压此文件,将struts-2.1.8.1-all\struts-2.1.8.1\apps\struts2-blank-2.1.8.1中的文件解压,注意app文件夹下的文件是struts的实例文件。
c) 将解压的文件下的web-Inf/classes下的struts.xml copy到web项目的src下
d) 将类库文件copy到lib目录下 jar文件在解压的文件夹的lib目录下注意junit.jar
和spring-test-2.5.6.jar不需copy 到lib目录下。
注意将commons-logging.jar copy到lib 下 有的struts版本此实例中没后此jar包需从其他实例中copy入
e) 将实例中的web.xml 的有关struts2的fitler配置信息拷入
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
f) 如果是在开发阶段建议在stuts.xml 中设置开发模式,这样配置文件的改动会及时更新
<constant name="struts.devMode" value="true" />
g) 添加源码
在相应jar包上右键Property 添加相应路径
核心包的路径 \struts-2.1.8.1-all\struts-2.1.8.1\src\core\src\main\java
h) 添加doc 文档 右键相应jar包 添加相应路径
核心包doc 文档路径:/struts-2.1.8.1-all/struts-2.1.8.1/docs/struts2-core/apidocs/
i) 添加struts.xml的提示
在window –preferences中搜索catalog 添加 选择 uri 名称写stuts.xml 中的地址
如http://struts.apache.org/dtds/struts-2.0.dtd 然后将location 中填入core核心包中的相应DTD文件
j) 更改jsp文件的默认编码
Window –preferences 搜索jsp 将encoding改为 Chinese
三、hello struts 小程序
<package name="default" namespace="/" extends="struts-default">
<action name="hello">
<result>
/hello.jsp
</result>
</action>
</package>
解析 namespace 代表访问时的命名空间只有在此命名空间下才能调用其下的action
<action>中的name属性代表访问路径 result代表返回的页面
访问此action:
http://localhost:8080/项目名/action名
四、namespace
namespace 必须用/开头 访问对应的action时要加上相应的namespace名称
若namespace为空时在任何路径都可访问,可解决特殊问题
五、result
没有名称时就加代表success
六、自定义action
Struts2 可以将任何一个类的名称为execute 返回值为String 的方法当做action
即一个普通java类 便于测试。
若在action中没有写class 则action会自动执行默认的action类。
Action类的定义方法
1、 随便定义一个java普通类
定义返回值为String 方法名为execute的方法。
2、 定义一个类实现Action接口。
3、 定义一个类继承ActionSupport 。
实际开发中采用第三种方法因为它为我们提供了一些工具方法,方便调用。
<package name="default" namespace="/" extends="struts-default">
<action name="hello" class="actions.Test1">
<result name="success">
/hello.jsp
</result>
</action>
</package>
类的代码:
package actions;
import com.opensymphony.xwork2.ActionSupport;
public class Test1 extends ActionSupport{
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("hello");
return "success";
}
}
七、相对路径问题
在jsp界面中加入
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
在<head></head>中加入
<base href="<%=basePath%>">
这样所有的链接会自动定位到项目根路径
Stuts2.0中的所有的链接界面对应的路径为映射路径而不是实际路径,所以在struts2.0中应尽量使用绝对路径
八、Action执行的方法
Action执行的时候并不一定要执行execute方法
可以在配置文件中配置Action的时候用method 属性来指定执行哪个方法
也可以在调用时使用同一个action然后加!号后加方法名
<a href="user/user!add">添加用户</a>
一般使用后一种方法避免出现过多的action
九、通配符问题
使用通配符可以最少化代码量
<package name="default1" namespace="/path2" extends="struts-default">
<action name="*_*" class="actions2.{1}" method="{2}">
<result name="success">/{1}_{2}.jsp</result>
</action>
</package>
可以根据统配符的内容自动找到相关类相关方法
注意 通配符的占位符是从1开始的
十、得到参数值
在调用的Action中定义与参数名相同的String类型的参数,添加get set方
即可得到相应的参数值。
十一、通过域模型DomainMode得到参数
即写一个pojo类 此类中含有相应的参数值,在传值时采用对象.属性名传参,接受action类只需写pojo类的get set 方法即可。
十二、ModelDriven接受参数
在传参时写字段名称=值,在接收的Action类实现ModelDriven接口实现其getModel方法,返回值为接受的pojo对象,即可得到封装好的pojo对象。
例:
传参:?name=aa&age=12"
接受类:implements ModelDriven<pojo.Student>
实现方法: public pojo.Student getModel() {
return stu;
}
返回值为new 好的stu对象
pojo.Student stu=new pojo.Student();
十三、中文乱码问题
在stucts的配置文件中加入:
<constant name="struts.i18n.encoding" value="GBK" />
国际化配置
有些版本设置后还会出现乱码问题,应自己手写一个filter来解决
在2.1.7版本后会解决
或将web.xml的Stuts配置换成2.0的 配置
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
十四、 简单数据校验
1、 this.addFieldError("name", "name is error");
在action中放入错误信息
2、 在前台得到错误信息
a) 添加struts标签
<%@taglib uri="/struts-tags" prefix="s" %>
b) 显示带样式的错误信息
分享到:
相关推荐
### Struts2学习小结 #### 一、Struts2简介及环境搭建 **Struts2** 是一款基于 **MVC**(Model-View-Controller)设计模式的开源框架,用于简化 Java Web 应用程序的开发过程。通过将业务逻辑、用户界面以及控制...
关于struts2框架的学习总结,非常实用知识对关键部分通过自己的学习总结出来非常具有实际参考价值
这篇博客"Struts开发小结"可能涵盖了作者在使用Struts框架进行开发过程中的经验总结和一些关键点。由于没有直接的描述内容,我们将基于Struts框架的一般特性来讨论相关知识点。 1. **Struts 2框架基础**: Struts ...
### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...
Struts2是一个强大的MVC框架,它为Java开发者提供了便捷的Web应用开发工具。本文将对Struts2的核心概念和标签库进行详细讲解,帮助初学者更好地理解和掌握这个框架。 Struts2框架由两个主要部分构成:控制器和视图...
在Struts2中,当服务端验证失败时,通常会将错误信息保存在ActionContext中,并通过ActionSupport类中的addFieldError方法添加到字段上。此时,为了保留页面的初始状态,我们可以采取以下策略: 1. 使用`...
### 小结 《Struts 2实战 Struts 2 in action 的中文版》这本书系统地介绍了Struts 2框架的基础知识、核心组件、工作原理以及实际开发技巧。对于希望深入学习和掌握Struts 2框架的开发者来说,这本书是一本不可多得...
第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 ...15.7 小结 332
### 关于Struts2实验时的临时总结 #### 概述 本文档是对Struts2实验过程中的几个关键问题及解决方案进行了归纳与整理。通过实际操作过程中遇到的问题及其解决办法,帮助其他开发者避免同样的错误,并提供高效的学习...
### Struts框架中struts-config.xml文件配置详解 #### 一、引言 在Java Web开发领域,Struts是一个非常重要的MVC(Model-View-Controller)框架,它极大地简化了Web应用程序的开发过程。而在Struts框架中,`struts...
#### 四、小结 Flex与Struts2的整合,不仅能够提升Web应用的用户体验,还能充分利用两种技术的优势,实现高效的数据处理和丰富的界面展示。通过本文的详细介绍,相信读者已经掌握了Flex与Struts2整合的基本步骤和...
第1章 Struts 2概述1 1.1 MVC思想概述2 1.1.1 Web技术的发展2 1.1.2 Model 1和Model 24 1.1.3 MVC思想及其优势6 1.1.4 常用的MVC框架7 1.2 Struts 2的起源和背景8 ... 1.6 本章小结22
1.4 小结 13 第2章初识Struts 14 2.1 Struts的优点 14 2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例...
### 小结 通过对Struts2框架的国际化功能的介绍和示例分析,我们可以看出Struts2在处理多语言应用方面具有非常强大的能力。通过合理的配置资源文件和使用Struts2提供的标签,开发者可以轻松地为用户提供多语言支持...
一、准备工作及实例 3 ...小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 ...
以上是对Struts框架的简单总结,每个知识点都涉及到Struts2的核心特性,理解和掌握这些知识点对于进行Struts2应用的开发至关重要。在实际项目中,还需要结合其他技术如Spring、Hibernate等进行更复杂的集成和配置。
在本学习小结中,我们将探讨如何将Struts2与IReport整合,以实现在Web应用中动态生成和展示报表的功能。 首先,让我们了解Struts2的基础知识。Struts2的核心是Action类,它是处理用户请求并返回结果的核心组件。...
#### 五、小结 本文详细介绍了Struts2处理多个请求和域传参的相关知识点。从过滤器和拦截器的作用到动态方法调用的实现,再到具体的登录和注册请求处理示例,旨在帮助读者全面了解Struts2的基本概念和使用方法。...
小结 本文介绍了如何使用Struts2的JSON插件处理JSON数据。通过不同的配置选项和示例,读者可以了解到如何灵活地控制返回的JSON数据格式。无论是使用XML配置还是注解方式,Struts2都提供了丰富的选项来满足不同的...