struts2基础(续)
来源:互联网 发布:手机4g网络怎么加速 编辑:程序博客网 时间:2024/06/08 05:08
昨天发表完第一篇博客之后就停电了,今天就让我赶紧把昨天学习的东西继续拿来分享。
闲话不多说,昨天只是演示了一个最基础的struts2框架的小知识,那么接下来就让我介绍一下关于struts2的细节。
首先让我们来看一个重要的属性:namespace
我们知道,这个属性是在struts.xml文件<package>中,其作用是定义该包的命名空间。命名空间可以用来区别同名的Action。在一个命名空间内Action名必须是唯一的。但是不同的命名空间中可以用同名的Action。
- 如果某个包没有指定namespace,则该包使用默认的命名空间,默认的命名空间总是“”。
- namespace决定了action的访问路径,默认为“”,可以接受所有路径的action。
- namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/(action的name值).aciton,/xxx/(action的name值).aciton,/xxx/yyy/ (action的name值).action
- namespace最好用模块来进行命名(这样就是更好的为了确定模块的作用,更明确)
public class HelloWorldAction{private String message;....public String execute() throws Exception{this.message = "我的第一个struts2应用";return "success";}public String other() throws Exception{this.message = "第二个方法";return "success";}注:
假设访问上面action的URL路径为:/struts/test/helloworld.action
要访问action的other() 方法,我们可以这样调用:
/struts/test/helloworld!other.action
如果不想使用动态方法调用,我们可以通过常量struts.enable.DynamicMethodInvocation关闭动态方法调用。
<constantname="struts.enable.DynamicMethodInvocation"value="false"/>
效果:
那么就会在页面上显示“第二个方法”
提示:
这种调用方式会带来安全隐患,所以在struts2版本2.3.15.2之后就不能使用DMI动态调用方法
默认的action
如果请求一个不存在的action,结果将是HTTP404错误,可以指定一个默认的action,如果一个请求没有其他的action匹配,那么默认的action将被执行。 默认的action使用default-action-ref元素来声明:
源代码:
<package name="defaultAction" namespace="/default“ extends="struts-default"> <default-action-ref name="error"></default-action-ref> <action name="defaultaction“ class="org.lesson05.DefaultAction"> <result name="success">/defaultAction.jsp</result> </action> <action name="error"> <result>/error.jsp</result> </action></package>解释:
我来大致解释一下配置这个的作用,比如我们开发的系统可能正在维护或者升级,我们的客户访问不到他们想访问的页面,而我们不能把报404错误的页面反馈给用户,那样会给用户留下极差的印象。所以我们可以单独设计一个错误页面,里面设置我们想要反馈给用户的信息,这样就可以将用户的意见大大降低。
多个Action共享一个视图--全局result配置
当多个action中都使用到了相同视图,这是我们应该把result定义为全局视图。struts提供了全局forward,struts2中也提供了相似功能:
源代码:
<package ....><global-results><result name="message">/message.jsp</result></global-results></package>解释:
这里就是简化代码的最经典的反映,多个action共享同一个视图。
为Action的属性注入值
public class HelloWorldAction{private String savePath;public String getSavePath() {return savePath;}public void setSavePath(String savePath) {this.savePath = savePath;} ......}
<package name="itcast" namespace="/test" extends="struts-default"><action name="helloworld" class="cn.itcast.action.HelloWorldAction" ><param name="savePath">/images</param><result name="success">/WEB-INF/page/hello.jsp</result></action></package>解释:
指定需要Struts2处理的请求后缀
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.action.extension" value="do"/></struts>补充:
<constant name="struts.action.extension" value="do,go"/>
在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过<include>元素指定多个配置文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><include file="struts-user.xml"/><include file="struts-order.xml"/></struts>
解释:
- struts2基础(续)
- struts2 基础(3)
- struts2基础(1)
- Struts2基础(1)
- Struts2基础(2)
- Struts2基础(3)
- Struts2基础(4)
- struts2(基础1)
- struts2(基础2)
- struts2(基础3)
- struts2(基础4)
- Struts2.1笔记(三):Struts2基础
- (一)struts2之基础
- struts2基础梳理(一)
- struts2基础梳理(二)
- struts2基础
- Struts2基础
- struts2基础
- Nyoj-61 传纸条(一)(双线dp)
- PAT 1037. Magic Coupon (25)
- 第二学期第一周项目2--胖子的烦恼
- 关于map task、reduce task和hdfs块大小的理解
- 日期结构体
- struts2基础(续)
- uva 993 - Product of digits
- 模式识别(一):概念介绍
- Ubuntu12.04下安装numpy and matplotlib(亲测可行)
- 《实时碰撞检测算法技术》读书笔记(四):OBB计算
- 浅谈C/C++中的static和extern关键字
- Android 程序锁
- 跟我一起写Makefile(三):书写规则
- C++:静态成员与常成员