zoukankan      html  css  js  c++  java
  • 10、一个action中处理多个方法的调用第二种方法method的方式

    在实际的项目中,经常采用现在的第二种方式在struct.xml中采用清单文件的方式

    我们首先来看action

    package com.bjpowernode.struts2;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport {
    
        private String messsage;
    
        public String getMesssage() {
            return messsage;
        }
    
        public void setMesssage(String messsage) {
            this.messsage = messsage;
        }
        
        public String add() throws Exception {
            messsage = "添加用户";
            return SUCCESS;
        }
    
        public String del() throws Exception {
            messsage = "删除用户";
            return SUCCESS;
        }
    
        public String update() throws Exception {
            messsage = "修改用户";
            return SUCCESS;
        }
        
        public String list() throws Exception {
            messsage = "查询用户";
            return SUCCESS;
        }
        
    }

    接下面我们看看struct.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>
        <!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 -->
        <constant name="struts.configuration.xml.reload" value="true"/>
        <!-- 会提供更加友好的提示信息 -->
        <constant name="struts.devMode" value="true"/>
        
        <!-- 禁用动态调用 -->
        <!-- 
        <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
         -->
        <package name="user-package" extends="struts-default">
          <!-- name="addUser"用在jsp中调用的。名字可以随便起,但是method中的名字add必须和action中的函数名字一一对应 -->
            <action name="addUser" class="com.bjpowernode.struts2.UserAction" method="add">
                <result>/success.jsp</result>
            </action>
            <action name="delUser" class="com.bjpowernode.struts2.UserAction" method="del">
                <result>/success.jsp</result>
            </action>
            <action name="updateUser" class="com.bjpowernode.struts2.UserAction" method="update">
                <result>/success.jsp</result>
            </action>
            <action name="listUser" class="com.bjpowernode.struts2.UserAction" method="list">
                <result>/success.jsp</result>
            </action>
        </package>
    </struts>

    接下面我们来看看访问的jsp页面

    <%@ page language="java" contentType="text/html; charset=GB18030"
        pageEncoding="GB18030"%>
    <!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=GB18030">
    <title>Insert title here</title>
    </head>
    <body>
        <a href="addUser.action">添加用户</a><br>
        <a href="delUser.action">删除用户</a><br>
        <a href="updateUser.action">修改用户</a><br>
        <a href="listUser.action">查询用户</a><br>
        
    </body>
    </html>

    跳转成功之后的jsp sucess.jsp页面

    <%@ page language="java" contentType="text/html; charset=GB18030"
        pageEncoding="GB18030"%>
    <!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=GB18030">
    <title>Insert title here</title>
    </head>
    <body>
    ${messsage }
    </body>
    </html>

    上面就完成了配置,但是上面的配置存在一个很大的问题,就是在struct.xml文件中配置量较大,我们可以使用通配符的方式解决这个问题,其他的文件都不用修改,只需要修改struct.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>
        <!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 -->
        <constant name="struts.configuration.xml.reload" value="true"/>
        <!-- 会提供更加友好的提示信息 -->
        <constant name="struts.devMode" value="true"/>
        
        <!-- 禁用动态调用 -->
        <!-- 
        <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
         -->
        <package name="user-package" extends="struts-default">
          <!-- name="addUser"用在jsp中调用的。名字可以随便起,但是method中的名字add必须和action中的函数名字一一对应 -->
            <action name="*User" class="com.bjpowernode.struts2.UserAction" method="{1}">
                <result>/success.jsp</result>
            </action>
            
        </package>
    </struts>

    当在index.sjp点击添加用户的时候,访问的是addUser.jsp,那么在struct.xml进行匹配,得到的*代表的就是add,method中的{1},1表示的是得到第一个*的值,就是add,然后就访问action中对应的add函数,减少了代码的配置

    总结:

    Struts2的Action中包含多个方法如何调用(使用通配符)

    具体配置
    <action name="*User" class="com.bjpowernode.struts2.UserAction" method="{1}">
    <result>/{1}Success.jsp</result>
    </action>

    在Struts2的<action>标签class、name、method和result标签上都可以使用通配符
    通配符的作用就是为了减少配置量,通配符需要建立在约定的基础上

  • 相关阅读:
    JSP中的必用的HTML元素_表单
    JSP规范_Tag Files(标签文件)
    JSP规范_Tag Library标签库
    JSP规范_JavaBean
    mysql 视图_触发器_函数_存储过程_事务_动态防SQL注入
    mysql 命令总结(持续补全)
    file 操作以及函数各种操作
    字符编码理解
    字符串操作学习
    kd的程序小设计
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/8097543.html
Copyright © 2011-2022 走看看