zoukankan      html  css  js  c++  java
  • 实现网址域名路径不变化的同时可跳转到不同的位置,可实现隐藏项目文件名称与结构,只需改变参数即可

    Java web写多了,会发现每次跳转页面或者网页向servlet发出请求,

    网址栏会显示要访问的文件的具体位置 ,

    即便是异步请求,也需要在js脚本显示要访问的文件的具体位置。

    我不希望如此!

    我希望能够将要访问的具体文件位置隐藏起来,用户难以从前端查看到!

    事实上,很多对安全要求比较高的网站都有这样的功能需求,比如政府骨干网络,不论怎么进行页面的跳转或请求,都不会显示文件名称与位置

    话不多说,贴代码

     /** * 下面这个方式进行跳转页面可以掩盖具体文件的名称以及所在位置,

     * 经过这个方法跳转,网址显示一直都是http://localhost:8080/cctv/gg/hh.form?num=参数
    * 由参数进行判断跳到哪个网页
    */

    @Controller
    @RequestMapping("/gg")
    public class GG {
    @RequestMapping("/hh.form")
    public String hh(String num, HttpServletRequest request, HttpServletResponse response) {
    if (num.equals("1")) {
    /**
    * 跳到go.jsp
    */
    System.out.println("异常检测1");
    return "go";
    } else if (num.equals("2")) {
    /**
    * 跳到love.jsp
    */
    System.out.println("异常检测2");
    return "love";
    } else if (num.equals("3")) {

    /**
    * 跳到另一个名为kk的servlet
    */
    System.out.println("异常检测3");
    try {
    request.getRequestDispatcher("/gg/kk").forward(request, response);
    } catch (ServletException | IOException e) {
    e.printStackTrace();
    }

    /**
    * 请求转发后,这个return是没有用的,在这里是用来对应Java语法的,缺少了会报错,写空即可
    */
    return "";
    } else {
    System.out.println("异常检测4");
    return "go";
    }

    }


    @RequestMapping("/kk")
    public String kk(String num) {
    System.out.println("kkkkkkkkkkkkkkkkkkkk");
    return "go";

    }

    }

    =======================================================================================================================================

    根据上面代码,
    浏览器输入网址http://localhost:8080/cctv/gg/hh.form?num=1
    浏览器显示如下页面

     

     后台打印显示的结果:

    
    

     

     -------------------------------------------------------------------------------------------------------

    接着上面,然后在

    浏览器输入网址http://localhost:8080/cctv/gg/hh.form?num=2
    浏览器显示如下页面

    后台打印显示的结果:

     ------------------------------------------------------------------------------------------

    接着上面,然后在

    浏览器输入网址http://localhost:8080/cctv/gg/hh.form?num=3
    浏览器显示如下页面

     

     后台打印显示的结果:

    -------------------------------------------

    观察上面3种情况,不论以何种方式访问哪一个页面,http的路径都没有变,变的仅仅是参数num,以此来实现了隐藏要访问文件的具体位置

    特别是第三种情况,是实现前端访问servlet时,隐藏了servlet的名字与位置。

     ======================================================================================================================================

    最后,巩固一下以前的知识,得注意一下

    如下图,当jsp文件在WEB-INF文件夹里面时,不能通过网址直接访问里面的jsp文件,

    如http://localhost:8080/cctv/WEB-INF\statics\jsp\go.jsp,会显示404错误,

    目前我知道的访问方法:通过servlet返回的路径进行访问该go.jsp文件

    虽然上图有利于文件的保护,但是,保护措施并不局限于这样一种,个人感觉好鸡肋

    解决办法是将jsp文件放于WEB-INF外面,如下图,虽然没有了WEB-INF的保护,但是访问方便很多

     

     

    可以直接网址访问,http://localhost:8080/cctv/jsp/go.jsp,如下图,

    这样的不仅可以通过servlet返回的路径进行访问该go.jsp文件,还可以直接网址访问,用于前端的页面跳转

  • 相关阅读:
    java中finally的使用
    String基本方法
    java文件读写常用方法
    java笔试面试(转载)
    单链表的反转
    单链表的冒泡排序
    Java快速教程
    Java快速教程
    后海日记(4)
    后海日记(3)
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/11381103.html
Copyright © 2011-2022 走看看