0

我的应用程序完美地向服务器提交了一个表单,并显示了从服务器接收到的响应消息,例如“表单已提交”或“对不起,出了点问题!”

但是,我需要允许所有用户访问表单页面,但只有授权用户才能提交表单。所以我使用 Spring 安全性,它被配置为在用户尝试访问安全页面时将其重定向到索引页面。

到目前为止一切正常,但问题是,由于我使用 message.jsp 页面显示服务器返回的消息,一旦未经授权的用户尝试提交表单,索引页面将显示为消息正文。 jsp 页面,并且由于 message.jsp 页面用于显示消息,它将在我的 form.jsp 页面中显示 index.jsp 页面。

如何解决问题?或者如何在 form.jsp 页面上显示服务器消息以避免这个问题?

表单.jsp

  function Add(value){
        if(window.XMLHttpRequest)
        {
            xmlhttp = new XMLHttpRequest();
        }
        else
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {
                document.getElementById("msg").innerHTML = xmlhttp.responseText;
            } 
        }
        xmlhttp.open("get","add?myvalue="+value,false);
        xmlhttp.send();
    }
    .....

     form goes here

    <label id="msg"></label>

表单提交.java

private String ServerMessage;
  public String add(){
    ....
    if(result)
      this.ServerMessage = "form is submitted";
    else
      this.ServerMessage = "sorry, something went wrong!" 
    return "successful";   
}
....

struts.xml

<result name="successful">message.jsp</result>

消息.jsp

   required library goes here
   <s:property value="ServerMessage"/> 
4

1 回答 1

2

添加类似的内容:

<error-page> <error-code>403</error-code> <location>/403.jsp</location> </error-page>

到你的web.xml. 如果用户无权访问给定的 url,则会抛出 Http 错误 403,它将基于spring-security 中定义的user_role 。
例如

<intercept-url pattern="" access="" />

其中 pattern 表示您的 url 模式。access 包含可以访问模式的角色。模式可以像/index/**/index它本身。查看 spring security 的官方文档

(确保您在特定位置形成了正确的 jsp。在我的情况下,403.jsp位于WebContent目录下。)

于 2013-05-24T05:20:16.010 回答