zoukankan      html  css  js  c++  java
  • struts2中运用通配符(边学边记)

    struts2中通配符的使用,是在配置<ation.../>元素时,需要制定name、class和method属性,其中name属性可支持通配符,然后可以在class,method属性中使用表达式。这种使用通配符的方式形式上是一种动态方法调用。在配置Action时,可在action元素的name属性中使用星号(*)来匹配任意的字符串,表示0或多个字符串;同时method属性使用表达式{1}来一一对应。

    下面是在实现用户登录和注册时的简要代码:

    package com.jbit.action;

    import com.opensymphony.xwork2.ActionSupport;

    public class UserAction extends ActionSupport{

    private static final long serialVersionUID = 1L;

    private String uname;
    private String rname;
    public String getRname() {
    return rname;
    }
    public void setRname(String rname) {
    this.rname = rname;
    }
    public String getUname() {
    return uname;
    }
    public void setUname(String uname) {
    this.uname = uname;
    }
    //用户登录
    @SuppressWarnings("unused")
    public String login(){
    System.out.println("进入登录method");
    System.out.println(this.uname+"登录名");
    if(!uname.equals("")){
    return SUCCESS;
    }else if(uname.equals("")){
    return INPUT;
    }else{
    return ERROR;
    }


    }

    //用户注册
    @SuppressWarnings("unused")
    public String register(){
    if(!rname.equals("")){
    return SUCCESS;
    }else if(rname.equals("")){
    return INPUT;
    }else{
    return ERROR;
    }


    }

    }

    其中struts.xml中的配置如下:

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

    <struts>

    <constant name="struts.devMode" value="true" />

    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="default" namespace="/" extends="struts-default">

    <action name="*User" class="com.jbit.action.UserAction" method="{1}">

       <result name="success">/page/{1}_success.jsp</result>
       <result name="input">/page/{1}User.jsp</result>
       <result name="error">/page/error.jsp</result>
    </action>
    </package>

    </struts>

    在Action中如果不慎把方法定义为private ,外部也是无法调用的。同时多个不同action和不同方法如下面列子:

    当然,这里只有一个"*".你可以有两个,甚至三个四个..比如这样写 *_* 这样就是两个"*" .那么我们也可以用{1},{2}来分别的表示他们.

    (2) 对应的action 内容

    package com.test.action;

    import com.opensymphony.xwork2.ActionSupport;

    @SuppressWarnings("serial")
    public class UserAction extends ActionSupport
    {
    public String add()
    {
    return SUCCESS;
    }
    public String delete()
    {
    return SUCCESS;
    }
    public String update()
    {
    return SUCCESS;
    }
    public String select()
    {
    return SUCCESS;
    }
    }

    如struts中配有如下几个action,ManagerUserAction中有与之对应的方法
    <actionname="addUser"class="com.netshuai.action.ManagerUserAction"method="add">
    <resultname="success">/addUser.jsp</result>
    </action>
    <actionname="delUser"class="com.netshuai.action.ManagerUserAction"method="del">
    <resultname="success">/delUser.jsp</result>
    </action>
    <actionname="updateUser"class="com.netshuai.action.ManagerUserAction"method="update">
    <resultname="success">/updateUser.jsp</result>
    </action>

    如果使用通配符,可以省略写成一个action

    <actionname="*User"class="com.netshuai.action.ManagerUserAction"method="{1}">
    <resultname="success">/{1}User.jsp</result>
    </action>

    其中,*为通配符,{1}为*所替换的内容,如用户访问的是addUser.action,则*就被自动替换为add,{1}处也自动使用add替换。 若开发时使用统一的命名规范,则所有action可使用类似如下的一条替换即可

    <actionname="*_*"class="com.netshuai.action.{1}Action"method="{2}">
    <resultname="success">/{2}_{1}Success.jsp</result>
    </action>

    如上所示,所有文件都采用统一的命名规范,第一个*为分类名称,第二个*为操作名,{1}和{2}分别代表第一个和第二个*的替换值,所有action实现类都命名为分类名称+Action。
    如分类名称为User,操作名为add,则访问的action名为User_add.action,action实现类名为UserAction,返回页面的名为add_UserSuccess.jsp
    另:{0}代表显示所有通配符内容,如<resultname="success">/{2}_{1}Success.jsp</result>改为<resultname="success">/{0}Success.jsp</result>,则返回的名为User_addSuccess.jsp

  • 相关阅读:
    Entity SQL 初入
    ObjectQuery查询及方法
    Entity Framework 的事务 DbTransaction
    Construct Binary Tree from Preorder and Inorder Traversal
    Reverse Linked List
    Best Time to Buy and Sell Stock
    Remove Duplicates from Sorted Array II
    Reverse Integer
    Implement Stack using Queues
    C++中const限定符的应用
  • 原文地址:https://www.cnblogs.com/cmdl/p/2947897.html
Copyright © 2011-2022 走看看