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

 

 

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

 

 

转载于:https://www.cnblogs.com/c2g5201314/p/11381103.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值