0

我想隐藏 strut2 url....我正在访问 ip:port/contextRoot/HideUrl.jsp。在这个 Jsp 中有一个按钮,点击这个 step1 动作类的功能正在调用,并且 url 更改为 ip:port/contextRoot/step1Struts2 ....我可以保留原始 url ip:port/contextRoot/HideUrl.jsp。 .....我不想在 url 中显示 'step1Struts2' ......我能做到这一点吗?如何实现?

隐藏网址.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
    <script type="text/javascript">
       function callStep1()
       {
           document.struts2Form.action="step1Struts2";
           document.struts2Form.submit();
       }



    </script>
</head>
<body>
      <s:form name="struts2Form">
        <input type="button" value="CallStep1" onclick="callStep1()"></input>

    </s:form>

</body>
</html>

struts.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>

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

<package name="struts2" extends="struts-default" namespace="/">
    <action name="*Struts2" class="example.HideUrl" method="{1}">
        <result name="input">HideUrl.jsp</result>
    </action>

</package>


<constant name="struts.action.excludePattern" value="/*.servlet"/>

   </struts>

HideUrl.java

package example;

import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionSupport;
 import java.util.Map;


 public class HideUrl extends ActionSupport {

 public String step1() throws Exception
{
    Map session = (Map)ActionContext.getContext().getSession();
    System.out.print("[HideUrl] step1 ");
    session.put("step1", "step1");
    return "input";
}


}
4

2 回答 2

1

您可以使用 Ajax 请求并使用呈现的操作结果更新 DOM。

不过,通常您不想直接在 MVC 应用程序中访问 JSP 页面。

另一种选择是向一个简单地转发到“真实”动作的动作发出请求,本质上是在 MVC 系统中创建一个 MVC 系统。

我不明白你为什么要隐藏 URL。

于 2012-07-27T14:08:42.397 回答
0

在我看来,您要求重写 URL 以隐藏丑陋的 URL。

这可以通过多种方式完成

  1. 通过 Apache configs 为初学者重写 URL

  2. Tomcat URL 重写,虽然我没怎么尝试过这个 UrlRewriteFilter

或者通过一个 rest 类型的 URL 配置:

  1. 通过STRUTS2 Rest Support(不是真正重写) REST Plugin

我一般使用 REST 插件,您只需要了解您使用的操作方法名称即可。如果您不希望它成为 step1Struts2,请不要将方法命名为 step1Struts2,将其命名为 process() 或其他不那么...丑陋的东西。

于 2012-07-27T20:49:19.600 回答