Struts2-015-通配符映射

微信公众号:JavaWeb架构师

概述

  • 一个 Web 应用可能有成百上千个 action 声明. 可以利用 struts 提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系
  • 通配符映射规则
    • 若找到多个匹配, 没有通配符的那个将胜出
    • 若指定的动作不存在, Struts 将会尝试把这个 URI 与任何一个包含着通配符 * 的动作名及进行匹配
    • 被通配符匹配到的 URI 字符串的子串可以用 {1}, {2} 来引用. {1} 匹配第一个子串, {2} 匹配第二个子串…
    • {0} 匹配整个 URI
    • 若 Struts 找到的带有通配符的匹配不止一个, 则按先后顺序进行匹配
    • 可以匹配零个或多个字符, 但不包括 / 字符. 如果想把 / 字符包括在内, 需要使用 **. 如果需要对某个字符进行转义, 需要使用 .

测试代码

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
    "http://struts.apache.org/dtds/struts-2.3.dtd">  
<struts>  
    <!-- 配置请求后缀名 -->
    <constant name="struts.action.extension" value="do,,action"/>  

    <!-- 配置包信息 -->
    <package name="default" extends="struts-default">
        <!-- 4.通配符下存在多个匹配,按顺序匹配 -->
        <action name="UserAction-up*" class="top.itcourse.wildcard.UserAction" method="test">
            <result name="test-success">test.jsp</result>
        </action>

        <!--  
        说明:
            1.在action的统配部分使用*
            2.在后面需要使用统配的实际值的时候,使用{x} (x表示第几个*,{0}表示整个uri)
            3.若被多个匹配,没有通配符的比用通配符的优先
            4.通配符下存在多个匹配,按顺序匹配
            5.想把 / 字符包括在内, 需要使用 **. 如果需要对某个字符进行转义, 需要使用 \.

        -->
        <!-- 1.在action的统配部分使用* -->
        <action name="UserAction-*" class="top.itcourse.wildcard.UserAction" method="{1}">
            <!-- 2.在后面需要使用统配的实际值的时候,使用{1} -->
            <result name="{1}-success">success.jsp</result>
        </action>

        <!-- 3.若被多个匹配,没有通配符的比用通配符的优先 -->
        <action name="UserAction-save" class="top.itcourse.wildcard.UserAction" method="test">
            <result name="test-success">test.jsp</result>
        </action>

    </package>
</struts>  

UserAction.java

package top.itcourse.wildcard;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

public class UserAction implements ServletRequestAware {

    private HttpServletRequest request;


    public String test() {
        System.out.println("测试一下");
        return "test-success";
    }

    public String save() {
        System.out.println("保存~~~");
        request.setAttribute("result", "save");
        return "save-success";
    }

    public String update() {
        System.out.println("修改~~~");
        request.setAttribute("result", "update");
        return "update-success";
    }

    public String delete() {
        System.out.println("删除~~~");
        request.setAttribute("result", "delete");
        return "delete-success";
    }

    public String query() {
        System.out.println("查询~~~");
        request.setAttribute("result", "query");
        return "query-success";
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>2017</title>

        <!-- 导入jQuery文件 -->
        <script src="js/jquery-1.10.1.js" type="text/javascript" charset="utf-8"></script>

        <!-- script书写位置 -->     
        <script type="text/javascript">

        </script>
    </head>

    <body>
        <a href="UserAction-save">保存</a>
        <br />
        <a href="UserAction-delete">删除</a>
        <br />
        <a href="UserAction-query">查询</a>
        <br />
        <a href="UserAction-update">修改</a>
    </body>
</html>

效果

微信公众号:JavaWeb架构师


其它



- 源码下载

关注下方公众号,回复:struts2_course.code

完整教程PDF版本下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值