3、Struts2之咬文嚼字

来源:互联网 发布:网络被骗有追回钱吗 编辑:程序博客网 时间:2024/06/12 01:29

读文章可以咬文嚼字,读代码也可以。今天随意(随意是指读哪个类很随意,读起来实际是咬文嚼字)地阅读Struts2的几个类的代码 ,有点心得,特记录如下。

eclipse的workspace中,很自然会先读org.apache.struts2 这个包的类,因为它是最前面显示。StrutsStatics 接口没有任何方法,有几个final static 变量。这样设计,是为了让类去实现该接口,方便直接使用静态变量。其实一般做法是,写一个常量类,里面尽是一些静态常量,谁要用就直接用类名来引用即可。如果说这样每使用一个常量便要多写个类名,那在JDK5中可以通过静态import来实现省略类名的书写。这两种做法中,我比较认同后者。

public interface StrutsStatics {
    
/*......*/

    
public static final String PAGE_CONTEXT = "com.opensymphony.xwork2.dispatcher.PageContext";

    
public static final String STRUTS_PORTLET_CONTEXT = "struts.portlet.context";

}

在读Struts2的异常类StrutsException时,发现它扩展了XWorkException,而XWorkException是属于WebWork框架的(准确地说是XWork)。仔细一看,又发现StrutsException和XWorkException都实现了Locatable接口。既然StrutsException 扩展了 XWorkException ,就自然也成为Locatable的子类啦,为什么还要去显式实现Locatable接口呢?再细看,StrutsException并没有实现Locatable的方法。这样看来,StrutsException 显式实现Locatable接口是多此一举了。也许唯一的作用是让人一看就可直接知道StrutsException是Locatable的子类。

/*
  StrutsException 
*/
public class StrutsException extends XWorkException implements Locatable 

/*
  XWorkException
*/
public class XWorkException extends RuntimeException implements Locatable 

/*
  Locatable 接口只有一个方法
*/
public interface Location {
    
public Location getLocation();
}

在RequestUtils类中,我发现有个方法的判断语句的写法不错,但又不太准确。代码如下:

public static String getServletPath(HttpServletRequest request) {
if (null != servletPath && !"".equals(servletPath)) {
      
return servletPath;
}

一般判断字符串既不为null又不为空(""),会是以下两种写法。

if (servletPath != null && !servletPath.equals(""))

if (servletPath != null && servletPath.length()>0)
原创粉丝点击