传智播客——Struts2初步

国庆放假回来,接着开始我们的J2EE学习。从今天开始,我们将持续两天的Struts2学习,前面我们学习了Struts1,那么既然有了Struts1,为何还要推出Struts2。主要因为Struts2有以下优点:①Struts2 APIServlet API不存在紧密的耦合Struts2提供了拦截器 ③Struts2提供了类型转换器 ④Struts2支持多种表现层技术 ⑤Struts2可以对指定方法进行输入校验

1.     搭建Struts2开发环境步骤:

1)  找到开发Struts2应用需要使用到的jar文件

2)  编写Struts2的配置文件

3)  web.xml中加入Struts2 MVC框架启动配置

2.     Struts.xml中配置包

struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。配置包时必须指定name属性,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间。该属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“”(空字符串)。通常每个包都应该继承struts-default包, struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型。而Struts2很多核心的功能都是通过这些内置的拦截器实现

3.     访问路径:访问struts2中的actionURL路径由两部份组成:包的命名空间+action的名称

4.     Action配置中的各项默认值:

1)  如果没有为action指定class,默认是ActionSupport

2)  如果没有为action指定method,默认执行action中的execute() 方法

3)  如果没有指定resultname属性,默认值为success

5.     指定需要Struts 2处理的请求后缀:<constant name="struts.action.extension" value="do,go"/>

6.     Struts2提供了多种Result类型:dispatcher(默认值) redirect redirectAction plaintext

1)  如果重定向的action在别的命名空间下,需要指定Result的参数actionNamenamespace

2)  result中还可以使用${属性名}表达式,表达式里的属性名对应action中的属性,如:<result type="redirect">view.jsp?id=${id}</result>

7.     为应用指定多个配置文件:使用include标签

8.     定义Action可以使用!+方法名调用指定方法,如果不想使用动态方法调用,我们可以通过常量struts.enable.DynamicMethodInvocation关闭动态方法调用;也可以使用通配符定义action(指定actionname属性值为XXX_*,method属性值为{1}

9.     全局结果:当多个action中都使用到了相同result,这时我们应该把result定义为全局结果。通过<global-results>标签设置全局结果。

10.  Struts2可以通过基本类型或复合类型接收请求参数

11.  自定义类型转换器:需要继承DefaultTypeConverter类。注册时在Action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassNameAction的类名,后面的-conversion.properties是固定写法。在properties文件中的内容为:属性名称=类型转换器的全类名

12.  全局类型转换器:在WEB-INF/classes下放置xwork-conversion.properties文件 。在properties文件中的内容为:待转换的类型=类型转换器的全类名

13.  访问或添加request/session/application属性:有两种方法,方法一是使用ActionContext来得到相应作用域并添加和访问属性;方法二是使用ServletActionContext来得到原始的Servlet作用域并实现对属性的添加和访问

14.  文件上传:

1)  WEB-INF/lib下加入commons-fileupload-1.2.1.jarcommons-io-1.3.2.jar

2)  form表的enctype设置为:"multipart/form-data"

3)  Action类中添加以下属性:

public String upload() throws Exception{

    String realpath = ServletActionContext.getServletContext().getRealPath("/images");

    File file = new File(realpath);

    if(!file.exists()) file.mkdirs();

    FileUtils.copyFile(uploadImage, new File(file, uploadImageFileName));

    return "success";

  }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值