`
yongjian1092
  • 浏览: 40765 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Struts2操作总结

 
阅读更多

前言

想,那 追,不 来是 逐, 40 50

实验软件下载

1. 下载struts2.1.6 http://struts.apache.org/download.cgi#struts217
(选择下载full distribution)

2. 下载myeclipsehttp://www.myeclipseide.com

3. 下载tomcathttp://tomcat.apache.org

4. 下载xworkhttp://www.opensymphony.com/xwork (要注意的是下载与struts2.1.6的对应版本,即2.1.2)

安装与设置

1. 解压struts2.1.6,假设解压后位于d:\struts2目录

2. 安装MyEclipse,任何版本都可以

3. 假设你已经安装好jdktomcat了,如d:\tomcat

HelloWorld

1. 建立项目

a) 打开eclipse

b) 新建项目

c) 选择myeclipse-java enterprise projects-web project

d) 项目名称:struts2_0100_introduction

e) 选择java ee 5.0

2. 设定server

a) window preferences myeclipse servers tomcat 6.x

b) 选择tomcat home directory

c) 选择enable

d) finish

3. 设定jdk环境

a) window preferences java installed jres

b) 如果没有对应的JDK(不是JRE),选择add

c) 选择standard VM -> next

d) 选择JDK对应的Directory

e) 将刚刚设定的JDK设为默认

4. 建立第一个struts2.1的程序

a) 找到struts目录下对应的apps目录

b) 解压struts2-blank-2.1.6.war

c) Copy对应的libjar文件,需要除junitspring-test之外的所有文件,其中commons-iojar包会在文件上传和下载时需要,其他为必须

d) Copy对应的struts.xmlsrc目录,在package explorer视图进行操作

e) 注释掉struts.xml的多余内容

f) 建立HelloStruts2_1.jsp文件

g) *修改jsp文件的默认编码属性window-preferences-web-jspfiles-设为Chinese,National Standard

h) struts.xml中照原配置进行对应的配置

i) 修改对应的web.xml,建立struts2filter(参考struts自带的项目)

5. 运行项目

a) 可以首先部署到tomcat上项目

b) 也可以项目右键debug as myeclipse server app,选择刚刚建立好的server

6. 其他

a) 学习建立strutsdev-mode,好处在于我们修改了配置文件的时候能够自动热替换

b) 建立jar文件对应的源码D:/share/tools/struts-2.1.6/src/core/src/main/java,以及xwork对应的源码,以及对应的javadoc location,(更好的方式是建立自己的user-library

c) 浏览struts的目录

d) 认识eclipse jee的项目部署目录,认识如何修改webappcontext-root,项目copy改名后可能会出现的问题

e) package explorer 建立jar的源文件和目标关联,navigator 观察所有的内容

f) 认识Action的后缀名,在struts2默认中,带不带action都可以

常见问题:

1. struts.xml不自动提示

a) window preferences 搜索 catalog add

b) 选择key typeURI

c) key: http://struts.apache.org/dtds/struts-2.0.dtd

d) location:对应的dtd文件,位于struts-core包中,解压开,指定相应位置,如:D:\share\0750_Struts2.1.6\soft\struts-2.1.6\lib\struts2-core-2.1.6\struts-2.0.dtd

2. 导入示例项目

a) 注意JDK的版本,应该是JDK6,否则会出class version的问题

b) 如果总是项目出问题,可以重建项目,单独拷文件

c) 还有一种情况是项目右键,properties java compiler选择6.0

d) 另外,在tomcat配置中也要使用jdk6

3. devMode设为true就会出问题空指针问题

a) tomcat路径带了空格

4. 在使用ActionContext.getContext().get(request)取不到对象,为null

a) web.xml不要使用2.0filter,用新的

5. action的试验中,遇到一个奇怪的bug

a) default-action-ref指定一个action

b) *_*映射

c) 在地址栏中访问一个不存在的action,如adfsdfsfs

d) 结果居然会映射到*_*

e) 如果换成*__*就没问题了

f) 靠,只能认为是bug

g) 下次用*-*,不用*_*

Action

1. 实现一个Action的最常用方式:从ActionSupport继承

2. DMI动态方法调用

3. 通配符配置 * {1} {2}

a) *_*

4. 接收参数的方法(一般用属性或者DomainModel来接收)

5. 简单参数验证addFieldError

a) 一般不使用Struts2UI标签

6. 访问Web元素

a) Map类型

i. IoC

ii. 依赖Struts2

b) 原始类型

i. IoC

ii. 依赖Struts2

7. 包含文件配置

8. 默认action处理

Result

1. 常用四种类型:

a) dispatcher(默认)

b) redirect

c) chain

d) redirectAction

2. 全局结果集

a) global-results | extends

3. 动态结果(了解)

a) action中保存一个属性,存储具体的结果location

4. 传递参数

a) 客户端跳转才需要传递

b) ${}表达式(不是EL

OGNL

1. Object Graph Navigation Language

2. 想初始化domain model,可以自己new,也可以传参数值,但这时候需要保持参数为空的构造方法

3. 其他参考ognl.jsp

4. 什么时候在stack中会有两个Actionchain

Struts-Tags

1. 通用标签:

a) property

b) set

i. 默认为action scope,会将值放入requestActionContext

ii. pagerequestsessionapplication

c) bean

d) include(对中文文件支持有问题,不建议使用,如需包含,改用jsp包含)

e) param

f) debug

2. 控制标签

a) if elseif else

b) iterator

i. collections map enumeration iterator array

c) subset

3. UI标签

a) theme

i. simple xhtml(默认) css_xhtml ajax

4. AJAX标签

a) 补充

5. $ # %的区别

a) $用于i18nstruts配置文件

b) #取得ActionContext的值

c) %将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用

i. 参考<s:property <s:include

定义自己的theme

1. css(覆盖struts2原来的css

2. 覆盖单个文件

3. 定义自己的theme

4. 实战:

a) 把所有主题定义为simple

b) fielderror特殊处理

c) 自己控制其他标签的展现

1. doc文档:struts-tags

2. 设计约定(编码规定)

a) 原则:简单就是美

b) 库名:项目名

c) 表的命名:_Model

d) 字段:保持和属性名一致(尽量不要起名和数据库命名冲突)

e) 用层来划分包com.bjsxt.bbs.action model(bean) service dto(vo)

f) Action XXXXAction

g) *-*

h) /

i) /admin

j) package actionadminAction

项目开发顺序-BBS2009的名义

1. 建立界面原型

2. 建立Struts.xml

a) 确定namespace

b) 确定package

c) 确定Action的名称,空的方法

d) 确定Result

e) 将界面原型页面进行修改,匹配现有设置

f) 测试

g) 做好规划!!!!!

3. 建立数据库(或者实体类)

4. 建立Model

5. 建立Service层(后面讲了Hibernate后再完善)

a) 此时可以使用JUnit进行单元测试了

6. 着手开发

声明式异常处理

1. Actoin中进行异常映射

2. package中进行全局异常映射

3. 使用继承共用异常映射

4. Struts2中异常处理由拦截器实现(观察struts-default.xml

a) 实际上Struts2的大多数功能都由拦截器实现

I18N

1. I18N原理

a) ResourceBundleLocale的概念

b) 资源文件

c) native2ascii

2. Struts的资源文件

a) Action Package App

b) 一般只用APP

i. struts.xml custom.i18n

c) PropertiesEditor插件

i. 解压

ii. features plugin覆盖到myeclipse中的eclipse目录里

d) 动态语言切换

i. request_locale=en_US

Struts拦截器以及源码解析

1. Struts架构图

a) 见文档

2. Struts执行过程分析

3. Interceptor拦截器过程模拟

4. 定义自己的拦截器

a) acegi spring security

5. 使用token拦截器控制重复提交(很少用)

6. 类型转换

a) 默认转换

i. 日期处理

b) 写自己的转换器:

public class MyPointConverterextends DefaultTypeConverter{

@Override

public Object convertValue(Object value, Class toType) {

if(toType == Point.class) {

Point p =new Point();

String[] strs = (String[])value;

String[] xy = strs[0].split(",");

p.x = Integer.parseInt(xy[0]);

p.y = Integer.parseInt(xy[1]);

return p;

}

if(toType == String.class) {

return value.toString();

}

return super.convertValue(value, toType);

}

}

public class MyPointConverterextends StrutsTypeConverter{

@Override

public Object convertFromString(Map context, String[] values, Class toClass) {

Point p =new Point();

String[] strs = (String[])values;

String[] xy = strs[0].split(",");

p.x = Integer.parseInt(xy[0]);

p.y = Integer.parseInt(xy[1]);

return p;

}

@Override

public String convertToString(Map context, Object o) {

//TODO Auto-generated method stub

return o.toString();

}

}

c) 三种注册方式:

i. 局部:XXXAction-conversion.properties

1. p(属性名称) = converter

ii. 全局:xwork-conversion.properties

1. com.xxx.XXX(类名)= converter

iii. Annotation

d) 如果遇到非常麻烦的映射转换

i. request.setAttribute();

ii. session

Struts2总结

1. Action

a) namespace(掌握)

b) path(掌握)

c) DMI(掌握)

d) wildcard(掌握)

e) 接收参数(掌握前两种)

f) 访问request等(掌握Map IOC方式)

g) 简单数据验证(掌握addFieldError<s:fieldError

2. Result

a) 结果类型(掌握四种,重点两种)

b) 全局结果(掌握)

c) 动态结果(了解)

3. OGNL表达式(精通)

a) # % $

4. Struts标签

a) 掌握常用的

5. 声明式异常处理(了解)

6. I18N(了解)

7. CRUD的过程(最重要是设计与规划)(精通)

8. Interceptor的原理(掌握)

9. 类型转换(掌握默认,了解自定义)

<!--EndFragment-->
分享到:
评论

相关推荐

    我的struts2的总结

    在Struts2项目中,使用SVN或CVS可以帮助开发者追踪代码变更历史、合并分支等操作,从而提高团队开发效率。 ### Struts2 Null异常问题 原文中提到“struts2 null异常”,这通常指的是在使用Struts2框架时遇到的...

    struts2学习笔记总结

    Action类是Struts2处理请求的核心,每个Action类对应一个具体的业务操作。结果则表示Action执行后的跳转路径,可以是JSP、FreeMarker模板或其他结果类型。Struts2支持多种结果类型,如dispatcher(默认,转发到JSP)...

    struts2学习总结

    这意味着在Struts1中,Action类不仅负责业务逻辑处理,还需要处理与视图相关的操作。 - **Struts2**则更加贴近经典的MVC模式,将业务逻辑与视图分离得更为彻底。在Struts2中,Action类只负责业务逻辑处理,不涉及...

    Struts2知识点总结

    此外,Struts2的生命周期是从用户向服务器发送请求开始,经过StrutsPrepareAndExecuteFilter核心过滤器,然后是ValueStack值栈操作,再经过一系列内置或自定义拦截器的处理,最后到达对应的Action类,Action处理完毕...

    struts2 学习重点笔记

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

    struts2学习笔记(完美总结)——转自OPEN经验库

    Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...

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

    "educationSelectItemInfos" executeResult="false" /&gt; ...在实际项目中,还需要结合Hibernate进行持久层操作,以及Spring进行依赖注入和事务管理,共同构建出完整的SSH(Struts2 + Hibernate + Spring)企业级应用。

    struts2大总结

    通过观看"83_尚学堂马士兵_Struts2_总结.avi"这个视频教程,可以深入学习这些知识点,并通过实际操作来巩固理解。该教程可能涵盖了如何创建一个简单的Struts2应用,配置Action,处理表单提交,使用拦截器,以及异常...

    struts2源码分析总结

    Struts2是一个流行的Java Web框架,它简化了MVC(模型-视图-控制器)架构的实现。本文将深入探讨Struts2的源码分析,特别是关于StrutsPrepareAndExecuteFilter的初始化过程,这是Struts2的核心组件之一,负责处理...

    Struts2个人总结

    Struts2是一个强大的Java web开发框架,主要用于构建和维护可扩展且易于管理的企业级应用程序。它的核心是基于MVC(Model-View-Controller)设计模式,使得开发者可以更有效地分离业务逻辑、数据处理和用户界面。...

    Struts2技术总结

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

    Struts2 tiles操作例子

    在探讨“Struts2 tiles操作例子”这一主题时,我们首先需要理解Struts2框架以及tiles插件在其中扮演的角色。Struts2是Apache软件基金会赞助的一个开源Web应用框架,它基于MVC(Model-View-Controller)设计模式,...

    关于struts实验时的临时总结

    ##### 总结2:在Button或其它标签中嵌入图片的方法 **问题描述**:在Struts2中,希望在按钮上显示自定义的图片而非默认文本。 **解决方案**: 1. **使用`s:submit`标签**:通过设置`src`属性指向图片路径。 2. **...

    Struts2的总结和Strut2集成Spring

    ### Struts2与Spring的集成详解 #### Struts2框架概览 Struts2是Apache组织下的开源项目,它是基于MVC模式的Web应用框架,主要用于构建企业级Java Web应用程序。Struts2提供了丰富的标签库,支持AJAX,且与各种第...

    struts2的总结

    4. **拦截器机制**:Struts2引入了强大的拦截器机制,能够处理请求前后的操作,如验证、日志记录等,使得开发者可以更加关注业务逻辑而不是框架细节。 #### 三、Struts2的基本组成 1. **Jar包**:Struts2依赖一...

    Struts 2实战 struts2 in Action

    这些案例覆盖了从简单的CRUD操作到复杂的业务逻辑处理等多个方面,帮助读者逐步掌握Struts 2的使用技巧。 ### 总结 《Struts 2实战 Struts2 in Action》这本书不仅介绍了Struts 2的基本概念和技术细节,更重要的是...

Global site tag (gtag.js) - Google Analytics