楼主是不是只允许在iframe内页访问,
如果是这样的话,可以在访问的页面用js简单处理一下。<script>
window.onload = function(){
    if(window.location == top.location){
alert('禁止访问');
window.self.close();
  }
}
</script>

解决方案 »

  1.   

    我是指这整个项目的所有action。在地址栏输入这个项目中任何action都不会被访问到
      

  2.   

    除非你禁止所有action的GET请求,只允许POST请求,否则不行。
      

  3.   

    如果楼主不想别人直接通过url访问,那么重写URL吧。
      

  4.   

    只能说 你写过滤器   把所有的 action 访问拦截下来。
      

  5.   

    可以自定义拦截器判断是GET 还是POST
      

  6.   

    我想到一个方法。你可以试下:
    在每个表单页面建个隐藏域,在隐藏域里赋值,再建一个filter,过滤所有action,在该filter内用request获取隐藏域的值,若该值为空,可自定义跳转页面。否则跳转到相应action
      

  7.   

    写个过滤器,截取url后缀,如果是.action,则forward其它页面。
      

  8.   

    public class FilterUrl  implements Filter{
    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest)arg0;
    HttpServletResponse response =(HttpServletResponse)arg1;
    String url = request.getRequestURI();
    if(url.endsWith(".action")){
    response.getWriter().print("<script>window.location.href="你的登录地址"</script>");
    }else{
    arg2.doFilter(arg0, arg1);
    }
    }}
      

  9.   

    这个还真没弄过,最好是通过post这样可以做些控制
      

  10.   

    写个过滤器不久可以了?
    *.action
      

  11.   

    不直接访问ACTION是指什么?
    ------------------------
    用户必须通过你的链接来访问?建议:链接地址加一个KEY
    还是你的ACTION还是屏蔽非登录用户?建议:这个不用说了吧,大家都懂!
      

  12.   

    只能用过滤器了,过滤掉所有的*.action
      

  13.   


    这样的话,我自己项目中所跳转的action也被拦截了。我只想拦截从地址栏输入的action
      

  14.   

    也可以用拦截器,过滤器看看http请求头里的referer.不过,楼主这个需求实在是不知道有什么用....
      

  15.   

    实话说既然你都项目能访问的action就不能阻止别人访问这个action任何手段都不能阻止,可以通过这种手段进行模拟你只能再这些需要屏蔽的action中认真的过滤权限
      

  16.   

    或者说是隐藏地址栏类似于  http://localhost:8080/ss/mainArticle/article!getCategory.action  这样的action。就是不让别人看到地址栏的action或者让用户从地址栏输入action进不去
      

  17.   

    那怎样去隐藏地址栏类似于
    http://localhost:8080/ss/Article/article!getCategory.action 这样的action
    就是让他不显示,用户看不到也就不会去直接输入action的名字了。求助~!
      

  18.   


    ++1浏览器地址栏输入url访问服务器资源都输入get提交,
    你在过滤器中这样写,就把所有get提交给禁止了:if ("GET".equalsIgnoreCase(request.getMethod())) {
    ....// 这里做跳转处理
    }
      

  19.   

    Struts2有个拦截器,所有对action的访问都会经过拦截器,在拦截器里面进行校验。
    <struts>
    <!-- 定义权限拦截器 -->
    <package name="author" extends="struts-default">
    <!-- 拦截器  -->
    <interceptors>
    <!-- 定义权限拦截器  -->
    <interceptor name="Authority"
    class="com.mas.web.interceptor.AuthorityInterceptor"></interceptor>
    <interceptor name="Permission"
    class="com.mas.web.interceptor.PermissionInterceptor"></interceptor>
    <!-- 定义拦截器栈  -->
    <interceptor-stack name="default">
    <!-- 引用默认拦截器  -->
    <interceptor-ref name="defaultStack"></interceptor-ref>
    <!-- 引用权限拦截器  -->
    <interceptor-ref name="Authority"></interceptor-ref>
    <interceptor-ref name="Permission"></interceptor-ref>
    <!--  -->
    </interceptor-stack>
    </interceptors>
    </package>
    </struts>其中com.mas.web.interceptor.AuthorityInterceptor是自定义拦截器,在里面进行校验就可以了。
      

  20.   


    可以使用url rewrite或者使用拦截器,拦截未登录的用户。我就是这两种方式来实现的。
      

  21.   

    struts2有拦截器,专管这种功能
      

  22.   


    我请教个问题,就是如何在action中判断请求是否直接来自浏览器地址栏。  就是那个action 是要通过iframe访问的。所以想屏蔽地址栏直接访问。