0
点赞
收藏
分享

微信扫一扫

do文件说明,用途及与jsp关系

星河出山 2022-04-29 阅读 14
后端前端

.do的文件

  1. 以do为扩展名的网页文件是java语言写的,以Struts为框架的;它的运行环境是tomcat,weblogic等;通常用的数据库有oracle,mysql,mssql,access等。网页后台程序是*.jsp 或者 struts的组件文件*.do;
  2. .do一般是servlet的映射。j2ee平台,基于struts框架开发的东东,在web.xml都有;
    action
    *.do
    意思是,.do的请求都交给叫action的servlet处理。action根据.do前面东西的不同,在转交给相应的Action类,…….do格式!
  3. .do是你在配置文件中配置的一种url模式
    *.do 是action的映射.当你提交的url地址以.do结尾的话就把它提交到你在配置文件中配置的action中处理!所以你可以在配置文件中任意的配置,你可以.a什么的,这都不重要,do只是随意命名的一种!
    重要的是你配置的url模式必须与你提交的url模式一样!这样才能把数据提交的相应的action中处理;
  4. do文件是一个网页后台程序,.jsp或者struts的组件文件.do ,它不是一个文件,并没有一个真正的.do文件存在。它不能直接打开,struts使用一个特殊的servlet作为“交换机”,将来自web浏览器的请求转到相应的serverpage。
  5. 在开发web应用时有一个必须要写的部署描述文件(web-inf/web.xml)。
    这个文件描述了你的web应用的配置,包括欢迎页面(welcome pages)(当请求没有指定时,出现在目录下的文件)、servlet(路径或者扩展名)和那些servlets的参数的映射。在这个文件中,你配置struts actionservlet作为一个操控所有指定映射(通常以.do为扩展名)请求的servlet——这就是“交换机”。

在MVC的项目中一般不会直接去访问JSP,都是通过.do来转发。
这样做的好处是:
1 所有请求全部通过action来转发,这样便于整体框架的处理。比如,可以加入登陆到某个页面的权限控制,只需要在配置文件中配置,而不用再每个JSP文件中加入相关的逻辑。
2 与数据库,文件等底层存储层连接,读取数据的代码可以在类(action)中执行。这样做,一方面可以将很多方法复用,另一方面使JSP页面的代码变得简单而容易维护。
3 其实.do也就是MVC当中的C,是控制器。在整个系统中起到中央枢纽的作用。先通过它的话就可以把逻辑代码隐藏在后台,使JSP文件作为单纯的VIEW分离出来,降低了系统的耦合性。

问题

  1. “比如说regist.do对应的就是regist.jsp这个页面,通过网页可能所有的跳转都是跳到regist.do去注册,但实际上直接输入regist.jsp应该也是可以打开一样的页面去注册”?
    回答:没错,的确是可以的。不过这样做的话扩展性就没有先经过.do那样好。比如以后系统里加入了新的要求,只有权限大于5的人才能进入这个页面。直接访问.jsp的方法的话,要在jsp里加入判断的代码,如果权限小于5的话跳转到其他画面;不过如果只是这一张页面还好,但是如果系统有200张jsp,而且每张jsp要求的权限都不一样的话,这样修改起来就很困难了。用.do转发的方法的话,可以在配置文件中配置访问每个action所需要的权限,然后在系统的中央处理器(servlet)里面加入一个判断,去校验每个用户的session,从里面取得当前用户的权限并且与action的需要权限相对比,如果不匹配就直接跳到其他页面。这样不管整个系统有多少张页面,只要有这个配置,当用户需求发生变化时只要改改配置文件就可以完成任务了。
  2. “什么时候该用.do什么时候用.jsp呢?还是,一般只有首页,比如登陆就用.jsp,而除了这张页面以外,其他的业务处理都最好用.do来实现???”
    回答:原则上说是所有的页面都要有.do,即使这张页面很简单,没有后台处理得也需要。因为如果以后用户的需求一旦变更就可以容易得来对应。对于登陆页面来说也是这样,不过要多做一步处理。比如,真正的登陆页面是login.jsp,那么做法是这样:给用户的地址其实是另一张页面index.jsp,然后在index.jsp里面通过脚本来控制页面自动跳转到其他的url,这个url就是.do,例如login.do,然后在login.do里面返回login.jsp地地址,这样登陆页面也在这个框架的控制以内了。
  3. 使用jsp实现跳转时要考虑路径问题?
    而使用.do来实现跳转时,例如tologin.do,它实际访问的是jsp/login.jsp,但是当我们键入路径localhost:8080/agcloud/tologin.do时,它并不会经过跳转将路径转为localhost:8080/agcloud/jsp/login.jsp,它所在的路径仍然是上一个localhost:8080/agcloud/tologin.do路径,所以这里如果再要跳转到login.do,也要考虑路径问题。
    例如:jsp/login.jsp跳转时,要将提交路径写为
    这种方式在浏览器的路径为①localhost:8080/agcloud/jsp/login.jsp②localhost:8080/agcloud/login.do
    而如果是通过tologin.do—>jsp/login.jsp–>login.do这种方式来跳转,则要写成
    这种方式在浏览器的路径为①localhost:8080/agcloud/tologin.do②localhost:8080/agcloud/login.do

————————————————
参考连接:
https://blog.csdn.net/limuzi13/article/details/44968311;
https://blog.csdn.net/weixin_39937524/article/details/119639772;
https://blog.csdn.net/qq_39924152/article/details/81604972

举报

相关推荐

0 条评论