首页 > 代码库 > struts零配置的简单实现(一)

struts零配置的简单实现(一)

所需要的包:

  • struts2-config-browser-plugin-2.3.15.2.jar
  • struts2-convention-plugin-2.3.15.2.jar

  要注意的是,添加这两个jar包之后也要把相关的struts的jar包换成相应的版本,xwork-core也要是相应的版本,不然就是各种报错

  

struts.xml的配置如下:

 <!-- 设置映射页面的路径 -->
   <constant name="struts.convention.result.path" value="http://www.mamicode.com/WEB-INF/jsp" /> 
  
   <!-- 设置扫描Action类的关键字 -->
   <constant name="struts.convention.package.locators" value="http://www.mamicode.com/action" />
  
   <!-- 设置映射页面的命名分隔符 -->
   <constant name="struts.convention.action.name.separator" value="http://www.mamicode.com/-" />

 

1、struts.convention.result.path的作用:

  指定当页面访问action时,响应的页面所在的路径

2、struts.convention.package.locators的作用:

  指定在那些包下扫描**Action,只要包名中含有指定的字段即可

3、struts.convention.action.name.separator的作用:

  指定用于切割Action类去除Action后缀后的那一部分的字符,从而形成映射该类的一个页面名称,如:

  UserTestAction --> UserTest --> user-test.jsp

  它会根据大写字母来进行分割的,并且会把大写字母变成小写

 

空间命名的确定:

  由struts.convention.package.locators所指定的字符后的部分组成,如若:

    <constant name="struts.convention.package.locators" value="http://www.mamicode.com/action" />

    对于com.lzj.www.action,其空间命名为"/",

    对于com.lzj.www.action.test,其空间命名为"/test"

 

资源名的确定(也就是所要访问的action)

  由Action类名去掉Action的后缀组成,在这里资源名实质就是经过struts.convention.action.name.separator处理过后的结果,如若:

    UserAction,其资源名为:"user"

    TestStrutsAction,其资源名为:"test-struts"

 

访问方式:(假设项目名为:StrutsTest)

  若:包名为:com.lzj.www.action,有一个Action:UserAction

  则访问方式为:http://localhost:8080/StrutsTest/user

  该Action所映射的页面:user.jsp

  访问url分析:

    /user的由来:首先由com.lzj.www.action可得空间命名为"/",再通过UserAction可得资源名为"user"

  若:包名为:com.lzj.www.action.test,有一个Action:TestStrutsAction

   则访问方式为:http://localhost:8080/StrutsTest/test/test-struts

  该Action所映射的页面:test-struts.jsp(该页面要放到struts.convention.result.path所指定的路径下的test文件夹下,也就相当于把空间命名转换成了一个文件夹)

 

可能会出现的异常:

  1、  java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.startsWith...

  显而易见:问题出在commons.lang.jar上:

    可能性:1、版本冲突,可能存在两个不同版本的jar包

        2、版本过低(我遇到的就是这样..)

  2、  java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor...

    导入asm相关的包即可

struts零配置的简单实现(一)