文档章节

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

o
 osc_wws45aot
发布于 2019/08/20 09:45
字数 832
阅读 13
收藏 0

 

 

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文件,还可以直接网址访问,用于前端的页面跳转

 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Vue-插槽slot/具名插槽

插槽的基本使用: <div id="app"> <cpn> <span>我是替换slot的元素1</span> </cpn>------------------------------------- <cpn2> <span>......

心田已荒
19分钟前
12
0
标准Android按钮具有不同的颜色 - Standard Android Button with a different color

问题: I'd like to change the color of a standard Android button slightly in order to better match a client's branding. 我想稍微更改标准Android按钮的颜色,以便更好地匹配客户的品......

技术盛宴
37分钟前
24
0
如何在Ruby中生成随机字符串 - How to generate a random string in Ruby

问题: I'm currently generating an 8-character pseudo-random uppercase string for "A" .. "Z": 我目前正在为“ A” ..“ Z”生成一个8个字符的伪随机大写字符串: value = ""; 8.times{......

法国红酒甜
今天
20
0
原价500元的认证证书,限时免费考取!

本文作者:y****n 百度云智学院致力于为百度ABC战略(人工智能、大数据、云计算)提供人才生态体系建设,包括基于百度ABC、IoT的课程体系,整合百度优势技术能力的深度学习技术、Apollo无人车...

百度开发者中心
昨天
17
0
在virtualenv中使用Python 3 - Using Python 3 in virtualenv

问题: Using virtualenv , I run my projects with the default version of Python (2.7). 使用virtualenv ,我使用默认版本的Python(2.7)运行项目。 On one project, I need to use Pyth......

富含淀粉
今天
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部