您的位置:程序门 -> java -> j2se / 基础类



一个关于.jsp和.do文件的简单问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


一个关于.jsp和.do文件的简单问题[已结贴,结贴人:roki_chen]
发表于:2007-10-09 11:17:30 楼主
我以前没有作过jsp所以问个简单的问题希望大家帮我解答。
http://xxx.xxx.xxx/web/contentaction.do?method=noticedetail
这是我们网站的一个连接,其中contentaction.do是不是一个文件呢?为什么我找不到这个文件,只找到一些contentaction.class等等文件
我对这个连接的理解是这样了,这个页面的html代码应该是,contentaction.do来动态生成的,现在我希望这个页面只能被一些固定的ip地址访问,请问我应该怎么办呢
发表于:2007-10-09 12:20:471楼 得分:2
这个需要用到过滤器
    通过   request里的方法来获取客户端的ip   然后再判断     是否等于你列举出来的那些ip   如果是就可以进行转发     如果不是就阻止
      至于contentaction.do   是一个文件,是一个可以执行的class文件         可以用反编译软件来反编译他     看到
发表于:2007-10-09 12:23:142楼 得分:2
这是个用struts框架开发的网站,.do指向一个action,在struts的配置文件里有具体的配置

限定ip可以用过滤器
发表于:2007-10-09 12:26:403楼 得分:2
.do应该是用struts框架做的网站形式,你去你的应用服务器里的struts_config.xml文件中可以找到contentaction.do,这是一个类似于动态链接方法,该配置文件会告诉应用服务器该调用哪些文件,进行如何处理,它可以根据页面传入的参数调用不同的处理页面(函数).

可以参照struts框架内容
发表于:2007-10-09 12:31:434楼 得分:2
.do是个请求,这个站点在web.xml配置文件中配置了.do的请求都转发给一个servlet来处理,不是个文件,系统遇到这个.do的请求后就会提交给某个servlet来处理,这个servlet会根据具体的配置转发给某个后台的程序进行数据处理,然后给数据传递到页面,最终给页面展现在用户面前,不一定是struts的,这个请求是可以自己随便配置的,你可以配置成.html,这样就是经常看到假静态
发表于:2007-10-09 12:42:085楼 得分:5
1.contentaction.do不是文件,相当于一个口令,服务器端根据前台传来的口令到相应的类或者方法中进行处理,然后输出形成所需页面。

2.你可以用request.getremoteaddr()来取得用户的ip,如果符合要求,就输出你的页面。
发表于:2007-10-09 16:28:576楼 得分:0
谢谢各位回答   我已经明白了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("."))这里的赋值有问题吗?还是怎样
谢谢大家解答
发表于:2007-10-10 08:42:337楼 得分:0
和url   重写差不多
发表于:2007-10-10 09:11:038楼 得分:2
java code
if(iphead == "10") { out.println("你是内网用户"); }


这个错误也太基础了,要用
"10".equals(iphead)
发表于:2007-10-10 09:18:379楼 得分:2
    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才能满足你的要求");
                    }
发表于:2007-10-10 11:07:1810楼 得分:1
字符串匹配应用equals
if(iphead.equals("10"))  
          {  
                ...           }    
发表于:2007-10-10 11:08:4211楼 得分:2
实际*.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文件时候载入了软件的配置结构。
发表于:2007-10-10 11:48:1812楼 得分:0
.do
可以指向另一个页面
或者另一个action


快速检索

最新资讯
热门点击