锁定老帖子 主题:struts2小结1
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-01
最后修改:2010-04-03
Struts2小结1 作者:卢海 一、struts1 和struts2的区别 struts2每次访问一个action时都会new一个新的对象出来,不会出现线程同步问题 二、配置相应环境 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: 四、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) 显示带样式的错误信息
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-02
楼主,标题写错了
|
|
返回顶楼 | |
发表时间:2010-04-02
很乱,什么都在说..
|
|
返回顶楼 | |
发表时间:2010-04-02
还不错啊 关于Struts2的部分小结
|
|
返回顶楼 | |
发表时间:2010-04-02
木有什么现实意义!
|
|
返回顶楼 | |
发表时间:2010-04-02
能不能行?
我就问能不能 我就问能不能???? |
|
返回顶楼 | |
发表时间:2010-04-02
这几天都在看马士兵的struts2视频教程,貌似楼主的帖子是从中总结出来的。对于我经常的复习巩固很有帮助,谢谢咯
|
|
返回顶楼 | |
发表时间:2010-04-02
为什么很多人都会把struts写成structs或者strutcs呢?无解
|
|
返回顶楼 | |
发表时间:2010-04-02
struts2 中标签还是有BUG, 队友input中的值如果有空格间隔的话,取不到第一个空格之后的值!
|
|
返回顶楼 | |
发表时间:2010-04-02
都忘记struts有些什么配置了
每次都是复制粘贴 |
|
返回顶楼 | |