首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2 convention插件的施用(一)

2012-10-28 
struts2 convention插件的使用(一)???struts2 convention插件的相关文章在网络上还很少,今天研究了一下官

struts2 convention插件的使用(一)

?

?

?

struts2 convention插件的相关文章在网络上还很少,今天研究了一下

官方文档?http://cwiki.apache.org/WW/convention-plugin.html

?

?

?

附件内源码环境(下载请到页尾)

Dynamic Web Project

eclipse3.3

jdk1.6

tomcat6

?

必要jar列表

?

commons-fileupload-1.2.1.jar

commons-logging-1.0.4.jar

freemarker-2.3.13.jar

ognl-2.6.11.jar

struts2-convention-plugin-2.1.6.jar

struts2-core-2.1.6.jar

xwork-2.1.2.jar

?
    <!-- ============================ 使用struts2处理页面请求 ============================ --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern></filter-mapping>

    ?

    ?

    struts2.xml配置如下

    ?

    ?

    <?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.devMode" value="true" /><!-- 国际化资源重新加载  --><constant name="struts.i18n.reload" value="true" /><!-- 配置文件重新加载 --><constant name="struts.configuration.xml.reload" value="true" /><!-- convention类从新加载 --><constant name="struts.convention.classes.reload" value="true" /><!--++++++++++++++++++++++++++++++++++++++++++++++++开发模式结束 --><!-- 主题 --><constant name="struts.ui.theme" value="simple" /><!-- 地区 --><constant name="struts.locale" value="zh_CN" /><!-- 国际化编码 --><constant name="struts.i18n.encoding" value="UTF-8" /><!--  扩展--><constant name="struts.action.extension" value="action,do,jsp" /><!-- 启用动态方法调用 --><constant name="struts.enable.DynamicMethodInvocation" value="true" /><!-- 设置Struts 2是否允许在Action名中使用斜线 --><constant name="struts.enable.SlashesInActionNames" value="false" /><!-- 结果资源所在路径 --><constant name="struts.convention.result.path" value="/"/> <!-- action后缀 --><constant name="struts.convention.action.suffix" value="Action"/> <!-- 名称首字母小写 -->    <constant name="struts.convention.action.name.lowercase" value="true"/>     <!-- 分隔符 一个action名字的获取。比如为HelloWorldAction。按照配置,actionName为hello_world。 -->    <constant name="struts.convention.action.name.separator" value="_"/>     <!-- 禁用扫描 -->    <constant name="struts.convention.action.disableScanning" value="false"/>     <!-- 默认包 -->    <constant name="struts.convention.default.parent.package" value="default"/>     <!--确定搜索包的路径。只要是结尾为action的包都要搜索。basePackage按照默认不用配置,如果配置,只会找以此配置开头的包。locators及locators.basePackage都是一组以逗号分割的字符串。 -->    <constant name="struts.convention.package.locators" value="actions"/>     <!-- 禁用包搜索 -->    <constant name="struts.convention.package.locators.disable" value="false"/>     <!-- 基于什么包 -->    <constant name="struts.convention.package.locators.basePackage" value="com.sunflower.actions"/>    <!--  排除的包 -->    <constant name="struts.convention.exclude.packages" value="org.apache.struts.*,org.apache.struts2.*,org.springframework.web.struts.*,org.springframework.web.struts2.*,org.hibernate.*"/>    <!-- 包含的包 -->    <!-- 包括的jar,一般用于大型项目,其action一般打包成jar -->    <constant name="struts.convention.action.includeJars" value="" />    <!-- 结果类型 -->    <constant name="struts.convention.relative.result.types" value="dispatcher,freemarker"/>     <!--      如果此值设为true,如果一个action的命名空间为/login,名称为HelloWorldAction。result返回值是success,默认会找到/WEB-INF/pages/login/hello_world.jsp(如果有hello_world_success.jsp就找这个文件,连接符“_”是在<constant name="struts.convention.action.name.separator" value="_"/>中配置的)。如果有一个action的result返回值是“error”,就会找/WEB-INF/pages /login/hello_world_error.jsp。       如果此值设为false,如果一个action的命名空间为/login,名称为HelloWorldAction。result返回值是success,默认会找到/WEB- INF/pages/login/hello_world/index.jsp(如果有success.jsp就找这个文件)。如果有一个action的result返回值是“error”,就会找/WEB-INF/pages /login/hello_world/error.jsp。      -->    <constant name="struts.convention.result.flatLayout" value="true"/>    <constant name="struts.convention.action.mapAllMatches" value="false"/>     <!-- 检查是否实现action -->    <constant name="struts.convention.action.checkImplementsAction" value="true"/>    <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/><constant name="struts.convention.redirect.to.slash" value="true"/><package name="default" extends="struts-default"><interceptors><interceptor-stack name="defaultStack"><interceptor-ref name="exception" /><interceptor-ref name="servletConfig" /><interceptor-ref name="actionMappingParams" /><interceptor-ref name="staticParams" /><interceptor-ref name="params" /></interceptor-stack></interceptors></package></struts>

    ?

    ?

    NavigatorAction源码

    ?

    package com.sunflower.actions;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Actions;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;import com.opensymphony.xwork2.ActionContext;@Results( {@Result(name = "next", location = "/next.jsp", type = "dispatcher"),@Result(name = "error", location = "error.jsp", type = "dispatcher"),@Result(name = "redirectAction", location = "./child/child", type = "redirectAction"),@Result(name = "redirect", location = "http://sunflowers.iteye.com", type = "redirect") })public class NavigatorAction {private String actionName;public void setActionName(String actionName) {this.actionName = actionName;}public String index() {outputMsg("method:index");return "next";}public String execute() {outputMsg("method:execute,no index method");return "next";}public String error() {try {throw new Exception();} catch (Exception e) {outputMsg(e);return "error";}}public String redirect() {System.out.println("重定向:rediret");return "redirect";}public String redirectAction() {outputMsg("navigatorAction 跳转而来,原地址是navigator!redirectAction.action,请查看地址栏");return "redirectAction";}@Action(value = "/test/childTest")public String action() {outputMsg("@action ---method:action");return "next";}@Actions( { @Action(value = "/test/action1"),@Action(value = "/test/action2") })public String actions() {outputMsg("@actions ---method:actions,action=" + actionName);return "next";}private void outputMsg(Object msg) {System.out.println(msg);ActionContext.getContext().put("msg", msg);}}

    ?

    ?

    ?ChildAction源码

    ?

    package com.sunflower.actions.child;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;@Results( {@Result(name = "next", location = "next.jsp", type = "dispatcher")})public class ChildAction {public String execute() {System.out.println("childAction 默认方法执行");return "next";}}

    ?

    ?index.jsp源码
    <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>struts2 convention测试</title><style>* {line-height: 2em;}a:visited,a:hover,a:active,a:link {color: #00f;}</style></head><body>后台Action&nbsp;<ul name="code"><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><style>*{line-height:3em;}</style></head><body><h1>struts2 &nbsp;&nbsp;&nbsp;convention插件使用测试</h1>测试信息<br />${msg}<br /><a href="#" onclick="window.history.go(-1);return false;">返回</a></body></html>

    ?

    ?

    ?child/next.jsp源码

    ?

    <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><style>*{line-height:3em;}</style></head><body>child/next.jsp:{msg}</body></html>

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?


    type Status report

    message /struts/WEB-INF/page/child/next.jsp

    description The requested resource (/struts/WEB-INF/page/child/next.jsp) is not available.
    这是怎么回事?希望你能给个解答!

热点排行