一、Action类的三种写法
1.既不继承也不实现,普通方法
代码:
public class UserAction
{
private String userName;
public void setUserName(String userName)
{
this.userName = userName;
}
public String login()
{
System.out.println("UserAction.login()" + userName);
return "login";
}
public String register()
{
System.out.println("register()" + userName);
return "register";
}
}
2.继承自ActionSupport
代码:
public class UserAction extends ActionSupport
{
public String login()
{
System.out.println("UserAction.login()");
return SUCCESS;
}
}
3.实现Action类
代码:
public class UserAction implements Action
{
public String login()
{
System.out.println("UserAction.login()");
return "success";
}
@Override
public String execute() throws Exception
{
return null;
}
}
二、Struct 2.0中的通配符
在下面的代码中,*表示传过来的参数通配符,{1}的值和*的值一样。
<action name="down_*" class="cn.itcast.e_fileupload.DownAction" method="{1}">
三、Struct 2.0中的常量与路径
1.Struts2中常用的常量
指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出
<constant name="struts.i18n.encoding" value="UTF-8"/>
自定义后缀修改常量
<constant name="struts.action.extension" value="do"/>
设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭
<constant name="struts.serve.static.browserCache" value="false"/>
当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
<constant name="struts.configuration.xml.reload" value="true"/>
开发模式下使用,这样可以打印出更详细的错误信息
<constant name="struts.devMode" value="true" />
默认的视图主题
<constant name="struts.ui.theme" value="simple" />
与spring集成时,指定由spring负责action对象的创建
<constant name="struts.objectFactory" value="spring" />
该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为 false
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
上传文件的大小限制
<constant name="struts.multipart.maxSize" value=“10701096"/>
2.Struts2中指定多个配置文件
3.Struts2的Action名称搜索机制
1、获得请求路径的URI,例如url是:
/Struts2_01/hello_a/a/b/helloWorld.action
2、首先查询namespace为/hello_a/a/b的package,
如果存在这个package,则在这个package中查询名字为helloWorld的
action,如果不存在这个package则转步骤3
3、查询namespace为/hello_a/a的package,
如果存在这个package,则在这个package中寻找名字为helloWorld的
action,如果不存在这个package,则转步骤4
4、查询namespace为/hello_a的package,
如果存在这个package,则在这个package中寻找名字为helloWorld的
action,如果仍然不存在这个package,则转步骤5
5、查询默认的namaspace的package
查询名字为helloWorld的action(默认的命名空间为空字符串“/” )
如果还是找不到,页面提示404找不到action的异常。

本文详细介绍了Struts2框架中的Action类三种写法,并解析了Struts2.0中的通配符、常量配置及Action名称搜索机制等内容。
1万+

被折叠的 条评论
为什么被折叠?



