Struts2的Action访问

Posted qc-wh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2的Action访问相关的知识,希望对你有一定的参考价值。

● 示例项目结构

技术图片

 

 

 ●  demo1.jsp

技术图片
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
  <h1>Action的访问</h1>
  <h3>通过method方法</h3>
  <a href="$pageContext.request.contextPath/userFind.action">查询用户</a>
  <a href="$pageContext.request.contextPath/userUpdate.action">修改用户</a>
  <a href="$pageContext.request.contextPath/userDelete.action">删除用户</a>
  <a href="$pageContext.request.contextPath/userSave.action">保存用户</a><br/>
  
  <h3>通过通配符的方法</h3>
  <a href="$pageContext.request.contextPath/product_find.action">查询商品</a>
  <a href="$pageContext.request.contextPath/product_update.action">修改商品</a>
  <a href="$pageContext.request.contextPath/product_delete.action">删除商品</a>
  <a href="$pageContext.request.contextPath/product_sava.action">保存商品</a><br/>
  
  <h3>通过动态方法访问</h3>
  <a href="$pageContext.request.contextPath/customer!find.action">查询客户</a>
  <a href="$pageContext.request.contextPath/customer!update.action">修改客户</a>
  <a href="$pageContext.request.contextPath/customer!delete.action">删除客户</a>
  <a href="$pageContext.request.contextPath/customer!sava.action">保存客户</a><br/>
  </body>
</html>
dmeo1.jsp

● struts2.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>
    <include file="com/sve/Struts2/demo2/struts_demo2.xml"/>
</struts>
struts2.xml

●  web.xml

技术图片
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">
    <display-name>Struts2</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.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>
web.xml

●  struts2_demo2.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.enable.DynamicMethodInvocation" value="true" />
    
    <package name="default" namespace="/" extends="struts-default">
        <!-- 通过method方法 -->
        <action name="userFind" class="com.sve.Struts2.demo2.UserAction" method="find"></action>
        <action name="userUpdate" class="com.sve.Struts2.demo2.UserAction" method="update"></action>
        <action name="userDelete" class="com.sve.Struts2.demo2.UserAction" method="delete"></action>
        <action name="userSave" class="com.sve.Struts2.demo2.UserAction" method="save"></action>
        
        <!-- 通配符的方法 -->
        <action name="*_*" class="com.sve.Struts2.demo2.ProductAction" method="2"></action>
        
        <!-- 动态方法访问 -->
        <action name="customer" class="com.sve.Struts2.demo2.CustomerAction"></action>
    </package>
</struts>
struts2_demo2.xml

●  UserAction.java

技术图片
package com.sve.Struts2.demo2;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport
    public String find() 
        System.out.println("查询用户。。。");
        return NONE;
    
    
    public String update() 
        System.out.println("修改用户。。。");
        return NONE;
    
    
    public String delete() 
        System.out.println("删除用户。。。");
        return NONE;
    
    
    public String save() 
        System.out.println("保存用户。。。");
        return NONE;
    
UserAction.java

● CustomerAction.java

技术图片
package com.sve.Struts2.demo2;

import com.opensymphony.xwork2.ActionSupport;

public class CustomerAction extends ActionSupport 
    public String find() 
        System.out.println("查询客户。。。");
        return NONE;
    
    
    public String update() 
        System.out.println("修改客户。。。");
        return NONE;
    
    
    public String delete() 
        System.out.println("删除客户。。。");
        return NONE;
    
    
    public String sava() 
        System.out.println("保存客户。。。");
        return NONE;
    
CUstomerAction.java

● ProductAction.java

技术图片
package com.sve.Struts2.demo2;

import com.opensymphony.xwork2.ActionSupport;

public class ProductAction extends ActionSupport 
    public String find() 
        System.out.println("查询商品。。。");
        return NONE;
    
    
    public String update() 
        System.out.println("修改商品。。。");
        return NONE;
    
    
    public String delete() 
        System.out.println("删除商品。。。");
        return NONE;
    
    
    public String sava() 
        System.out.println("保存商品。。。");
        return NONE;
    
ProductAction.java

1.method方法

<action name="userFind" class="com.sve.Struts2.demo2.UserAction" method="find"></action>

在struts2_demo2.xml中,通过设置action中的method的值,值为class对应的方法名

2.通配符的方法(常用的)

<action name="*_*" class="com.sve.Struts2.demo2.ProductAction" method="2"></action>

与method方法略微不同,method的值设置为name值对应星编号,以上也可设置为

<action name="product_*" class="com.sve.Struts2.demo2.ProductAction" method="1"></action>

3.动态方法

使用动态方法前必须先设置constant,允许动态方法的使用

<constant name="struts.enable.DynamicMethodInvocation" value="true" />

无须设置method,动态方法是修改访问链接,如示例中的

<action name="customer" class="com.sve.Struts2.demo2.CustomerAction"></action>
<a href="$pageContext.request.contextPath/customer!find.action">查询客户</a>

customer为action中设置的name值,然后加入“!”,后加上想使用的方法名

以上是关于Struts2的Action访问的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 第四讲 -- Struts2的基本配置

struts2学习笔记之六:struts2的Action访问ServletAPI的几种方式

Struts2的常见配置&Action的访问

struts2中如何根据请求路径定位到详细的访问action

4.Struts2中Action的三种访问方式

Struts2笔记--Action访问Servlet API