Struts2小结1
作者:卢海
一、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输入校验总结 Struts2输入校验
Struts2+Hibernate+Spring项目小结――Struts2部分
Struts框架中struts-config.xml文件配置小结
第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 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...
第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
关于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 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...
关于 struts 实验时的一些总结,这些总结是我 流着汗水一个一个总结出来的,希望能帮到更多的人在学习struts2是少些忧愁....
NULL 博文链接:https://netxdiy.iteye.com/blog/968745
Struts2+Hibernate+Spring项目小结――Hibernate部分
本人在学习的过程中的一点小结,其中有些关于struts标签和配置的一些小问题
struts资料\前半阶段小结 struts资料\前半阶段小结 struts资料\前半阶段小结 struts资料\前半阶段小结
struts2+hibernate+spring小结
1. 依赖包...............................................9. 小结......................................................................................................................................... 14