日期:2014-05-20  浏览次数:20750 次

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

------解决方案--------------------
这个需要用到过滤器
通过 request里的方法来获取客户端的ip 然后再判断 是否等于你列举出来的那些ip 如果是就可以进行转发 如果不是就阻止
至于contentAction.do 是一个文件,是一个可以执行的class文件 可以用反编译软件来反编译他 看到
------解决方案--------------------
这是个用struts框架开发的网站,.do指向一个action,在struts的配置文件里有具体的配置

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

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

2.你可以用request.getRemoteAddr()来取得用户的ip,如果符合要求,就输出你的页面。
------解决方案--------------------
Java code

if(ipHead == "10") 
{ 
  out.println("你是内网用户"); 
}

------解决方案--------------------
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才能满足你的要求");
}
------解决方案--------------------
字符串匹配应用equals
if(ipHead.equals("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文件时候载入了软件的配置结构。