我以前没有作过jsp所以问个简单的问题希望大家帮我解答。
http://xxx.xxx.xxx/web/contentAction.do?method=noticeDetail
这是我们网站的一个连接,其中contentAction.do是不是一个文件呢?为什么我找不到这个文件,只找到一些contentaction.class等等文件
我对这个连接的理解是这样了,这个页面的HTML代码应该是,contentAction.do来动态生成的,现在我希望这个页面只能被一些固定的IP地址访问,请问我应该怎么办呢

解决方案 »

  1.   

    这个需要用到过滤器
      通过 request里的方法来获取客户端的ip 然后再判断  是否等于你列举出来的那些ip 如果是就可以进行转发  如果不是就阻止
       至于contentAction.do 是一个文件,是一个可以执行的class文件    可以用反编译软件来反编译他  看到
      

  2.   

    这是个用struts框架开发的网站,.do指向一个action,在struts的配置文件里有具体的配置限定IP可以用过滤器
      

  3.   

    .do应该是用struts框架做的网站形式,你去你的应用服务器里的struts_config.xml文件中可以找到contentAction.do,这是一个类似于动态链接方法,该配置文件会告诉应用服务器该调用哪些文件,进行如何处理,它可以根据页面传入的参数调用不同的处理页面(函数).可以参照struts框架内容
      

  4.   

    .do是个请求,这个站点在web.xml配置文件中配置了.do的请求都转发给一个servlet来处理,不是个文件,系统遇到这个.do的请求后就会提交给某个servlet来处理,这个servlet会根据具体的配置转发给某个后台的程序进行数据处理,然后给数据传递到页面,最终给页面展现在用户面前,不一定是struts的,这个请求是可以自己随便配置的,你可以配置成.html,这样就是经常看到假静态
      

  5.   

    1.contentAction.do不是文件,相当于一个口令,服务器端根据前台传来的口令到相应的类或者方法中进行处理,然后输出形成所需页面。2.你可以用request.getRemoteAddr()来取得用户的ip,如果符合要求,就输出你的页面。
      

  6.   

    谢谢各位回答 我已经明白了contentAction.do现在我有一个新的问题
    我的jdk是1.3.1,string没有split这个方法,
    我本来是希望用split(".")来将ip存入数组中但是不行
    现在我使用indexOf来查找第一个.
    然后用substring(0,ip.indexOf("."))
    来获取ip的头,如果是10,192,168...即判断为内网,但是现在出了一个问题例如
    String ipHead = substring(0,ip.indexOf("."))if(ipHead == "10")
    {
      out.println("你是内网用户");
    }
    可是无论我的ipHead是否是10(我out.println ipHead明明是"10"的),该条件都无法成立,不知道是怎么回事?是因为jsp的条件语句有什么特殊吗?
    但是如果这样
    String ii= "1"
    if(ipHead == "1")
    {
       .....
    }
    这个条件语句就是成立的是应为String ipHead = substring(0,ip.indexOf("."))这里的赋值有问题吗?还是怎样
    谢谢大家解答
      

  7.   


    if(ipHead == "10") 

      out.println("你是内网用户"); 
    } 这个错误也太基础了,要用
    "10".equals(ipHead)
      

  8.   

       String ipHead= "1";
         if(ipHead == "1")
         {
            System.out.println("你将ipHead指向一个常量,是很特别的情况");
         } 
            String ipHead2 = new String("1");
              if( ipHead2 == "1"){
               System.out.println("这里不会执行");
              }
              else{
               System.out.println("这样就不行了吧");
              }
              String ipHead3 = new String("1");
              if( ipHead3.equals("1")){
               System.out.println("用equals才能满足你的要求");
              }
      

  9.   

    字符串匹配应用equals
    if(ipHead.equals("10")) 
         { 
            ...     }  
      

  10.   

    实际*.do是一个映射,一般出现在Struts做的web中(因为struts的原始定义就是*.do),web.xml中是这样定义的
    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config/struts-config.xml</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>3</param-value>
    </init-param>
    <init-param>
    <param-name>detail</param-name>
    <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
    </servlet>
             <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
            </servlet-mapping>
    例如:contentAction.do是映射到一个contentAction的action上
    这个action的定义在struts-config.xml文件中给予定义,你可以在里面定义action,以及MVC结构,
    部署启动工程后,载入web.xml文件时候载入了软件的配置结构。
      

  11.   

    .do
    可以指向另一个页面
    或者另一个action
      

  12.   

    pts/csdn/Plugin/001/face/39.gif][/img]