struts2配置

引入相关jar包之后进行如下配置:
1、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

 <!-- 配置前端控制器 -->
  <filter>
    <filter-name>Struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
  </filter>

  <filter-mapping>
    <filter-name>Struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>  

</web-app>

2、系统会默认搜索struts.xml,因此action在该文件中配置
struts.xml文件配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>

    <!-- 引入不同的xml文件 -->
    <!-- 引入公共模块 -->
    <include file="struts-common.xml"/>
    <!-- 引入资费模块 -->
    <include file="struts-cost.xml"/>
    <!-- 引入登录模块 -->
    <include file="struts-login.xml"/>

</struts>

sturts-common.xml:(定义公共请求部分,如拦截器)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>

    <!-- 自定义包,用于封装通用的配置,仅仅是用于复用代码的 -->
    <package name="netctoss" extends="json-default">
        <!-- 注册拦截器 -->
        <interceptors>
            <!-- 登录检查拦截器 -->
            <interceptor name="loginInter" 
                class="com.netctoss.interceptor.LoginInterceptor"/>
            <!-- 登录检查拦截器栈 -->
            <interceptor-stack name="loginStack">
                <interceptor-ref name="loginInter"/>
                <interceptor-ref name="defaultStack"/>
            </interceptor-stack>
        </interceptors>

        <!-- 覆盖默认拦截器的引用,相当于当前包下所有的Action都默认使用该拦截器 -->
        <default-interceptor-ref name="loginStack"/>

        <!-- 定义全局的Result,当前包下所有的Action都可以直接使用该Result,即相当于每个Action下都追加了该Result配置 -->
        <global-results>
            <result name="login" type="redirectAction">
                <param name="namespace">/login</param>
                <param name="actionName">toLogin</param>
            </result>
            <result name="error">
                /WEB-INF/main/error.jsp
            </result>
        </global-results>       
    </package>

</struts>

struts-cost.xml:(业务部分action配置)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>

    <!-- 资费模块配置,注意该package继承与netctoss包,这样就引入了拦截器和全局action -->
    <package name="cost" namespace="/cost"
        extends="netctoss">
        <!-- 查询的Action method可以省略,当省略时Struts2会自动调用execute方法-->
        <!--result不指定type时则为转发类型-->
        <action name="findCost"
            class="com.netctoss.action.cost.FindCostAction">
            <param name="pageSize">4</param>
            <result name="success">
                /WEB-INF/cost/findCost.jsp
            </result>
            <result name="error">
                /WEB-INF/cost/error.jsp
            </result>
        </action>
        <!-- 删除Action -->
        <action name="deleteCost"
            class="com.netctoss.action.cost.DeleteCostAction">
            <result name="success" type="redirectAction">
                findCost
            </result>
        </action>
        <!-- 跳转到新增页面,struts不指定类的时候则默认调用ActionSupport类execute方法返回success -->
        <action name="toAddCost">
            <result name="success">
                /WEB-INF/cost/addCost.jsp
            </result>
        </action>
        <!-- 新增保存Action -->
        <action name="addCost"
            class="com.netctoss.action.cost.AddCostAction">
            <result name="success" type="redirectAction">
                findCost
            </result>
        </action>
        <!-- 校验资费名Action,result type为json类型,该处具体java代码见下-->
        <action name="checkCostName"
            class="com.netctoss.action.cost.CheckCostNameAction">
            <result name="success" type="json">
                <param name="root">info</param>
            </result>
        </action>
        <!-- 打开修改页面 -->
        <action name="toUpdateCost"
            class="com.netctoss.action.cost.ToUpdateCostAction">
            <result name="success">
                /WEB-INF/cost/updateCost.jsp
            </result>
        </action>
        <!-- 修改保存Action -->
        <action name="updateCost"
            class="com.netctoss.action.cost.UpdateCostAction">
            <result name="success" type="redirectAction">
                findCost
            </result>
        </action>
    </package>

</struts>

上面result type为json时部分代码,定义为map类型,返回struts2自动转成了json类型:

private Map<String,Object> info =
        new HashMap<String,Object>();

    public String execute() {
        ICostDAO dao = DAOFactory.getCostDAO();
        try {
            Cost cost = dao.findByName(name);
            if(cost == null) {
                //没查到,说明没重名,验证通过
                info.put("pass", true);
                info.put("message", "资费名有效.");
            } else {
                //查到了,说明重名了,验证失败
                info.put("pass", false);
                info.put("message", "资费名重复.");
            }
        } catch (DAOException e) {
            e.printStackTrace();
            //发生异常时,给予错误的提示
            info.put("pass", false);
            info.put("message", "系统异常,请联系系统管理员.");
        }
        return "success";
    }

struts-login.xml:(登录action)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>

    <!-- 登录模块的配置,该包继承与默认的包-->
    <package name="login" namespace="/login"
        extends="struts-default">
        <!-- 跳转到登录页Action -->
        <action name="toLogin">
            <result name="success">
                /WEB-INF/main/login.jsp
            </result>
        </action>
        <!-- 登录验证Action -->
        <action name="login"
            class="com.netctoss.action.login.LoginAction">
            <result name="success">
                /WEB-INF/main/index.jsp
            </result>
            <result name="fail">
                /WEB-INF/main/login.jsp
            </result>
            <result name="error">
                /WEB-INF/main/error.jsp
            </result>
        </action>
        <!-- 生成验证码Action -->
        <action name="createImage"
            class="com.netctoss.action.login.CreateImageAction">
            <result name="success" type="stream">
                <param name="inputName">
                    imageStream
                </param>
            </result>
        </action>
    </package>

</struts>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值