关于Struts2的动态URL和动态参数

Posted HelloWorld1815

tags:

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

两种方式的DynaAction都一样,如下:

 1 package com.xsl.action;
 2 
 3 import java.util.Random;
 4 
 5 import com.opensymphony.xwork2.ActionSupport;
 6 
 7 public class DynaAction extends ActionSupport {
 8     private String url;
 9     private String name;
10     private int age;
11     public String test1(){
12         Random random = new Random();
13         int num = random.nextInt(2);
14         age = 22;
15         if(num == 0){
16             url = "r1.jsp";
17         }else{
18             url = "r2.jsp";
19         }
20         return SUCCESS;
21     }
22     public String getUrl() {
23         return url;
24     }
25     public void setUrl(String url) {
26         this.url = url;
27     }
28     public String getName() {
29         return name;
30     }
31     public void setName(String name) {
32         this.name = name;
33     }
34     public int getAge() {
35         return age;
36     }
37     public void setAge(int age) {
38         this.age = age;
39     }
40     
41 }

r1.jsp里:${param.name}---${param.age}--->r1.jsp

r2.jsp里:${param.name}---${param.age}--->r2.jsp

 

第一种方式(推荐):

index.jsp里:<a href="dynaAction!test1?name=happy&age=21">测试动态URL和动态参数</a><br>

      或者:<a href="dynaAction!test1?name=happy">测试动态URL和动态参数</a><br>

struts.xml里:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
 3 <struts>
 4     <package name="xsl" namespace="/" extends="struts-default">
 5         <action name="dynaAction" class="com.xsl.action.DynaAction">
 6             <!-- &amp;是一个转义字符,相当于& -->
 7             <result>${url}?name=${name}&amp;age=${age}</result>
 8         </action>
 9     </package>
10 </struts>    

 最后跳转的页面的url为:http://localhost:8080/struts2action/dynaAction!test1?name=happy&age=21

            或者:http://localhost:8080/struts2action/dynaAction!test1?name=happy

最终跳转的页面显示:happy---22--->r1.jsp 或者happy---22--->r2.jsp    (因为在DynaAction中改变了age的值,所以最终显示age为22,但是url上的值还是不变)

 

第二种方式:

index.jsp里只能写:<a href="dynaAction!test1?name=happy&age=21">测试动态URL和动态参数</a><br>

      不能写成这样,不然age显示不出来:<a href="dynaAction!test1?name=happy">测试动态URL和动态参数</a><br>

struts.xml里:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
 3 <struts>
 4     <package name="xsl" namespace="/" extends="struts-default">
 5         <action name="dynaAction" class="com.xsl.action.DynaAction">
 6             <result>
 7                 <param name="location">${url}</param>
 8                 <param name="name">${name}</param>
 9                 <param name="age">${age}</param>
10             </result>
11         </action>
12     </package>
13 </struts>    

最终跳转的页面显示:happy---21--->r1.jsp 或者happy---21--->r2.jsp     (即使在DynaAction中改变了age的值,但最终显示的age值还是和url上的值一样为21,不能实现动态改变的效果)

以上是关于关于Struts2的动态URL和动态参数的主要内容,如果未能解决你的问题,请参考以下文章

关于Struts2中DMI(动态调用)错误问题

使用 Struts2 在创建博客条目时生成动态 URL

全局结果集,带参数的结果集和动态结果集(struts2)

使用 url 参数的动态主题

04_Struts2标签

墨者靶场 Apache Struts2远程代码执行漏洞(S2-013)复现