马士兵struts2视频作者笔记

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 “action” adminAction

项目开发顺序-以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)         ResourceBundle和Locale的概念

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 MyPointConverter extends 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();

       }

       returnsuper.convertValue(value, toType);

    }

 

}

public class MyPointConverter extends 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

补充视频中讲解的内容

1.         Lambda表达式

2.         验证框架

3.         UI标签

4.         类型转换中的异常处理

5.         上传与下载文件

6.         Struts2注解

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.         类型转换(掌握默认,了解自定义)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值